Git Product home page Git Product logo

rust-synthesizer's Introduction

Rust Synthesizer with GUI

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

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)

Filter Control:

F:  Turn low pass filter on/off     
F3: Decrease the filter cutoff (0.15 is minimum)
F4: Increase the filter cutoff (0.99 is maximum)

Waveform Control:

S: Toggle waveform between sine and square

rust-synthesizer's People

Contributors

hvalfangst avatar

Stargazers

 avatar  avatar

Watchers

 avatar

rust-synthesizer's Issues

Improve assets

The current GUI logic is fine, but the assets are absolutely horseshit as they made in MS paint.

Implement noize

Hihats, clap & kick by utilizing a random function on a base sine transposed down

Implement support for polyphony

The current synthesizer is monophonic. That is, it only supports one note a time and thus renders chords impossible. Gooby plx implement

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.