Great iOS Synths/Developer Kit

Hey guys! I was looking for iOS app development information last night, and came across a project on GitHub, and subsequently found a really great synth, along with a great project I hope to be able to contribute to, and I wanted to let everyone else know about it (if I’m not late to the party already), as well, cuz we’re all synth enthusiasts and some of you also are developers :slight_smile:

It is called AudioKit Pro Digital D1, and it is made from a completely open source SDK called AudioKit (which anyone here looking to get into synth or audio development for iOS should seriously check out) and it looks and functions as good, if not better than most other synths that you might find in the App Store for $30+ (I’m looking at you, Kuh-org, :cow:g, etc.) based on my experience.

It is MIDI, IAA, and AudioBus compatible, analog modeled, like Audulus, and also PCM based (with the capacity for dual layering different sounds). It has some cool sounding presets, a bunch of effects, two filters and envelopes, two amps and envelopes, three LFO’s that can modulate each other, with many other modulation mapping options.

It is also not very expensive at $10, and if you don’t wanna shell out any flow for it, that is also not a problem, as it has two little brother/sister apps - AudioKit Synth One and AudioKit FM Player DX Synth, each for free, and also super capable, considering the $0 price, and the fact that there are no ads or IAP’s.

Check out the website if you wanna learn more about the SDK’s projects or see demos of the apps, and it links to each in the App Store from their site, if you are interested in picking up any of the synths. This is the AK site. I hope some of you will be as stoked to find this as I was! :smile:

5 Likes

Thanks for posting this. I’ve been plowing through CoreAudio and I’ve found it’s a difficult framework to work with. It’s not well documented, written in C, and generally a PITA to use. This looks like it might be a reasonable alternative.

2 Likes

The AudioKit Pro team has gotten a number of world-class programmers and sound designers donating time to create an accessible well-documented multi-platform SDK. There are a couple of videos where they discuss the project. Quite inspirational.

2 Likes

The Digital D1 synth is well worth $10.00 and you are helping to fund the AudioKit project. For those of you interested in playing around with the AudioKit framework, the current build of the pre-compiled binaries is 4.2. I just updated to Xcode 10.2 which includes Swift 5.0 and I had to build from source since the new 5.0 compiler won’t import modules built with 4.2. I went ahead and built a new set of universal binaries using the included script and they seem to work fine.

2 Likes

I think they have set up a “playground” to help one get familiar with the SDK. I looked at it briefly when SynthOne came out (which I think is a a pretty impressive synth despite its being free) and it seemed pretty cool.

1 Like

The playground samples won’t run with Xcode 10.2. I had to build the frameworks from source and replace the .framework files in the playgrounds folder in order to get the playgrounds to work.

1 Like

@stschoen @espiegel123 I’m glad to provide some useful knowledge to the group and also help to spread the word about a great project that allows everyone to share in the goodness by allowing anyone and everyone the ability to use and participate in the project. collective effort makes everything better, imo :wink:

3 Likes

I’ve been having a lot of fun with AudioKit and I’m looking for some suggestions for apps that might compliment Audulus. I’ve considered building a MIDI based sequencer since sequencers are some of the more CPU intensive modules. On iOS You can send MIDI without using IAA or Audiobus, so it could run in the background with Audulus running stand-alone. I’m not sure what features might be desirable. I should be able to send MIDI CC’s as well, so some kind of CC sequencer should also be possible.

2 Likes

Have you checked out Bram Bos’ Rozeta MIDI plugin suite? Works beautifully with AUM. http://ruismaker.com/odessa/

2 Likes

I’m really looking for suggestion for something that would be of particular interest to Audulus users. The AudioKit framework has a pretty complete MIDI package as well as a bunch of audio tools. I’m looking for ideas for a new programming project. I was going to build a MIDI keyboard app for the Mac but there are already some free ones so I would hate to re-invent the wheel.

2 Likes

@stschoen I don’t know if you’re up for a research and API digging project, but I’m willing to bet a LOT of users would be pretty happy if you wrote an IAA app with just a switch or two for settings that would force the system into using the device microphone, much like Garage Band does, when you have Bluetooth audio output enabled.

From my testing and research, the system codec switch to allow (unnecessary, undesired, and annoying) audio input through the headphones, thereby dumping the quality down to a level just this side of a broken speaker playing inside of an old stainless steel trashcan, is the only thing standing in the way of users being able to use Bluetooth output (with most devices) and Audulus together on iPad.

I set out to build this exactly like a week after I discovered the issue I documented and posted about in the forum, but, similar to what you found, the documentation for CoreAudio is severely lacking certain important things that non-veteran programmers of OS X and iOS need to be able to find, and what is left is so hard to track down, and some tracks just lead in circles to nowhere. So, I just gave up. I think that would be super useful and could be used in tandem, but that is just my opinion. Whatever you decide to make, I’m sure it will be impressive; you’re a super intelligent and talented dude :slight_smile:

2 Likes

I saw your original post regarding the codec switch and though it was a good piece of detective work on your part. I don’t know if it’s possible to force a codec switch. GarageBand has the advantage of access to some private APIs that are not available to other apps so it’s possible that the necessary functionality is not exposed. That said it would be worth looking into at least. I found the best way to figure out CoreAudio is to study the header files. As you discovered the online docs are not very complete.

2 Likes

I did some digging this morning and found a way to determine which codec is in use:

I tested the three wireless headphones I have available and discovered that none of them are capable of running AAC. They all default to using the SBC codec regardless of which app is in use. I’m not particularly surprised since they are all cheap headsets. I did note that when running Audulus I still had a stereo feed to the headphones, not mono as you had mentioned in your earlier post. All of my headsets have mics, but Audulus doesn’t seem to force a switch to the SCO codec. I confirmed that the internal mic on the iPad is still active so it would appear that the mic on the headset isn’t getting turned on. BTW Aptx is not available on iOS AFAIK, only on the Mac. In any case since my headphones are running SBC all the time I don’t really have a good way to check the codec switch. It certainly explains why I don’t hear much difference when I open Audulus vs. GB.

2 Likes

BTW I noticed that the new iPad Air still has a physical headphone jack. With an A12 processor and a 60Hz refresh on the display, it’s probably the primo Audulus iPad at the moment.

2 Likes

Something magical seems to have changed!!! I was just testing with both my iPad Air 2 and my iPad Pro 10.5, and neither of them is exhibiting the behavior that I was consistently able to reproduce previously. We may actually be able to use BTLE headsets without crackling (not saying for sure, but) I just tested with both my iPads and a pair of Beats Solo 3 wireless headphones, and I am no longer getting crackles, the codec is AAC, and the sound is not switching to mono when I play polyphonically in even a heavy 50% CPU utilization patch!!! I will get back with more info if this turns out to be a fluke, but after trying to make it break like it did previously for the last hour, everything seems to have been sorted :blush::blush::blush:

2 Likes

It might have been iOS 12. While I was researching the issue, I found that people used to have this issue with Apple EarPods but it was apparently fixed in one of the iOS 11 patch versions. They may have made some additional changes with iOS 12. I did confirm that if I make a call the mike on my headset activates so maybe they changed it so that the headset mic is only active when making or receiving calls.

2 Likes

I won’t question it, I am just super stoked to have the chance to use wireless headphones again! And thanks for getting back to me, as I wouldn’t have thought to test for any changes, if you hadn’t mentioned your outcome :wink:

Oh, also I have been trying to get the playgrounds to run on my Mac for a full day now, and I cannot get a preview of my code in a UI form to show in the right side panel. Have you had any luck with this? I build the framework from source, attempted to use the included Playground env, added the framework files to the separate PG download archive, and I just keep seeing the ‘loading’ wagon wheel spinning, as shown in the pic below. Apparently, this is a super common issue, but nobody seems to have an answer for it. Do you have any tricks up your sleeve?

Oops…I forgot to include the pic lol

1 Like

The playground you currently have open doesn’t have a UI. For the ones that do you need to select the currently running playground from the dropdown to the left of the LiveView at the top of the assistant editor. Apparently the assistant editor doesn’t track the current playground. In your pic you will notice that the live view is pointing at Connecting Nodes. It won’t change if you select a playground with a UI. You will have to select it manually. Try the FM oscillator from the synthesis playground. You need to give it a bit of time after you run the playground to build the UI

2 Likes

The playgrounds that have a UI will subclass AKLiveVIewController and override viewDidLoad() to generate the view.

2 Likes

I wish I understood Xcode better, like I do with Linux based editing and scripting. This whole UI design concept is something I am just figuring out, and I feel like a 3 legged baby giraffe stumbling across the savannah, atm, but I guess even the pros have to learn somewhere, and even they must have started as clueless about feature usage of the env as I currently am.

Thanks for the quick reply, I thought they all had a UI, and I tried all options that seemed logical, to no avail, for obvious reasons lol. As per usual, I appreciate your quick willingness to jump on the ship and help a fellow captain out :slight_smile: I have learned so much more from this forum’s members than any other learning resource I can think of having used or been exposed to! 1000x thanks!

2 Likes