>>> MINI VIRTUAL ANALOG SYNTHESIZER
I've spent the past couple months putting together a small synthesizer program. It started out as the very simple synthesizer example program that came with the BASS sound library but has changed almost completely since then.
Download
Current Release
Release 7 (2015-03-14) Clicktastic
Previous Releases
Release 6 (2015-03-14) Happy Pi Day!
Release 5 (2014-02-14)
Release 4 (2014-01-23)
Release 3 (2014-01-06)
Release 2 (2014-01-01)
Release 1 (2013-12-30)
Source Code
Now on GitHub!
Controls
- Letter keys play notes
- - and + adjust output volume
- [ and ] shift octaves
- F1 through F9 select menus on the active page
- F10 switches to main page
- F11 switches to effects page
- F12 toggles antialiasing
- Tab and Shift-Tab cycle forward and backwards through menus
- Up and Down arrows move up and down between menu items
- Left and Right arrow on a menu title turns the component off and on
- Left and Right arrows decrease and increase values
- Hold Shift for large steps: 12 semitone (1 octave) frequency, 1/4 magnitude, or 1 second
- No modifier for normal steps:1 semitone frequency, 1/16 magnitude, or 0.1 second
- Hold Ctrl for small steps: 0.1 semitone frequency, 1/64 magnitude, or 0.01 second
- Holt Alt for tiny steps:0.01 semitone frequency 1/256 magnitude, or 0.001 second
- Left and Right arrow on an ON/OFF value sets it to off and on
- Click on menu titles and entries to select them
Requirements
Windows XP or later
Visual C++ 2013 Redistributable Package (x86)
Features
16-note polyphony
29 note key bindings
- Two full octaves plus five extra notes (ZSXDCVGBHNJM, Q2W3ER5T6Y7U, I9O0P)
- Initially centered on middle C
10-octave range (C0 through C10)
- Key octave sets octave of center note key (Q)
MIDI input
- Full range of MIDI notes
- Key velocity
- Pitch wheel
Variety of waveforms
- Classic analog waveforms
- sine, pulse, sawtooth, triangle
- support hard-sync effect
- Noise waveforms
- colored noise: red, pink, white, blue, violet (selected by width)
- sample-and-hold noise
- linearly-interpolated noise
- Linear feedback shift register waveforms
- poly4, poly5, period-93, poly9, poly17, pulse/poly5, poly4/poly5, poly17/poly5
- Band-limited with PolyBLEP to reduce aliasing
Two sound oscillators per voice
- Use any available waveform
- Frequency offset from note key tunable in octave, semitone, 10 cent, and 1 cent steps
- Modulate pulse width, frequency, and amplitude with LFO
- Hard sync on second oscillator
- Key follow controls how frequency tracks note keys
One shared low-frequency oscillator
- Use any available waveform
- Frequency tunable in octave, semitone, 10 cent, and 1 cent steps
Resonant Filter per voice
- Simulated Moog-style resonant ladder filter
- Based on Will Pirkle's implementation of Vadim Zavalishin's Topology-Preserving Transform (TPT) virtual analog ladder filter
- Analog-style nonlinear saturation
- 25 different filter modes
- Based on a mixing technique used by Oberheim Xpander and Matrix-12 synthesizers
- Peak
- Low-pass: 6 dB/octave, 12 dB/octave, 18 dB/octave, 24 dB/octave
- High-pass: 6 dB/octave, 12 dB/octave, 18 dB/octave, 24 dB/octave
- Band-pass: 6 dB/octave, 12 dB/octave
- Band-stop (notch): 6 dB/octave, 12 dB/octave
- All-pass (phase shift): 1-pole, 2-pole, 3-pole, 4-pole
- "Combo" modes with additional low-pass or high-pass filtering
- Cutoff frequency tunable in octave, semitone, 10 cent, and 1 cent steps
- Supports input drive up to 1000%
- Supports resonance effects up to full self-oscillation
- Dedicated ADSR envelope generator
- Attack, Decay, and Release times settable in second, 100 ms, 10 ms, and 1 ms steps
- Modulate cutoff frequency with LFO, envelope, and key velocity
- Key follow controls how cutoff frequency tracks note keys
Amplifier per voice
- Modulate level with envelope and key velocity
- Dedicated ADSR envelope generator
- Attack, Decay, and Release times settable in second, 100 ms, 10 ms, and 1 ms steps
DirectSound effects
- Chorus, Compressior, Distortion, Echo, Flanger, Gargle, I3D Reverb, Waves Reverb
- Fully configurable settings
Note Envelope Display
- Note key indicators show volume envelope state
- Attack in green
- Decay in red
- Sustain in white
- Release in grey
Spectrum Analyzer Display
- One semitone per column
- 6dB power attenuation per row
- Aligned with note key indicators
- Shows audible limit (beginning of purple region)
- Shows Nyquist limit (beginning of red region)
Oscillator Waveform Display
- Shows the waveform generated by the current oscillator, LFO, filter, and volume envelope setting
Voice Activity Display
- Shows amplifier envelope state for each active voice
Processor Usage Display
- CPU time as reported by BASS
- Shows percentage of one CPU core used by sound generation