Skip to content

hvalfangst/rust-synthesizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust Synthesizer with GUI & Audio Effects

Software synthesizer programmed in Rust. Built using rodio for audio playback, minifb for user input handling, and image for sprite rendering. All visual assets are made by me, Hichael, using Aseprite.

Features

Multiple Waveforms: Sine, Square, Triangle, and Sawtooth waves

ADSR Envelope: Full Attack, Decay, Sustain, Release control

Real-time Audio Effects: Delay, Reverb, and Flanger

4-Track Recording: Record and play loops on 4 independent tracks

Interactive GUI: Mouse and keyboard controls for all parameters

Requirements

Cargo dependencies

Running program: Cargo

The shell script 'up' builds and runs our application by executing the following:

1. cargo build
2. cargo run

Running program: x86 executable for Windows

One may also run an executable directly. This has been compiled for target 'x86_64-pc-windows-msvc' utilizing 'cargo build --release'

./synthesizer.exe

Screenshot

screenshot

Synthesizer Key Controls

Musical Notes:

Q: Play musical note C in octave 4 (261.63 Hz)
2: Play musical note C# in octave 4 (277.18 Hz)
W: Play musical note D in octave 4 (293.66 Hz)
3: Play musical note D# in octave 4 (311.13 Hz)
E: Play musical note E in octave 4 (329.63 Hz)
R: Play musical note F in octave 4 (349.23 Hz)
5: Play musical note F# in octave 4 (369.99 Hz)
T: Play musical note G in octave 4 (392.00 Hz)
6: Play musical note G# in octave 4 (415.30 Hz)
Y: Play musical note A in octave 4 (440.00 Hz)
7: Play musical note A# in octave 4 (466.16 Hz)
U: Play musical note B in octave 4 (493.88 Hz)

Octave Control:

F1: Decrease the octave (0 is minimum)
F2: Increase the octave (6 is maximum)

Waveform Control:

S: Toggle waveform between sine, square, triangle, and sawtooth

ADSR Envelope Control:

F3: Decrease Attack (0-99, controls fade-in time)
F4: Increase Attack
F5: Decrease Decay (0-99, controls fade from peak to sustain)
F6: Increase Decay  
F7: Decrease Sustain (0-99, controls held volume level)
F8: Increase Sustain
F9: Decrease Release (0-99, controls fade-out time)
0:  Increase Release

Audio Effects Control:

F10: Toggle Delay Effect (250ms delay with feedback)
F11: Toggle Reverb Effect (Schroeder reverb algorithm)
F12: Toggle Flanger Effect (Modulated delay with LFO)

Track Recording & Playback:

Mouse: Click track name to select track (Lead, Bass, Drums, Pads)
Mouse: Click REC button on any track to record on that track
Mouse: Click PLAY button on any track to toggle individual track playback
Mouse: Click STOP button to halt all audio and recording

Mouse Controls

Piano Keys: Click white keys (C, D, E, F, G, A, B) to play notes

Sharp Keys: Click black keys (C#, D#, F#, G#, A#) for sharp notes

Waveform Display: Click to cycle through waveforms (Sine → Square → Triangle → Sawtooth)

Octave Fader: Click upper half to increase octave, lower half to decrease

ADSR Faders: Click and drag the Attack, Decay, Sustain, Release faders

Effects Buttons: Click DLY, REV, FLG buttons to toggle audio effects

Track Controls: Click track names to select, use individual REC/PLAY/STOP buttons per track

Track Display: Shows 4 tracks with transport controls, loop indicators, and volume levels

About

Software synthesizer programmed in Rust. All sprite assets are made by me using Aseprite.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published