Skip to content

Latest commit

 

History

History
64 lines (39 loc) · 1.87 KB

README.md

File metadata and controls

64 lines (39 loc) · 1.87 KB

Build status

SmartSynthizer

SmartSynthizer is an initiative to do low level mathematical interface for music instruments synthesizer

Libraries

it uses MathGL, OpenAL, Glade, RSVG, RtMIDI and GTK4

The piano key buttons are made from SVG only, if you modify the SVG take care of keeping the ID of the tags intact otherwise the buttons will not hightlight

Work In Progress

Please read ChangeLog.txt

Formula Explanation

${key}
pressing 'z' in computer keyboard puts zero '0'
pressing 's' in computer keyboard puts one '1'
and so on

${step} is the value in "Note Offset Math"
${sound} is the value in "Main Sound Math"
${envelop1} is the value in "Envelop1 Math"
${envelop2} is the value in "Envelop2 Math"
${envelop3} is the value in "Envelop3 Math"
${envelop4} is the value in "Envelop4 Math"

All MathGL functions will work,

x -- is the values in x axis
y -- is the values in y axis

current frequency is fixed to 440 for a piano sound
current sound quality is fixed to 44100
current sound duration is fixed to 1 second
the "1.0" in the default formula is for 1 second
current amplification value is given in formula 10000.0 which can be changed via right click copy paste

Usage

The code is ready to execute within msys2, you have install all the libraries using pacman

If you have gradle in path, then invoke gradle as

 gradle assemble

If you have wrapper for linux

 ./gradlew assemble

If you have wrapper for windows

 .\gradlew assemble

Then execute bellow task to start the OpenGL application

 .\gradlew runReleaseExecutableLibgnuplot

The UI will appear with piano buttons

Press you keyboard buttons and enjoy the tones