Skip to content

Commit 9558442

Browse files
committed
Support looping
1 parent cc8303f commit 9558442

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

circuitpython/perc/code.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,13 @@ def play_sample(sample:dict) -> None:
127127
i = get_sample_index(sample["name"])
128128
wav = samples[sample["name"]]
129129
mixer.voice[i].level = sample.get("level", LEVEL)
130+
mixer.voice[i].loop = sample.get("loop", False)
130131
mixer.voice[i].play(wav)
131132

132-
def stop_sample(name:str) -> None:
133-
global samples
134-
if name in samples:
135-
for i, val in enumerate(samples.keys()):
136-
if val == name:
137-
mixer.voice[i].stop()
138-
break
133+
def stop_sample(sample:dict) -> None:
134+
if sample.get("loop", False):
135+
i = get_sample_index(sample["name"])
136+
mixer.voice[i].stop()
139137

140138
# Keyboard
141139

@@ -146,8 +144,7 @@ async def touch_handler():
146144
if event.pressed:
147145
play_sample(sample)
148146
elif event.released:
149-
pass
150-
# stop_sample(name)
147+
stop_sample(sample)
151148
await asyncio.sleep(0.005)
152149

153150
# MIDI
@@ -163,8 +160,7 @@ async def midi_handler():
163160
if isinstance(msg, NoteOn) and msg.velocity != 0:
164161
play_sample(sample)
165162
elif isinstance(msg, NoteOff) or (isinstance(msg, NoteOn) and msg.velocity == 0):
166-
pass
167-
# stop_sample(name)
163+
stop_sample(sample)
168164
await asyncio.sleep(0)
169165

170166
# Controls

0 commit comments

Comments
 (0)