SynthJacker Retirement

To whom it may concern: I'm retiring my SynthJacker for iOS app, which has been in development since 2019. I need my limited time and energy for other things. Here is a short history to give some context.

Back in 2004, when I was still a Windows user, I had E-MU Emulator X2 with its SynthSwipe feature, where you could make an sample-based instrument just by setting the parameters and letting it run. I was fascinated by the idea, and in 2014 I started to sketch an OS X app that would do the same. There was already Redmatica's Autosampler, which was later acquired by Apple and incorporated into MainStage and then into Logic Pro X. However, other things got in the way, and I didn't get to finalize the Mac app, but back then it was already called SynthJacker.

I had started developing for iOS in 2009, and by 2018 it seemed like a good idea to start a new project: SynthJacker for iOS. I spent a month thinking and mapping out the feature set, and then wrote the first version for the App Store. The response was quite positive, and I had the time and motivation to fix bugs and introduce some new features.

The introduction of sampling AUv3 instruments was a big feature. Some people asked for Inter-App Audio, but since it was already deprecated by Apple, there was really no point adding that. However, you could Bring Your Own Audio File (BYOAD) so that you could drive any recording with a MIDI file made in SynthJacker, and then bring it to SJ for slicing.

Over the years the development slowed down because of other stuff. When you don't do apps full time, there's always something in the way, and not enough hours in the day or week to do all that you would want to do, or indeed need to do.

Because of all these other commitments I've decided to shut down the development of SynthJacker. I need to get rid of the constant nagging in the back of my mind to fix the foundations, to implement new features etc. Also to make it worth all the trouble in terms of sales it would need marketing, and that takes even more time that I just don't have.

SynthJacker is a niche product that fulfills a gap in the iOS music app market, but these days it's not the only one. Apps like Chameleon from 4Pockets and AudioLayer by VirSyn can be used to achieve much of the same, possibly better.

I did have a list of new features planned for SynthJacker. For example, now that DecentSampler has arrived at the scene, it would be great to output DS presets, complete with a user interface. Sending MIDI program changes, automatic generation of synth presets, online sound repository, and so on are some of the things that I had planned, after I could get the foundation fixed.

The thing is, SynthJacker has one fundamental flaw that has caused some headache to users: it records one large file, and then slices it into parts based on timestamps. Sometimes the large file does not get completely written to storage, which causes the rest of the slicing to fail. This happens when you have an absolutely huge sampling job, but of course the app should still cope with it. A better way of doing it would have been exactly how the SynthSwipe feature in Emulator X2: by monitoring the input stream for gaps in the sound. That way the timing would never go wonky. I guess this proves that the design of the software can have pretty far reaching implications down the road.

I have kept a diary of SynthJacker development, and it shows that the total number of hours spent on the app is roughly 500 hours over five years. As a full-time job it wouldn't be a lot, but with a day job and other stuff it's all I could do. Of course there have been other apps and other projects, also taking their time (full-time consulting, then full-time teaching, writing a Python book, that sort of thing). During the pandemic in 2020, in my day job, we shipped a major app for both iOS and Android where the central feature was voice recording. Of course it helped having done SynthJacker on the side, but it didn't help to further SJ development.

So SynthJacker was definitely far from "my first iOS app", and it most likely won't be my last. However, at the time I think it's best for all concerned to put it to rest. I'm not going to take any guesses as to what might come next, but now I just need to deal with all my other commitments, and I don't know when, if ever, I could get back to really working on SynthJacker. It has been left hanging for long enough.

SynthJacker will soon be removed from sale at the App Store. It leaves the stage with an average rating of 4.4 out of 5, which I think is not bad at all. Of course there have been the usual idiots who have left a one-star review without so much as reaching out for help, and the usual refunds (and complaints to me when Apple wouldn't refund, which I have absolutely no control over).

My sincere thanks go to everyone who bought SynthJacker since 2019, and who sent in problem reports. I hope it has been at least somewhat useful to you!

Technical notes for nerds

SynthJacker is written in Swift, tracking the various versions of the language that were released (although compared to the first four years of Swift it was pretty stable). It was the first app I started from scratch with Swift - others were originally in Objective-C, and later converted to Swift. (Just to make it clear, I have been doing Mac programming since 2006 and iOS since 2009, way before Swift.) SynthJacker uses an internal SQLite database internally to store the note sequences.

Some parts of the audio processing are done with AudioKit, but it is a big dependency and would not really be needed now. The MIDI handling is done with MIKMIDI, but that could also be done with standard iOS facilities, or using MIDIKit.

The iPad that I originally got for SynthJacker development is now starting to show its age, and can't run the latest versions of iPadOS anymore. At some point Apple changed the default sampling rate of iOS/iPadOS devices to 48 kHz, which caused a bit of confusion initially, so I got a newer iPad in 2021 just to be able to verify that.

Hmm, what else? Ask me anything. I'm fluent in Swift, Java, Python, Rust, C++ and C#. I've done some Kotlin, Scheme, Haskell and Ada, and a lot of Pascal and Modula-2 (long time ago). I'm a Mac user, with many iOS/iPadOS devices. Linux is a side quest (with Raspberry Pi/Debian and Ubuntu). I use Windows only at work, as the path of least resistance. I can be found at the intersection of liberal arts and technology. I also maintain a website about digital synthesizers at DigitalSynth.net.