steve-wang-coding

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
steve-wang-coding [2024/06/16 23:29] steve.wangsteve-wang-coding [2024/06/23 02:36] (current) steve.wang
Line 4: Line 4:
  
 Originally, the main method to add information into Konduktiva was to manipulate the information directly. However, when I just started using Konduktiva, I often got confused and ended up not being able to play any sound. So, while working on my first task integrating MIDI into Konduktiva, I created a way for myself to be able to get the same setup every time for testing and be able to learn more from a working setup. Eventually I was able to get a set of useful action functions that users can use easily to control different parts of MIDI like Control Change messages and program change messages. To make the system easier for users, I started adding features that I would find useful. These include, helper functions to identify MIDI inputs and outputs, verbosity to give myself a clean environment to work with, type checking functions, worker helper functions, etc. Eventually, I found myself needing to add more QuantizedMaps to the MusicalEnvironment and constantly made mistakes. This was when Dr.Bell suggested the addMap method which I have implemented. Some of the other things which I have added at Dr.Bell request are, recording and playing back MIDI, saving the MusicalEnvironment, user friendly features + API and, code packaging. Eventually, we got to the point where we have added all the features we wanted to add for this version and it was time to write some documentation which went on the [[https://konduktiva.org/|Konduktiva website]]. The packaged code went on [[https://github.com/renickbell/konduktiva|Github]] and [[https://www.npmjs.com/package/konduktiva|NPM]]. Then we wrote the paper. INSERT PDF HERE. Originally, the main method to add information into Konduktiva was to manipulate the information directly. However, when I just started using Konduktiva, I often got confused and ended up not being able to play any sound. So, while working on my first task integrating MIDI into Konduktiva, I created a way for myself to be able to get the same setup every time for testing and be able to learn more from a working setup. Eventually I was able to get a set of useful action functions that users can use easily to control different parts of MIDI like Control Change messages and program change messages. To make the system easier for users, I started adding features that I would find useful. These include, helper functions to identify MIDI inputs and outputs, verbosity to give myself a clean environment to work with, type checking functions, worker helper functions, etc. Eventually, I found myself needing to add more QuantizedMaps to the MusicalEnvironment and constantly made mistakes. This was when Dr.Bell suggested the addMap method which I have implemented. Some of the other things which I have added at Dr.Bell request are, recording and playing back MIDI, saving the MusicalEnvironment, user friendly features + API and, code packaging. Eventually, we got to the point where we have added all the features we wanted to add for this version and it was time to write some documentation which went on the [[https://konduktiva.org/|Konduktiva website]]. The packaged code went on [[https://github.com/renickbell/konduktiva|Github]] and [[https://www.npmjs.com/package/konduktiva|NPM]]. Then we wrote the paper. INSERT PDF HERE.
 +
 +The documentation part was difficult for me to write because I am not the best at communication and I find writing documentation quite dull. Even so, I persisted and wrote most of the documentation you will see on the [[https://konduktiva.org/|Konduktiva website]]. Partly, most of those features had to do with the parts I had worked on. Furthermore, I had also developed some tools to help users setup their Konduktiva development environment like the [[https://konduktiva.org/doku.php?id=vim-tmux-setup|automatic TMUX+VIM setup tools]].
 +
 +One of the things I found the most difficult was the music part of the system. I am not well studied in the field of music and even the not so musical part of the system required some musical knowledge. Furthermore, I was also quite bad at music in general. In other words, I lacked domain knowledge and was quite bad at the things in this domain. This caused communication errors and sometimes ended up writing out things that were not right or were unintended. Most of the time, that caused a lot of time to be wasted. However, through this issues, I gained valuable experience about how to more effective learn the knowledge needed for programming in a new domain. Another issue that caused quite a bit of time was what the team now calls the timing bug. It was found that sometimes the system would grab the wrong note and mistake that as the note to be played. The fact that this bug did not happen all the time made it hard to pin down a pattern or an area to search for. Eventually, it was found that the bug was caused by the time variable was about 1 beat off from the actual beat. The location of the bug being quite upstream and no clear pattern could be pinned down made it extremely difficult for a team to find.
  
 The next steps for me will be writing some code that will allow smooth and gradual transitions between music. In more technical terms, figuring out how to gradually and smoothly transition an array of numbers to a final state. That would mean figuring out a way to quantify how different two number arrays are and how to gradually transition arrays without feeling slow or sudden.  To prepare for this I have been reading Artificial intelligence: a modern approach by Russell Stuart J and Norvig Peter.  The next steps for me will be writing some code that will allow smooth and gradual transitions between music. In more technical terms, figuring out how to gradually and smoothly transition an array of numbers to a final state. That would mean figuring out a way to quantify how different two number arrays are and how to gradually transition arrays without feeling slow or sudden.  To prepare for this I have been reading Artificial intelligence: a modern approach by Russell Stuart J and Norvig Peter. 
  
 Furthermore, I have been making other improvements to Kondutkiva. Recently, I have been experimenting with improvements to the scheduler to make it more accurate. I have also been adding more methods to QuantizedMap class to make it more useful. Furthermore, I have been making other improvements to Kondutkiva. Recently, I have been experimenting with improvements to the scheduler to make it more accurate. I have also been adding more methods to QuantizedMap class to make it more useful.
 +
 +You can learn more about me from my about page [[steve-wang|here on this wiki]]
 +
  • steve-wang-coding.1718605766.txt.gz
  • Last modified: 2024/06/16 23:29
  • by steve.wang