I think you're right that it's related to creating new instruments/channels/synths every time the effect plays - particularly because it seems like you're never deleting them! That makes it seem like there are more and more and more channels/instruments/synths over time, and at some point the playdate's audio routine can't work fast enough (I assume a big part of this is the filter: even when your synth is done making noise, the channel is still active, and is likely still processing that band-pass).
Your idea about pre-making the channel/instrument/synth seems good to me: you could do that setup when the game starts up, and then when you actually want to hear a sound, you'd just call the playNote() function on an instrument which is already present.