doubledecker
Two-layer polysynth
Clone of a clone — Yamaha CS-80 via Deckard’s Dream
(image or video forthcoming or audio or something)
Each voice consists of two layers; each layer has:
- A saw or pulse wave or both
- Noise
- A dedicated LFO for PWM
- A resonant high pass filter and resonant low pass filter in series
- A dedicated envelope for the filters
- A sine wave at the fundamental added after the filters
- An envelope on amplitude.
You can control the mix of the layers, and add more modulation from a per-voice or global lfo. Velocity and polyphonic pressure modulation of many parameters is built in at a deep level.
This is a GAS-buster script for me. I was thinking “I would love to have some kind of a hands-on polysynth to play with MPE” and there I was shoulder deep in YouTube when I realized I had a Norns and some supercollider ability so I could see what I could do with those skills.
I didn’t exactly fully succeed at not buying anything for this project, though. The CS-80 or DDRM has so many dang sliders, and it would be a shame not to have a hands-on experience creating patches, so I bought a used MIDI Fighter Twister, and designed the script to use three pages of two layers of sixteen knobs with LED rings. It’s not necessary to play this script though — you can access everything from the params menu, most of everything from the keys and encoders of norns, and a grid will give you a fast path to parameter selection once you’re used to it (and/or act as an isomorphic keyboard).
Can load Deckard’s Dream preset files.
There is still more tweaking to do, both on the interface and on some sound features (the support for paired voices is still a little preliminary), but I want to get this posted now because it’s entirely usable.
Oh yeah, and while you can use the script standalone to play synths, it’s also a rockin’ nb
voice. Turn it on as a mod to access that.
Requirements
Required: norns
Recommended: midi controller, midi fighter twister or grid
Documentation
Install, restart norns, you know the drill.
When you start doubledecker with a MIDI Fighter Twister connected, it will flash the MFT with its own config.
To use from norns without a grid or MFT, edit params using the param menu or use e1 to select parameter pages, k2 and k3 to navigate pairs of params on the 4x4 param grid per page, and edit param values with e2 and e2.
With a grid, you can toggle between isomorphic keyboard mode and param edit mode by pressing the bottom left corner. In the params you can select how many half-steps x and y are, which allows you to do anything from a standard linnstrument-style half-steps dx and fourths dy to wiki-hayden fourths dx and fifths dy, which makes whole steps along the diagonals. In the param edit mode, you can press a key to highlight pairs of params to edit with e2 and e3 by pressing the corresponding grid key. The top contains 4x4 grids for each layer, and the bottom contains a grid for the both-layer parameters.
With an MFT, use the side buttons to switch pages. The pages control Layer 1, Layer 2, and the both-layer parameters, in order. When there are two parameters to a grid slot, push the encoder and turn to edit the secondary parameter. For example, push the filter cutoff and turn to edit resonance. I have chosen colors for the color LEDs that are reminiscent of the sldier caps on the original CS-80, but with black replaced by dark blue/purple and white replaced by light blue/cyan.
Doubledecker can load presets directly from a file, even if you’re using it as an nb
voice from another script, so you can share Doubledecker presets between scripts. It accepts two types of preset formats:
- a norns preset file; it’ll load only the relevant doubledecker params, if any
- a Deckard’s Dream preset or bank file. You can select numbered presets from the bank. I haven’t got the parameter tuning 100% right yet, but the presets mostly sound sensible-ish. @21echoes has been helping me get it right, but dear lord there are so many dang parameters to tune. Anyway if you have a DDRM tell me how close you think it is.
To use doubledecker as an nb voice, activate it as a mod, then restart. I highly recommend picking the mono version to use with scripts like n.kria, if you’re only using it on one voice. The poly versions will be too much CPU unless you’re not using other synths too.
Differences from the hardware
- I have only made six voices accessible, rather than eight, because that’s what I can get out of my Pi 3b+ shield without crackles.
- I haven’t yet implemented the two kinds of voice allocation.
- No chorus or ring mod (sorry) (yet?)
- Paired voice implementation is experimental and incomplete
- Only portomento, no glissando.
- In Doubledecker you can change the keytracking independently per layer, you can set either filter IL or AL bipolarly, not just negative for IL and positive for AL… some other minor extra flexibility like this.
- Unfortunately, for performance reasons, a layer will use non-bandlimited waves when both saw and pulse are on. If you’re only using one per layer, it’ll be the band-limited version.
Roadmap
- Better screen interface
- Quadrature LFOs for paired voices
- Ring mod or chorus?
Download
;install https://github.com/sixolet/doubledecker
Acknowledgements
Many thanks to the Black Corporation for writing a really good manual
to @JulesV for the code to load configs into a MFT.
and especially to @21echoes for an intense amount of answering questions and measuring parameters on a physical Deckard’s Dream.