I’m working on a clone of Oliver Wittchow’s nanoloop for the Adafruit PyGamer.

The prototype was written in CircuitPython, which is a lovely language, but it doesn’t (yet) have support for the kinds of audio things I want to do.

It was helpful to use it to lay out the shape of the state object, and the controls and the UI.

The audio was unuseable, so I’ve rewritten it in C++.

It’s coming along very well.

There are 4 sound channels available for use, using the fab Teensy Audio Library:

  • square
  • pulse
  • sawtooth
  • noise

The envelope menu item let’s you change the attack, decay, sustain volume, amplitude and panning of your note block with cute visual indicators of each property.

There is a filter and a delay feature, and each channel can play at full speed, half speed or quarter speed. You can alter the bpm in the second menu.

It’s a lot of fun.

The plans for the next session (this evening?) are:

  • add a pitchbend envelope (for the mod menu item)
  • add UI for delay and filter
  • use the neopixel array on the base of the PyGamer to indicate the current bar (the loop plays for 4 bars, things on /2 or /4 speed play twice or once during that time)

Future plans are to introduce pattern chaining, pattern-length (per-channel), using square curves for attack and decay and chords (positive integer intervals).

The code is very bad and available here:

https://git.snoot.club/chee/bleepbloopmachine

It’s already starting to diverge from nanoloop, and I hope it will continue to forge its own identity until it can stand strong as its own independent interesting instrument.