Skip to content

Commit b2b0aff

Browse files
committed
adjusted for Feather RP2040
1 parent fb01d61 commit b2b0aff

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

Walkmp3rson/code.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
key_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
5959
encoder = rotaryio.IncrementalEncoder(rotary_seesaw)
6060
last_encoder_pos = 0
6161

@@ -77,12 +77,14 @@
7777

7878
def 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)
8285
mixer = audiomixer.Mixer(voice_count=1, sample_rate=22050, channel_count=1,
8386
bits_per_sample=16, samples_signed=True)
8487
mixer.voice[0].level = 0.15
85-
audio.play(mixer)
8688

8789
# Colors
8890
blue_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

154154
print("Walkmp3rson")
155155
play_state = False # so we know if we're auto advancing when mixer finishes a song
156156
last_debug_time = 0 # for timing track position
157157
reels_anim_frame = 0
158158
last_percent_done = 0.01
159-
159+
audio.play(mixer)
160160
while 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

Comments
 (0)