Java Synthesizer Project - Cleric Beast m. 1-36

Publicado 2022-07-18
In the past few weeks, I've been working to redesign and improve my AP Computer Science Principles final project from two years ago, which is a MIDI Synthesizer run through the command prompt.

The previous version:
- Took in user input for the number of parts/instruments playing in the song, the tempo, the number of notes per instrument, the names of the instruments, and then for every instrument, it would take each note's name, octave, and length
- The instrument names would be run through a series of if statements to assign each one its MIDI value
- Each note's name and octave would be sent through a method where each letter would be assigned a number, each octave would be multiplied by 12, a sharp or a flat in the second space would add or subtract 1, and the total value for each note would be its MIDI value and stored in another array
- The tempo, number of instruments, number of notes, array with all MIDI instrument values, and array with all MIDI note values would be sent to the final sequencer to be played back through the command prompt

Some recent improvements:
- Merging the final version I submitted to College Board with a previously discarded draft that allowed for dynamics
- Rewriting the program to read from a file, rather than needing to copy and paste the lines into the program
- Writing macros for use in Notepad that will automatically add spaces to the old format songs, allowing for each note to have a fourth point of data: velocity
- Writing macros that I could choose to run X number of times that would set the chosen dynamic to its corresponding velocity
- Writing a guide for how to write these songs to be run through the program, including screenshots showing octave ranges and velocity values for dynamics

With all the progress made, the program can now play songs much faster after inputting the file name and can play the songs more accurately, and it has become easier to quickly write songs for the program.

Todos los comentarios (1)