My main research this week was looking at the different programming languages I specified last week and learning a bit about them. Since I already knew a decent amount of Java and C++, there wasn’t much to look into with them other than sound and MIDI libraries. If I were to pick between the two, I think I would pick C++, as I found a lot of useful C++ MIDI/sound libraries for my purposes.
The main language I worked with was Nyquist, due to the main textbook in my research field utilizing it. I found that the biggest upside with Nyquist was that making sound with it was very simple. Nyquist allowed me to define instruments in the code and directly make sound with them. However, in terms of coding the algorithm, I feel that a different language personally may be a bit easier for me to use.
One language I didn’t initially list that I think could be useful is Python. Python is becoming a very popular language nowadays, and like C++, it has a lot of useful libraries available.
In addition to checking out programming languages, I learned a little more about neural networks. I had previously learned a little bit about them, but I think using them in my code would be very useful in making the end result more accurate. I would use them as sort of an extension to my original plan using Markov chains.
Basically, the program would compose a few songs, and human input would give feedback on how accurately the song depicts the end goal. For example, on a scale of 1-10, I could say a song composed by the program is a 7 (10 being the most accurate, 1 being very inaccurate), another would be a 3, etc. The program would use this data to find the patterns that make a certain song “accurate”, and therefore be able to compose songs more intelligently. I was able to find a Python library for this purpose.