5555key_states = [False , False , False , False ]
5656
5757# STEMMA QT Rotary encoder setup
58- rotary_seesaw = seesaw .Seesaw (i2c , addr = 0x37 ) # default address is 0x36
58+ rotary_seesaw = seesaw .Seesaw (i2c , addr = 0x36 ) # default address is 0x36
5959encoder = rotaryio .IncrementalEncoder (rotary_seesaw )
6060last_encoder_pos = 0
6161
7777
7878def tracktext (full_path_name , position ):
7979 return full_path_name .split ('_' )[position ].split ('.' )[0 ]
80-
81- audio = audiobusio .I2SOut (bit_clock = board .D1 , word_select = board .D10 , data = board .D11 )
80+ # LRC is word_select, BCLK is bit_clock, DIN is data_pin.
81+ # Feather RP2040
82+ audio = audiobusio .I2SOut (bit_clock = board .D24 , word_select = board .D25 , data = board .A3 )
83+ # Feather M4
84+ # audio = audiobusio.I2SOut(bit_clock=board.D1, word_select=board.D10, data=board.D11)
8285mixer = audiomixer .Mixer (voice_count = 1 , sample_rate = 22050 , channel_count = 1 ,
8386 bits_per_sample = 16 , samples_signed = True )
8487mixer .voice [0 ].level = 0.15
85- audio .play (mixer )
8688
8789# Colors
8890blue_bright = 0x17afcf
@@ -147,16 +149,14 @@ def change_track(tracknum):
147149 mp3_file_fc = open (mp3_filename , "rb" )
148150 mp3stream_fc = audiomp3 .MP3Decoder (mp3_file_fc )
149151 mp3_bytes_fc = os .stat (mp3_filename )[6 ] # size in bytes is position 6
150- # print(mp3_bytes)
151- # print("Now playing: '{}'".format(mp3_filename))
152152 return (mp3_file_fc , mp3stream_fc , song_name_fc , artist_name_fc , mp3_bytes_fc )
153153
154154print ("Walkmp3rson" )
155155play_state = False # so we know if we're auto advancing when mixer finishes a song
156156last_debug_time = 0 # for timing track position
157157reels_anim_frame = 0
158158last_percent_done = 0.01
159-
159+ audio . play ( mixer )
160160while True :
161161 encoder_pos = - encoder .position
162162 if encoder_pos != last_encoder_pos :
@@ -167,7 +167,7 @@ def change_track(tracknum):
167167 last_encoder_pos = encoder_pos
168168 volume_bar .value = mixer .voice [0 ].level * 100
169169
170- if play_state is True : # if not stopped, auto play next mp3_filename
170+ if play_state is True : # if not stopped, auto play next song
171171 if time .monotonic () - last_debug_time > 0.2 : # so we can check track progress
172172 last_debug_time = time .monotonic ()
173173 bytes_played = mp3_file .tell ()
@@ -176,11 +176,14 @@ def change_track(tracknum):
176176
177177 if not mixer .playing :
178178 print ("next song" )
179+ audio .pause ()
179180 track_number = ((track_number + 1 ) % len (mp3s ))
180181 mp3_file , mp3stream , song_name , artist_name , mp3_bytes = change_track (track_number )
181182 song_name_label .text = song_name
182183 artist_name_label .text = artist_name
183184 mixer .voice [0 ].play (mp3stream , loop = False )
185+ time .sleep (.1 )
186+ audio .resume ()
184187
185188 # Use the NeoKeys as transport controls
186189 for k in range (len (keys )):
@@ -190,13 +193,15 @@ def change_track(tracknum):
190193 neokey .pixels [key_number ] = color
191194
192195 if key_number == 0 : # previous track
196+ audio .pause ()
193197 track_number = ((track_number - 1 ) % len (mp3s ) )
194198 mp3_file , mp3stream , song_name , artist_name , mp3_bytes = change_track (track_number )
195199 song_name_label .text = song_name
196200 artist_name_label .text = artist_name
197- audio .resume ()
198201 mixer .voice [0 ].play (mp3stream , loop = False )
199202 play_state = True
203+ time .sleep (.1 )
204+ audio .resume ()
200205
201206 if key_number == 1 : # Play/pause
202207 if play_state :
@@ -207,20 +212,24 @@ def change_track(tracknum):
207212 play_state = True
208213
209214 if key_number == 2 : # Play track from beginning
210- audio .resume ()
215+ audio .pause ()
211216 mixer .voice [0 ].play (mp3stream , loop = False )
212217 song_name_label .text = tracktext (mp3_filename , 2 )
213218 artist_name_label .text = tracktext (mp3_filename , 1 )
214219 play_state = True
220+ time .sleep (.1 )
221+ audio .resume ()
215222
216223 if key_number == 3 : # next track
224+ audio .pause ()
217225 track_number = ((track_number + 1 ) % len (mp3s ))
218226 mp3_file , mp3stream , song_name , artist_name , mp3_bytes = change_track (track_number )
219227 song_name_label .text = song_name
220228 artist_name_label .text = artist_name
221- audio .resume ()
222229 mixer .voice [0 ].play (mp3stream , loop = False )
223230 play_state = True
231+ time .sleep (.1 )
232+ audio .resume ()
224233
225234 if not neokey [key_number ] and key_states [key_number ]:
226235 neokey .pixels [key_number ] = amber
0 commit comments