It’s hard to let go of things.
After 365 days of work, a modest senior project for school is “finished”. As usual, there’s always more that could be done with this project… and I wish the project could have been more complete by now. At this point it almost doesn’t matter what type of project it was (a simple music generation program) but more that it’s time for a rest.
I’ve learned a lot of things throughout the year, though, like the futility of my plans in life, the emptiness of endless work, the limits of my body under ongoing stress, and the regret for any wasted/misused time this year. Thankful for the lessons (hopefully) learned on the importance of remembering the Sabbath, the importance of right priorities (who am I serving?), and for the Lord’s mercies this year. Time to get back to reality…
There’s something special about programming, though… and building a programming project is like growing a garden: they both take a lot of attention and care. Sometimes programming projects take you away, and some get taken away. This past year has seen both of those directions: a giving and a taking away.
A giving and a taking away.
Summer provided some time to begin working on the initial Android implementation of kanjoto. The following entries are a step-by-step look at how this implementation was created and where this implementation is headed.
- Wireframes Drawn
- Framework Created
- Code Reviewed
- kanjoto Logic Added
- Project Demoed and Presented
Went back to a previously-found project that helps with generating MIDI on Android: android-midi-lib. This is a really easy-to-use library (albeit with code-only documentation) that makes it easy to generate MIDI on Android.
I ended up trying out one of the examples included with the android-midi-lib project in a new Android application called Generate. This application then generated a simple MIDI file that could then be read by my earlier-created prototype of a MIDI playback application.
Found a nice article on generating MIDI files in Java (while not using the Java Sound API, which does not appear to be included with Android) at this link:
Generating simple MIDI files using Java, without using the Java Sound API
From that article, I began to learn about:
- MIDI file format
- in MIDI, notes are not specified by duration but by their on/off times
Found a way to play back MIDI files by using MediaPlayer class based off of this tutorial:
A simple exercise to play MIDI audio using MediaPlayer
And that tutorial was found via the breadcrumbs from this Stack Overflow post:
How to play changing midi on Android – jetPlayer
where a user named @dorien was previously asking about similar MIDI playback functionality (and evidently went on to create an Android application that generates counterpoint-focused music.) The paper on this app creation process can be found here:
So at this point I am able to play back pre-generated MIDI files in a basic Android app, and have created a prototype Android application named Playback.