Lately I have been putting the C++ rewrite of the sequencer logic a bit on hold and implemented overlap (or seamless) looping into Spitback, the Pure Data patch responsible for playing sounds in Sputter.
As can be seen in the video below, this will make it vastly easier to make looped instrument presets in Sputter.
When will it arrive in Sputter? With the technical solution in place, what’s left is to reorganize the UI to accomodate the new functionality and integrate it into Sputter’s code.
For the last couple of months I have been working on solving some of Sputter’s underlying weaknesses. As described in the previous blog post this involves converting the sequencer and logic code from Java to C++ while incorporating Test Driven Development. This has been going on since summer this year, so what is taking so long time?
C++ is hard(er than Java) Java was designed with focus on simplicity and abstracts away much of what is going on under the hood when running a computer program.
I have a confession to make: The code for audio and sequencer logic in Sputter is really unoptimized. According to the holy grail of audio programming, and a lot of other general optimization advice, pretty much everything is done wrong. This means that it uses more CPU power and battery life than is really needed. Audio latency is also unreasonably long, which is evident when notes are played back as they are inserted in the grid.
Sputter version 1.5.0 has finally been uploaded and released on Google Play.
This release brings a not so exciting but very important feature: Backup functionality. This is very important on the Android platform to mitigate storage access restrictions in later versions of the operating system. These restrictions already led to one user losing all songs.
As a result of this, the global file menu has been reworked and now includes a backup option:
As discussed before highlighting the currently used instrument on a track in Sputter presents some challenges. What if the instrument is tweaked beyond recognition or a different wave is imported or recorded to it? Is the instrument used in the track then the same instrument which is highlighted? And what if a song is shared between two users and the receiving user does not have some of the instruments used in the song?
Because of limited file access in newer versions of Android, songs and instruments in Sputter has to be saved to the app’s internal storage. This means that when the app is uninstalled the user’s files are deleted with it, which of course can be disastrous. It also means that there is no simple way to migrate all your songs and instruments from one device to another.
To mitigate these issues there is now a backup feature in Sputter version 1.
A few days ago one of those highly encouraging one star reviews was posted on Google Play. As usual it did not go into any detail and was more along the lines of “This sucks!”.
Of course one should not take things like this too personal and I am certainly not the only one experiencing incidents like this. All in all Sputter is actually in quite good shape when it comes to ratings.
After experiencing the horror of having a user loose all files, I have been considering ways to reorganize the way Sputter handles saving, exporting and importing songs and instruments. With that horror story in mind it seemed obvious that some kind of backup facilities are needed. In the same run it would also be nice to clean up the file handling UI, which for the time being is a bit all over the place.
Sputter version 1.4.0 has been uploaded and released on Google Play. It brings sample audio recording, which is quite fun to play around with.
What surpises me is that even with the limited quality phone microphone, when using effects and other tweaks to the sound it can actually sound quite good in a song.
Also quite apparent is the need for a method of tuning the recorded samples. Right now it is possible, but admittedly a bit cumbersome.
Sputter 1.4.0-alpha1 has been released to the beta channel in Google Play. The star of the show in this release is sample recording through microphone or other audio input device. I have already had much fun with it on my own, and I am sure many of you will too. The interface is a Snapchat-style recording button with a finite allowed recording duration:
As you probably can spot the wave editor has also been touched up a bit: