After a month or so hiatus i am back to working on Apollo. Right now Apollo has two main features
(1) The Ability to Synthesize Sound
(2) The Ability to Compose Music easily with ASCII Characters
Apollo's main focus is on (2) but I want it to be a piece of code that makes music "all by itself" so using samples of instruments recorded in a studio will only be a side feature, if it ever even gets implemented. The nice part of having all your music synth'd yourself is that for every instrument you can usually easily pre-generate sound waves of different lengths with different notes.
Today I fixed a few bugs:
1. An error calculating the equation for an exponential based envelope (which involved solving the system of equations y1 = ab^(zx1) y2 = ab^(zx2) for a and b where z is a chosen parameter by the user and the two points are the points where you want to draw an exponential curve between.
2. Fixed a bug where I called (apply #'max a-huge-list) . Common Lisp has a limit on the number of arguments you can pass to a function, so the correct way to do what I was trying to do was (reduce #'max a-huge-list)
3. Fixed a performance bug where I was iterating through a list and each time trying to get the nth element using the function nth, which caused the computation to be n^2.
Now I need to add a feature where I create two different types of instruments - ones that have a sustain such as wind instruments vs. those that peak and die off (piano, guitar, drums). The former needs a way to have a variable envelope function.