Inspiration
At first, I started by thinking what would be useful for people I am close with, and I came up with Samulnori. Samulnori is a genre of Traditional Korean music that almost every Korean knows. Many of my friends are participating in PennDure, a Samulnori Performing Troupe at Penn, and every time they perform, lots of Korean elders around Pennsylvania area travel from long distances to listen to the music. But the biggest restriction of Samulnori is that the instruments have extremely piercing sound, and that they are hard to carry. I started from there, thinking of a mobile application in which users can play Samulnori. However, looking through the applications in the AppStore, I found out that there exists a lot of mixing tools for Western instruments, but very few exists for the Eastern instruments. If you could loop through all four instruments and record your playings, I thought it would not only be more enjoyable for not only Korean users but also become a nice introduction to Eastern music and Korean Culture for non-Koreans.
What it does
Users can create loops of records with a name, speed, and length of they want. Each loop has audio files of four instruments - Small Gong, Drum, Two Head Drum, and Gong. Users can record their music by clicking a red button at the top right corner of the screen of each instrument. They can listen to the mixed file of all of the recordings in the loop after recording.
How I built it
I used STK library to read raw audio files into the application. After reading in the files, I used TheAmazingAudioEngine library in order to put those sounds into the channel and produce sound. Then, I first built individual instrument objects which act like an actual instrument. After making each instrument, I then created a looper, using TheAmazingAudioEngine library. Lastly, I used EZAudio library in order to draw the wave forms of your recording onto the screen.
Challenges I ran into
Since Swift was introduced only a year ago, all of those libraries that I used were not in Swift. Hardest part of the project that took me most of the time was to use combination of ObjC, Swift, and even C++ in appropriate times and make it work as an one application.
Accomplishments that I'm proud of
I am proud that I could implement simple yet intuitive design. I had hard time deciding which color to use for the instruments. I figured it out by using some of the colors that are called "ObangGanSack," which are eight colors that Koreans had been using often from the past. It includes, white, black, blue, yellow, red, grey, green, and light pink. I am also proud that I could do everything from gathering all the library resources, to implementing the application design by myself.
What I learned
I learned how to organize the procedure of developing project by listing things that I should be implementing. That way, it was easier to track time and my progress. I also learned how to use different libraries in an appropriate places. It was the first time I worked with multiple libraries, and it was hard to decide which library should I use, since there are so many libraries that have similar functions. After failing in using few, I could finally find the one that would work.
What's next for Dangrang
I would implement a feature that allows the users to download the files that they recorded, and share it with other people through Cloud. I also hope to make a tutorial inside an application where users who are not so familiar with Korean Music can learn some Korean beats and basic information about Samulnori.
Built With
- c++
- ezaudio
- objective-c
- stk
- swift
- theamazingaudioengine
Log in or sign up for Devpost to join the conversation.