ornaments+crimes extended / polymorphic 16bit CV generator
fyi / fwiw ...
since this is built around a teensy 3.x, i figured why not post it here, too:
the hardware has been around for a while, but there has been in the works a/the new and proper firmware (in the creation of which i wasn't really involved) which turns the module in a nifty, multi-function CV generator/processor (for use with modular synthesizers):
the beta release can be found here: https://github.com/mxmxmx/O_C , including the schematics, gerber files, and a fair amount of code.
the main purpose of this is producing precision control voltages, but there's a couple of random and LFO-type functionalities included, too. a/the bottle neck in this regard was the single SPI port, which is shared by the DAC8565 and the OLED, so achieving decent sample rates was tricky/impossible; we ended up using a custom SPIFIFO/DMA driver for the DAC and OLED which manages 16.6kHz and draws/write single pages, so as to minimize any interference with time-sensitive stuff. not too bad, but a second SPI port would have been convenient ...
anyways, here's a little run-down of what it does:
* CopierMaschine: is an enhanced version of the original quantising digital emulation of a four stage analogue shift register (ASR).
* Harrington 1200: provides basic neo-Riemannian Tonnetz transformations of triadic chords, triggered by the digital (gate/trigger) inputs.
* Automatonnetz: combines Tonnetz transforms with a "vector" sequencer - it can be both a chord sequencer and a melody sequencer, but not of the usual kind.
* Quantermain: is a quad pitch quantiser for external voltages, with editable preset scales, even fully editable user-scales incl. microtonal tunings, etc; it can do clocked (trigger-driven) quantising, or continuous quantising, with a latency of under 100 microseconds; it also features quad Turing Machines and/or May-Verhulst logistic maps as optional, semi-random, internally generated CV sources.
* Quadraturia: is a wavetable quadrature LFO, based on the "Easter egg" in the Mutable Instruments Frames module.
* Low-rents: is a dual Lorenz and Rössler (strange attractor) modulation generator, partially based on the "Easter egg" in the Mutable Instruments Streams module.
* Piqued: is a quad voltage-controlled envelope generator, based on envelope generator code from the Mutable Instruments Peaks module, but extending it with voltage control, additional envelope types, including re-triggering (looping) envelopes, additional segment shapes, adjustable trigger delays, and a unique Euclidean "trigger filter" which turns the app into a Euclidean rhythm generator which can output envelopes, not just gate or trigger pulses.
* Dialectic Ping Pong: is a quad bouncing ball envelope generator, based on a hidden mode of the Mutable Instruments Peaks module.
* Viznutcracker, sweet!: is a quad "byte beat" equation generator, which can be used as an audio source to generate curious but often interesting 8-bit noises and tunes, or which can be clocked by an external source to produce "byte beat" control voltage sequences.
* References: is a simple utility app that outputs specific reference voltages on each channel to help tune or calibrate VCOs and other modules.
hardware:
- teensy 3.1 / 3.2
- 4x precision CV outputs, 16-bit (TI DAC8565), output range: -3v / +6v, "in-the-loop" compensated, for best DC accuracy, with 9 calibration points at -3v to +6V per channel settable in firmware to ensure excellent linearity (+/- 1mV accuracy across a 9 octave pitch CV range is achievable).
- 4x CV inputs, -3.5v / +6.5v, 12bit, 100k input impedance.
- 4x trigger/gate inputs, threshold ~ 2.5v, 100k input impedance.
- two rotary encoders, with built-in push switches.
- two push buttons.
- 128 x 64 pixel 1.3" OLED display (SPI / SH1106 driver chip).
- trigger-to-quantised-output latency < 100 microseconds
- apps use a 16.7kHz internal timer (CPU overclocked to 120MHz), therefore the DAC update (sample) rate is 16.7kHz on each of the 4 channels.
- ADCs are also read at 16.7kHz but in many of the "apps" running on O+C, 16 values are averaged to remove noise, meaning that the effective sample rate for CV inputs is about 1 kHz. Digital (gate/trigger) inputs are read at 16.7 KHz - this ensures very low latency.
- +/-12V power only, ca. 85mA power draw on +12V bus, much less on -12V bus).
fyi / fwiw ...
since this is built around a teensy 3.x, i figured why not post it here, too:
the hardware has been around for a while, but there has been in the works a/the new and proper firmware (in the creation of which i wasn't really involved) which turns the module in a nifty, multi-function CV generator/processor (for use with modular synthesizers):
the beta release can be found here: https://github.com/mxmxmx/O_C , including the schematics, gerber files, and a fair amount of code.
the main purpose of this is producing precision control voltages, but there's a couple of random and LFO-type functionalities included, too. a/the bottle neck in this regard was the single SPI port, which is shared by the DAC8565 and the OLED, so achieving decent sample rates was tricky/impossible; we ended up using a custom SPIFIFO/DMA driver for the DAC and OLED which manages 16.6kHz and draws/write single pages, so as to minimize any interference with time-sensitive stuff. not too bad, but a second SPI port would have been convenient ...
anyways, here's a little run-down of what it does:
* CopierMaschine: is an enhanced version of the original quantising digital emulation of a four stage analogue shift register (ASR).
* Harrington 1200: provides basic neo-Riemannian Tonnetz transformations of triadic chords, triggered by the digital (gate/trigger) inputs.
* Automatonnetz: combines Tonnetz transforms with a "vector" sequencer - it can be both a chord sequencer and a melody sequencer, but not of the usual kind.
* Quantermain: is a quad pitch quantiser for external voltages, with editable preset scales, even fully editable user-scales incl. microtonal tunings, etc; it can do clocked (trigger-driven) quantising, or continuous quantising, with a latency of under 100 microseconds; it also features quad Turing Machines and/or May-Verhulst logistic maps as optional, semi-random, internally generated CV sources.
* Quadraturia: is a wavetable quadrature LFO, based on the "Easter egg" in the Mutable Instruments Frames module.
* Low-rents: is a dual Lorenz and Rössler (strange attractor) modulation generator, partially based on the "Easter egg" in the Mutable Instruments Streams module.
* Piqued: is a quad voltage-controlled envelope generator, based on envelope generator code from the Mutable Instruments Peaks module, but extending it with voltage control, additional envelope types, including re-triggering (looping) envelopes, additional segment shapes, adjustable trigger delays, and a unique Euclidean "trigger filter" which turns the app into a Euclidean rhythm generator which can output envelopes, not just gate or trigger pulses.
* Dialectic Ping Pong: is a quad bouncing ball envelope generator, based on a hidden mode of the Mutable Instruments Peaks module.
* Viznutcracker, sweet!: is a quad "byte beat" equation generator, which can be used as an audio source to generate curious but often interesting 8-bit noises and tunes, or which can be clocked by an external source to produce "byte beat" control voltage sequences.
* References: is a simple utility app that outputs specific reference voltages on each channel to help tune or calibrate VCOs and other modules.
hardware:
- teensy 3.1 / 3.2
- 4x precision CV outputs, 16-bit (TI DAC8565), output range: -3v / +6v, "in-the-loop" compensated, for best DC accuracy, with 9 calibration points at -3v to +6V per channel settable in firmware to ensure excellent linearity (+/- 1mV accuracy across a 9 octave pitch CV range is achievable).
- 4x CV inputs, -3.5v / +6.5v, 12bit, 100k input impedance.
- 4x trigger/gate inputs, threshold ~ 2.5v, 100k input impedance.
- two rotary encoders, with built-in push switches.
- two push buttons.
- 128 x 64 pixel 1.3" OLED display (SPI / SH1106 driver chip).
- trigger-to-quantised-output latency < 100 microseconds
- apps use a 16.7kHz internal timer (CPU overclocked to 120MHz), therefore the DAC update (sample) rate is 16.7kHz on each of the 4 channels.
- ADCs are also read at 16.7kHz but in many of the "apps" running on O+C, 16 values are averaged to remove noise, meaning that the effective sample rate for CV inputs is about 1 kHz. Digital (gate/trigger) inputs are read at 16.7 KHz - this ensures very low latency.
- +/-12V power only, ca. 85mA power draw on +12V bus, much less on -12V bus).
Last edited: