Triscillator is an additive synthesizer with three oscillators that can choose between 7 waveforms.
It consists of an interface for creating and manipulating waveforms, contained in csynth.h and csynth.cpp, and a graphical interface that extends this interface into a desktop app, in main.cpp, vertices.h, and colors.h.
-
Obtain the GLAD and GLFW libraries: Generate GLAD Download pre-compiled GLFW binaries
-
Ensure that project is in 32-bit (x86) Mode
-
Link libraries to project:
VC++ Directories:
Include Directories: LocalPath\cui\glad\include LocalPath\cui\glfw-3.4-x86\glfw-3.4.bin.WIN32\include Library Directores: LocalPath\cui\glfw-3.4-x86\glfw-3.4.bin.WIN32\lib-vc2022\glfw3.lib (for lib-vc2022 use your local version)
C/C++
Code Generation Runtime Library If Debug Mode: Multi-Threaded Debug DLL If Release Mode: Multi-Threaded DLL Security Check Disable Security Check
Linker
Input Additional Dependencies LocalPath\cui\glfw-3.4-x86\glfw-3.4.bin.WIN32\lib-vc2022\glfw3.lib (for lib-vc2022 use your local version) opengl32.lib
-
Build app
- Play notes: Press a key on your computer keyboard that corresponds with the key in the interface. You can press multiple at once.
- Change oscillators: Hover or press the drop-down labelled square. Select an oscillator type from the dropdown.
- Change volume: Press the up and down arrows on the screen to increase or decrease the volume of each individual oscillator.
- Change note: Press the up and down arrows on the screen to increment or decrement the pitch of each individual oscillator by one tone.
- Toggle oscillator on/off: Press the on/off switch on top of each oscillator to turn it on or off.
- Change playback octave: Press the left and right arrows around the octave control to move the keyboard up and down an octave.
- Change preset: Hover or press the drop-down labelled preset. Select a preset from the dropdown.
- Change envelope: Click the Env button to change to the envelope tab. This allows you to change attack, decay, sustain, and release (ADSR). a. Drag and drop a vertex to change ADSR fluidly. b. Press the up and down arrows that correspond to each control to change ADSR incrementally.
- [] Fix intense lag when manipulating ADSR
- [] Multiple keybinds: press screen to play note and press computer keyboard to play note
- [] Fullscreen support
- [] Text generation and numerical feedback
- [] Implement detune and LFO controls in interface
- [] Save and load custom presets
- [] Unlimited presets
- [] MIDI compatibility
Synth by One Lone Coder. Used olcNoiseMaker.h and encapsulated the synthesizer functionality into an interface.