Sputter version 1.5.1 is now available on Google Play.
As the version number implies this is in no way a major release. However, it does contain some under the hood changes which paves way for the new sequencer backend written in C++.
Still, there are some changes you might find useful:
Logarithmic filter cutoff frequencies
Position lock now locks at playing position, not currently viewed position
Improved audio performance
Upgraded to latest version of LibGDX, the graphics library powering Sputter’s GUI
A few minor bug fixes
Logarithmic cutoff frequencies was proposed by a user and is a surprisingly big improvement. As it were, the cutoff frequency would sound too sensitive at one end of the slider and very unresponsive in the rest of the range. The sliders now feel more evenly distributed and it is way easier to dial in the setting you want.
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. At this time I am not 100% sure wether to prioritize this or continuing work on the C++ rewrite. Another great improvement could be to have seperate waveforms for each octave, or possibly ranges of notes, instead of just one as it currently stands. This would be highly beneficial for many types of instruments, for example piano.
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. C++ on the other hand exposes the “bare metal” in order to make specific optimizations and memory management possible. In other words, C++ is more suited in situations where performance is a requirement. This also makes programming in C++ more like walking on a razor’s edge. Here are some examples:
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? In that case there would not be any highlighted and active instrument on some of the tracks.
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.5.0-alpha2 which should now be available in the beta channel on Google Play.
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!”.
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. One user had an interesting proposal and even made this mockup: