Norns port of Max4Live projects bitters and onebit. I wanted to try my hand at learning a little SuperCollider, and this seemed like a great excuse. I implemented a “polynomial transition region” oscillator UGen; the pulse wave is essentially due to Peter McCulloch; I did the asymmetric triangle wave. Like the original, bitters is inspired by chiptune sounds, but doesn’t attempt to emulate anything out there. The architecture is as follows: each oscillator has an FM pair to modulate it a little like Just Friends or W/Synth. The oscillators are mixed and optionally degraded before reaching the filter, which is highpass-into-lowpass like the MS-20. The polyphony code is cribbed from @infinitedigits’s mx.synths, and I added @tehn’s halfsecond softcut delay from Awake.
Requirements
norns, MIDI input
Documentation
Requires a SuperCollider restart after first running the script: the script checks to see whether my UGens, TrianglePTR and PulsePTR are installed and installs them if not. SuperCollider needs a restart in order to find these UGens.
221022 Update: If you have not updated the script, I highly recommend doing so; I significantly improved how the script handles its UGens; this will allow future scripts using TrianglePTR and PulsePTR to more easily coexist with bitters.
Is the structure of the FM engine at all similar to the one found in later NES carts? Or was the use of this track merely out of an enjoyment for the sound?
just enjoyment of the sound! the FM is Chowning-style phase modulation, but the carrier is a pulse or asymmetric triangle wave, not something derived from a sine
This is why it sounds so familiar! The VRC6 chip (an additional FM sound chip added to Castlevania 3 in Japan but not present in the US version) is a simple FM chip that added 2 extra pulse-wave channels with FM properties and a 3rd sawtooth channel. That pulse-wave FM sound is really distinct, which pinged me in a way!
I love this and will try to check it out tomorrow! That’s really really cool and such a fun coincidence!!
wow @alanza it sounds brilliant! and such a wonderful demo. I’m amazed by your work in SuperCollider, and how you wrote your own C++ plugins for this. its inspirational.
I’m definitely going to use this. I’ve been hoping for some more chippy sounds on my norns
EDIT: this script is awesome. Can get really thick and gnarly in a good way. I don’t really know what I’m doing when it comes to osculators, but I’ll figured it out as I go with this script. I’m a big fan.
I’ll continue to throw my hat in the ring for love of this script. There’s not enough PWM in the world anymore. There can never be enough PWM in the world. And it’s so cool to have a mix of FM and PWM.
As suggested by @Ukasz, there’s now a trigger on the Params page that will randomize all the parameters—with the exception of those parameters having to do with the pitch (beyond octave control), the filters, and the FM. The reason for the omissions was to try and present a “usable” (or even just audible!) sound more often when you click randomize. Even with all these omissions, there are some pretty wild spots you can get to with the remaining “knobs”, so expect weirdness.
Thanks for sharing @McNUG!! It’s really cool to hear how other people are using bitters, especially in how that usage differs from my habits with it!
pushed a fix quashing a silly bug that prevented the mod envelope decay amount from being affected by anything the user did. All because of an errant space in a string. so it goes.
If you’re on the discord, you may have seen that I spent most of this past weekend trying to fix a little “notch” that was appearing in the code for the triangle oscillator. It is indeed fixed, reducing the amount of aliasing significantly!
Update Process
If you already have Bitters installed, you can update it from Maiden just fine, but afterwards you’ll need to run the following command to take advantage of the new TrianglePTR: