Skip to main content

Posts

Showing posts from December, 2015

Programming an Android DAW: Storage

One of the projects I was interested in creating was a variation of a simple DAW (Digital Audio Workstation) for Android. Of course, DAW's already exist for Android (mostly just desktop DAW's written in C++ ported for Android) and there's the ten millisecond problem in Android. But neither of the which deterred me from attempting such a feat. However, my lack of audio engineering knowledge and the limited resources on the subject certainly are slowing me down.

    Android provides basic classes for implementing audio recording and playback. Though, it's completely limited and inefficient for many more complex use cases. For instance, a complete cycle from record to playback on most devices takes hundreds of milliseconds to complete. Way above the twenty millisecond maximum before our ears can perceive the desynchronization. There are a couple (not well documented) libraries that attempt to fix this and other problems, such as, SuperPowered (C++ library that you nee…

Android sharing and deep linking with Facebook and Google Plus

Introduction     Social integration in an app is a feature that not only provides a more user-friendly experience but also provides a free promotional method. However, many app's fail at properly supporting this feature. To illustrate what I mean, imagine scrolling through your Facebook feed. You see that a friend of yours liked an article and the title seems enticing. You click the link and the app opens up on your device. All ready to read, you patiently wait for the app to finish loading. The app finishes loading only to leave you confused as it doesn't display the article you selected! Instead, it shows a home screen or a loading page or even another article! Infuriated at this horrible experience you're unlikely to use the app again. :(

    Good news! This tragic scenario of user disbandment can be avoided altogether with just a few simply lines of code. Better news! I'm going to provide that code for a basic and common use case. The following tutorial demonstrat…