stretta / BEAP

BEAP Modular. Berklee Electro Acoustic Pedagogy
300 stars 50 forks source link

Module request: Braids-inspired Oscillator #14

Closed stretta closed 10 years ago

stretta commented 10 years ago

inspiration: http://mutable-instruments.net/modules/braids two simple controls per 'model' does not have to be one module, different models can be different modules. I did the sawtooth->tuned delay-> neg feedback and it sounds very good.

Synthesis algorithms Analog synthesis

  1. Sawtooth with CS-80-style “tooth”-impurity. Modulating the tooth width and polarity creates phasing and timbre animation.
  2. Continuous morphing through triangle, sawtooth, square and pulse waveshapes. With adjustable overdrive and coloration.
  3. Sawtooth and square morphing. Continuous interpolation between the two shapes; and pulse-width modulation controls. Pulse-width modulation is applied to the sawtooth wave too, resulting in a thick “animated saw” sound.
  4. Dual square wave with hard sync, with frequency ratio and balance control.
  5. Triangle and sine, with continuous interpolation between the two shapes; and wave multiplier.

Direct digital synthesis

  1. Band-limited dual pulse train, with bandwidth and detune controls.
  2. Three ring-modulated sine waves, with detune controls.
  3. Swarm of seven sawtooth waves, with detune and high-pass filtering controls.
  4. Digital Sawtooth wave sent into a tuned delay line (comb filter) with positive and negative feedback.
  5. Toy keyboard-like waveform generation, with waveshape and bitcrushing parameters.
        1. Direct digital emulation of triangle, sawtooth and square waves sent into low-pass, peaking, band-pass and high-pass filters (Casio CZ meets Roland D-50). Cutoff frequency and waveshaping controls.

Vocal synthesis

  1. VOSIM synthesis with bell-shaped carrier; control over the frequency position of two formants.
  2. 80s Home-computer vowel synthesis, with vowel and approximative chipmunk-approved vocal range control.
  3. FOF vowel synthesis, with vowel and voice range (bass to soprano) control.

FM

      1. Two-operators FM, with FM index and carrier/modulator ratio controls. Variants with rough feedback and chaotic behavior.

Simulations

  1. Bell simulation, with absorption / inharmonicity controls.
    1. Plucked or bowed string simulation, with strength/pressure and geometry controls.
    1. Blown pipe / flute simulations, with pressure and geometry controls.

Wavetables

  1. 256 waveforms distributed over 20 wavetables, with quantized wavetable selector, and smooth interpolation within a wavetable.
  2. 256 waveforms optimally laid out in a 16×16 map, with smooth XY interpolation across the map.

Noise

  1. Pitched noise source with state variable filter; Q and Oberheim-style filter mode (LP to notch to HP) controls.
  2. Pitched noise source with dual bandpass filters; Q and separation controls.
  3. Clocked noise, with adjustable cycle length, and adjustable quantization.
  4. Granular cloud with density and dispersion parameters.
  5. Particle system simulation (“bag of stuff”) with density and dispersion parameters.
  6. Simulation of telecommunications digital modulator.
petermcculloch commented 10 years ago

PM

On Oct 18, 2013, at 12:23 PM, Matthew Davidson notifications@github.com wrote:

inspiration: http://mutable-instruments.net/modules/braids two simple controls per 'model' does not have to be one module, different models can be different modules. I did the sawtooth->tuned delay-> neg feedback and it sounds very good.

Synthesis algorithms Analog synthesis

Sawtooth with CS-80-style “tooth”-impurity. Modulating the tooth width and polarity creates phasing and timbre animation.

Continuous morphing through triangle, sawtooth, square and pulse waveshapes. With adjustable overdrive and coloration.

Sawtooth and square morphing. Continuous interpolation between the two shapes; and pulse-width modulation controls. Pulse-width modulation is applied to the sawtooth wave too, resulting in a thick “animated saw” sound.

Dual square wave with hard sync, with frequency ratio and balance control.

Triangle and sine, with continuous interpolation between the two shapes; and wave multiplier.

Direct digital synthesis

  1. Band-limited dual pulse train, with bandwidth and detune controls.

Three ring-modulated sine waves, with detune controls.

Swarm of seven sawtooth waves, with detune and high-pass filtering controls.

Band-limited? I have a JP-8000 supersaw oscillator clone.

Digital Sawtooth wave sent into a tuned delay line (comb filter) with positive and negative feedback.

Might try this using the new comb filter module guts. Uses allpass so there isn't as much high frequency loss.

Toy keyboard-like waveform generation, with waveshape and bitcrushing parameters.

    1. Direct digital emulation of triangle, sawtooth and square waves sent into low-pass, peaking, band-pass and high-pass filters (Casio CZ meets Roland D-50). Cutoff frequency and waveshaping controls. Vocal synthesis
  1. VOSIM synthesis with bell-shaped carrier; control over the frequency position of two formants.

80s Home-computer vowel synthesis, with vowel and approximative chipmunk-approved vocal range control.

FOF vowel synthesis, with vowel and voice range (bass to soprano) control.

Don't know if FOF is still patent encumbered, but I have an implementation of a PAF oscillator bank with vowels that could be adapted.

FM

      1. Two-operators FM, with FM index and carrier/modulator ratio controls. Variants with rough feedback and chaotic behavior.

Simulations

  1. Bell simulation, with absorption / inharmonicity controls.

Plucked or bowed string simulation, with strength/pressure and geometry controls. Blown pipe / flute simulations, with pressure and geometry controls. Wavetables

  1. 256 waveforms distributed over 20 wavetables, with quantized wavetable selector, and smooth interpolation within a wavetable.

256 waveforms optimally laid out in a 16×16 map, with smooth XY interpolation across the map. Noise

  1. Pitched noise source with state variable filter; Q and Oberheim-style filter mode (LP to notch to HP) controls.

Pitched noise source with dual bandpass filters; Q and separation controls.

Clocked noise, with adjustable cycle length, and adjustable quantization.

Granular cloud with density and dispersion parameters.

Particle system simulation (“bag of stuff”) with density and dispersion parameters.

Simulation of telecommunications digital modulator.

— Reply to this email directly or view it on GitHub.

petermcculloch commented 10 years ago

Whoops, sent that too soon. I also have a morse code module for generating gate signals.

PM

On Oct 18, 2013, at 12:23 PM, Matthew Davidson notifications@github.com wrote:

inspiration: http://mutable-instruments.net/modules/braids two simple controls per 'model' does not have to be one module, different models can be different modules. I did the sawtooth->tuned delay-> neg feedback and it sounds very good.

Synthesis algorithms Analog synthesis

Sawtooth with CS-80-style “tooth”-impurity. Modulating the tooth width and polarity creates phasing and timbre animation.

Continuous morphing through triangle, sawtooth, square and pulse waveshapes. With adjustable overdrive and coloration.

Sawtooth and square morphing. Continuous interpolation between the two shapes; and pulse-width modulation controls. Pulse-width modulation is applied to the sawtooth wave too, resulting in a thick “animated saw” sound.

Dual square wave with hard sync, with frequency ratio and balance control.

Triangle and sine, with continuous interpolation between the two shapes; and wave multiplier.

Direct digital synthesis

  1. Band-limited dual pulse train, with bandwidth and detune controls.

Three ring-modulated sine waves, with detune controls.

Swarm of seven sawtooth waves, with detune and high-pass filtering controls.

Digital Sawtooth wave sent into a tuned delay line (comb filter) with positive and negative feedback.

Toy keyboard-like waveform generation, with waveshape and bitcrushing parameters.

    1. Direct digital emulation of triangle, sawtooth and square waves sent into low-pass, peaking, band-pass and high-pass filters (Casio CZ meets Roland D-50). Cutoff frequency and waveshaping controls. Vocal synthesis
  1. VOSIM synthesis with bell-shaped carrier; control over the frequency position of two formants.

80s Home-computer vowel synthesis, with vowel and approximative chipmunk-approved vocal range control.

FOF vowel synthesis, with vowel and voice range (bass to soprano) control.

FM

      1. Two-operators FM, with FM index and carrier/modulator ratio controls. Variants with rough feedback and chaotic behavior.

Simulations

  1. Bell simulation, with absorption / inharmonicity controls.

Plucked or bowed string simulation, with strength/pressure and geometry controls. Blown pipe / flute simulations, with pressure and geometry controls. Wavetables

  1. 256 waveforms distributed over 20 wavetables, with quantized wavetable selector, and smooth interpolation within a wavetable.

256 waveforms optimally laid out in a 16×16 map, with smooth XY interpolation across the map. Noise

  1. Pitched noise source with state variable filter; Q and Oberheim-style filter mode (LP to notch to HP) controls.

Pitched noise source with dual bandpass filters; Q and separation controls.

Clocked noise, with adjustable cycle length, and adjustable quantization.

Granular cloud with density and dispersion parameters.

Particle system simulation (“bag of stuff”) with density and dispersion parameters.

Simulation of telecommunications digital modulator.

— Reply to this email directly or view it on GitHub.

mhetrick commented 10 years ago

A few quick thoughts: With Braids, all of the source code is available at https://github.com/pichenettes/eurorack/tree/master/braids That will be useful for some of the more esoteric models.

In Max, I have the following thoughts: -The Braids panel/design are excellent, since it's a solution to implementing so many algorithms into a single interface. The two-knob setup also encourages exploration, as it doesn't present the user with an intimidating mess of knobs and jacks. -In Max, once the engine is written, multiple interfaces to the engine could be created. As a solution, you can do one module with tabbed bPatchers of various complexity, or multiple modules using the same engine. In the first solution, the main problem is inputs and outputs. While one bPatcher may have a simple view, it will still have the same number of inputs and outputs as the other views. With multiple modules, it becomes harder to find what you want.

stretta commented 10 years ago

@mhetrick

Yeah. A lot of the appeal of braids comes from the two knob interface. I feel that design fills the desire for an oscillator with a broad range of 'voice'. Standard geometric waveforms gets boring. Wavetables are nice for a while. Braids is like a magic box of tone. So, I agree. It would be great to just patch in a single oscillator and switch among various models that share the same two knobs and two CV inputs of modulation. My concern for a Beap version is that of efficiency and overhead. Maybe this is a trivial problem. Can you turn off a gen~ process? Multiple gen~ models that share the same I/O interface would be a clean way of organizing it.

@petermcculloch access to your super saw sounds extremely useful. Cloud is rather one diminutional.

petermcculloch commented 10 years ago

You can't turn it off 100%, but you could look at something like a switch/conditional. AFAIK, branching isn't that bad provided the branch can be predicted well, so this wouldn't be awful.

Better CPU/programming-wise would be to do each oscillator inside a poly~ patch, since you can dynamically swap out poly~ patches. That does require things to be in the search path, however.

petermcculloch commented 10 years ago

P.S. The other really compelling reason for using poly~ is it means that you can handle upsampling, which is pretty handy if you're dealing with digital waveforms.

petermcculloch commented 10 years ago

The source code is going to take some careful sorting through since it's for fixed-point architecture. I don't have time for the next several months, but it's cool stuff.

stretta commented 10 years ago

It isn't pretty, but I was thinking a poly~ implementation might work. So... each model would get its own poly~ and we'd just turn it on when needed? Sounds like a plan.

stretta commented 10 years ago

Integer? Brian Crabtree should get you an Aleph.

petermcculloch commented 10 years ago

Provided the inlets match up across the various poly~ patches, you could just use a single poly~ object and change the target patch as needed. I've done this before with oscillators and it worked fine.

PM

On Oct 18, 2013, at 7:44 PM, Matthew Davidson notifications@github.com wrote:

It isn't pretty, but I was thinking a poly~ implementation might work. So... each model would get its own poly~ and we'd just turn it on when needed? Sounds like a plan.

— Reply to this email directly or view it on GitHub.

stretta commented 10 years ago

Even better. I was searching the documentation on how to do this and failing, so I assumed it doesn't exist. The cool thing about this is we could put the models in /misc/oscmodels (or something) and build the menu that selects the model in the module on instantiation. That way you could just add a standard 'module' to the oscmodels folder, and you wouldn't have to update the module itself.

stretta commented 10 years ago

Macro Oscillator committed. You can drop an 'oscillator model' poly~ module inside /misc/macro_osc. There are three inputs (-5 to 5) that correspond to 1v/oct, Timbre and Color. One output. That's it.

Oh, and the dynamic loading is in the help file, but under 'dynamic polyphony' the patcherfile message isn't listed in the reference.