t2techno / Faug

A Minimoog Model D emulation with the DSP portion written in Faust. Moog + Faust = Faug

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Faug

A Minimoog Model D emulation with the DSP portion written in Faust. Moog + Faust = Faug

Alt text

Controllers Section:

  • Tune Knob: Global detune ranging from [-2.5, 2.5] semi-tones
  • Glide Knob : Glide rate/portamento, max time ~6sec
  • Modulation Mix Knob: Mixes between modulation sources determined by buttons below
  • Osc-3/Filter Eg Button: Determines mod source added by left side of the Modulation Mix knob
    • Osc-3: Osc three signal is modulation source
    • Filter EG: Filter Envelope Generator is modulation source
  • Noise/LFO Button: Determines mod source added by Right side of the Modulation Mix knob
    • Noise: Noise is modulation source
      • White Noise in mixer section means pink noise for noise modulation source
      • Pink Noise in mixer section means red noise for noise modulation source
    • LFO: LFO is modulation source

Keyboard Section:

  • LFO Rate Knob: Frequency of dedicated modulation Low Frequency Oscillator: [0.5Hz,200Hz]
    • ToDo: LFO Shape toggle
  • Pitch Wheel: Pitch bend for while playing.
    • ToDo: Setting to send wheel automatically back to center when released
  • Mod Wheel: Modulation Amount to modulation targets
  • Glide Button:
    • Activates glide/portamento when notes are played with no seperation
  • Decay Button:
    • Applies an Envelope's decay setting to it's release stage
    • Release is ~10ms when turned off

Oscillator Bank:

  • Oscillator Modulation Button: Turns on modulation source routing to Oscillators 1 and 2
    • Oscillator 3 doesn't get modulated b/c it is a modulation source
  • Osc-3 Control Button: Connects Oscillator 3's frequency to the keyboard input
    • Uses Keyboard center of C3 - Midi Note 48 - 130.81Hz as input frequency when Oscillator 3 disengaged from keyboard
  • Range Column:
    • Octave for pitch of respective oscillator
    • Units are feet - tradition from organ pipes
    • Midi Note 93(A6) at 16' plays 440Hz(A4)
    • Lo mode uses aliasing oscillators since the pitch is in a range aliasing shouldn't occur
  • Frequency column:
    • Detune for Oscillators 2 and 3
    • Range of [-7.5,7.5] semi-tones
    • Oscillator 1 doesn't get detuned as it serves as a reference for the other two
  • Waveform column:
    • Triangle: Triangle wave
      • Triangle+Saw: Oscillators 1 & 2: A triangle and saw wave added together
      • Reverse Saw: Oscillator 3: A saw wave that ramps down instead of ramping up
    • Saw: Saw Wave, ramps up
    • Square: Square Wave
    • Rectangle: Rectangle Wave-Pulse train with 0.7 duty cycle
    • Narrow Rectangle: Rectangle Wave-Pulse train with 0.85 duty cycle

Mixer Section:

  • Left Column of knobs: Volume knobs for their respective oscillators
    • Volume Knob for Oscillator 3 has no impact on it's contribution to modulation signal
  • Center Column of buttons: On/Off buttons for their respective noise sources contribution to the sound signal path
    • On/Off buttons for Oscillator 3 and Noise have no impact on they're contributions to the modulation signal
  • Right Column:
    • Load Screw/knob: Increases the output of Oscillators and Noise(not feedback) before being fed into the filter
      • ToDo: Include a warm little light that increases in brightness with load
      • ToDo: Improve/build upon scaling/saturation algorithms
    • Feedback Amount: Amount of the signal's output that gets fed back to the input
      • ToDo: Improve and build upon feedback saturation/processing
    • Noise Volume: Volume knob for noise signal's contribution to sound signal
      • Has no impact on noise's contribution to modulation signal
    • Noise-Type Button: Determines noise type for sound and modulation signals
      • White Noise for sound signal is Pink Noise for modulation Signal
      • Pink Noise for sound signal is Red Noise for modulation Signal

Filter Section:

Faust Libraries-vaeffects emulation of traditional moog 4th order ladder filter

  • Filter Modulation Button: Turns on modulation of filter cutoff by modulation sources
  • Keyboard Control:
    • Keyboard Control 1: Turns on 1/3 of key tracking for filter cutoff
    • Keyboard Control 2: Turns on 2/3 of key tracking for filter cutoff
    • Turning on both gives full keyboard tracking eg. Filter cutoff will move 1:1 with change in played pitch
  • Cutoff Frequency Knob: Determines base cutoff of filter: range [10Hz,20kHz]
  • Emphasis Knob: Controls the amount of filter signal fed back into filter, resulting in a resonance peak at cutoff
    • Self-Oscillation occurs at max value
    • ToDo: Add scaling to reduce emphasis as cutoff freq goes down so bass notes still have bass frequencies
  • Contour Amount Knob: Adjusts the amount that the Filter's envelope generator impacts the filter cutoff
    • Max Range of 4 octaves
    • ToDo: Add filter direction toggle
  • Attack Time Knob: The amount of time it takes for the filter cutoff to go from the base frequency to max or min cutoff frequency.
    • Value Range: [1ms, 7s]
    • Peak change amount is determined by Contour Amount knob.
  • Sustain Level Knob: The percent of difference between filter cutoff and contour peak for the cutoff frequency to stay at after Decay Phase
    • Value Range: [0%, 100%]
    • 0%: After the Attack phase, the filter cutoff will decay to the base cutoff frequency set by the knob
    • 50%: If contour is set to max(4 octaves), the filter cutoff will decay to 2 octaves above base cutoff frequency determined by knob
    • 100%: After the Attack phase, the filter cutoff will not decay at all and will sustain at peak value until note is released
  • Decay Time Knob: The amount of time it takes for the filter cutoff to go from the max or min cutoff frequency to Sustain level
    • Value Range: [4ms, 30s]
    • Begins immediately after Attack phase ends
  • Release for filter envelope is either 10ms, or Decay Time value if Decay Button in keyboard section is on
  • ToDo: Add different cutoff slopes/filter implementations

Loudness Contour:

  • Attack Time Knob: The amount of time it takes for the volume to reach it's peak.
    • Value Range: [1ms, 10s]
    • Peak determined by the Volume Knob in Power Section.
  • Sustain Level Knob: Volume level held after decay
    • Value Range: [0%, 100%]
    • 0%: Volume will decay to nothing
    • 100%: No volume decay after attack until note released
  • Decay Time Knob: The amount of time it takes for the filter cutoff to go from the max or min cutoff frequency to Sustain level
    • Value Range: [4ms, 24s]
    • Begins immediately after Attack phase ends
  • Release for envelope is either 10ms, or Decay Time value if Decay Button in keyboard section is on

Power Section:

  • Volume Knob: Scales overall output
  • Power Button: Turns output on/off
    • ToDo: Add a warm up process

Other ToDos:

  • UI Labels/knob ticks need some fine-tuning to line up
  • Variable key tracking for notes
  • Variable detune/drift
  • Settings page to allow for these and other adjustments
  • Oversampling
  • Alternate UI view when no onscreen keyboard is needed
    • Different layout, more of a rack/vertical style?
    • Add Loudness Meter
    • Add Spectrum graph
    • Add Waveform graph
    • Add to settings page to toggle them on/off
  • UI/visual cues to inform user which buttons are flipped on
  • Contour generator builds on itself when decay button is on
  • Replace various curves and contours with exponential implementations

About

A Minimoog Model D emulation with the DSP portion written in Faust. Moog + Faust = Faug


Languages

Language:C++ 94.5%Language:Faust 4.6%Language:C 0.8%Language:Shell 0.1%