Re: iOS CoreAudio MIDISynth music device configuration
Re: iOS CoreAudio MIDISynth music device configuration
- Subject: Re: iOS CoreAudio MIDISynth music device configuration
- From: Bartosz Nowotny <email@hidden>
- Date: Thu, 05 Jul 2018 12:19:42 +0200
I'm using AVAudioSession to configure my audio session and set up preferred
sample rate, buffer size. Other than that, I'm using exclusively the C API
- AUGraph and AudioUnits.
My app *sometimes* needs more than 1 MIDISynth unit running at a time
because some songs require 2 different soundfonts to be loaded
simultaneously. As far as my understanding goes, a MIDISynth unit can only
load a single soundfont. Am I fundamentally mistaken here?
Since my original email, I configured my audio session and all the audio
units to use consistent sample rate so that no resampling has to be done at
any point. The issue still pertains.
The issue is clearly audible when using Yamaha 9ft Grand piano preset from
CompiFONT (http://pphidden.wixsite.com/compifont). This particular
soundfont is really big in size. Since I only need the piano preset, I use
a soundfont that has just that one preset extracted (download:
https://mega.nz/#!nYoz0YxZ!gvwd7hCibvG0_n8xEunSJlBapo9d6VhvLg7uNQFsSrw).
I should also say that this issue is present regardless of the number of
MIDISynth units running - it sounds the same with 1 MIDISynth unit or more.
Moreover, that very same soundfont and bank/preset is used in Android
version of the app where the backing synth is FluidSynth and it sounds
lovely - with polyphony count set to 64!
If it would be helpful, I can record how the piano sounds in my iOS app vs
a synth on Windows or Android.
Regards,
Bartosz
On Thu, Jul 5, 2018 at 4:01 AM, email@hidden <
email@hidden> wrote:
> Are you using the C API or the Objective C API?
>
> Why do you have multiple 16-channel MIDISynth units running? You could
> possibly run out of CPU because they cannot steal voices from each other.
>
> If your MIDISynth code works for one bank but not another, I find it hard
> to imagine it is a configuration issue.
>
> Can you point me to the banks in question?
>
> -DS
>
> > On Jul 3, 2018, at 3:02 PM, Bartosz Nowotny <email@hidden>
> wrote:
> >
> > Hello
> >
> > I need advice on how to properly configure AudioUnits in my MIDISynth
> iOS app.
> >
> > In my code I start by configuring AudioSession: I set the right category
> (playback), preferred sample rate and buffer size and then start the
> session.
> > Next up, I create the graph: multiple synth units
> (kAudioUnitSubType_MIDISynth) -> multichannel mixer -> remote IO.
> > For mixer unit, I configure number of input elements (buses) and maximum
> frames per slice.
> > For synth units, I configure the soundbank URL and maximum frames per
> slice.
> >
> > This set up is enough for my app to successfully produce music by
> sending MIDI note on/off events to specific synth units. For some
> soundfonts, the produced sound is not correct, as if it was distorted.
> Because the soundfonts I'm using are popular and publicly available
> soundfonts, tested on multiple devices and different synths, I'm pretty
> certain the soundfonts are not at fault here. My best guess is that I'm
> missing parts of the configuration:
> >
> > 1. Is any additional configuration required for any of the AudioUnits I
> use? In particular, should I configure synth units output stream format, so
> that for instance, the sample rate matches what is actually used by the
> hardware? Should I also configure stream format for the mixer or IO units?
> How should the stream format configs look like?
> > 2. If I do need to do the above configuration, how should I respond to
> audio session route changes? I noticed, for instance, that plugging in
> headphones changes the hardware output sample rate from 48kHz to 44.1kHz.
> >
> > Regards,
> > Bartosz
> >
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Coreaudio-api mailing list (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> email@hidden
> >
> > This email sent to email@hidden
>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden