Re: How to set the bank for the kAudioUnitSubType_MIDISynth AU
Re: How to set the bank for the kAudioUnitSubType_MIDISynth AU
- Subject: Re: How to set the bank for the kAudioUnitSubType_MIDISynth AU
- From: Sven Thoennissen via Coreaudio-api <email@hidden>
- Date: Mon, 14 Oct 2019 11:27:30 +0200
Dear Dmitry,
From my own observations with SoundFonts I have concluded that by convention
bank MSB 128 contains percussive presets. GM Level 1 does not specify a bank
but in a SoundFont you somehow need to separate the melodic presets from
percussive presets.
General MIDI Level 2 introduced banks but SoundFonts historically already used
bank 128 for GM1.
Also there is the technical problem that you cannot send MSB value 128 in a
MIDI CC, as the possible range is 0-127.
So I believe that AUMIDISynth and AUSampler both convert the given GM2 bank to
the appropriate SoundFont bank:
kAUSampler_DefaultPercussionBankMSB = 0x78 -> SF bank 128
kAUSampler_DefaultMelodicBankMSB = 0x79 -> SF bank 0
There may be other SF banks with MSB=128 and varying LSB. Try sending bank LSB
controller (CC#32) with matching numbers according to your SoundFont, while
sending kAUSampler_DefaultPercussionBankMSB as the value for bank MSB (CC#0)
which is then converted by the AU to SF bank 128.
Sven
> Am 14.10.2019 um 10:06 schrieb Dmitry Klochkov via Coreaudio-api
> <email@hidden>:
>
> Ok, I got it working somehow, but still can not fully understand what is
> going on there.
>
> I tried changing the bank number assigned to the drum preset inside the
> soundfont using Polyphone app. The sound bank was set to 128 and I set it to
> 1.
> And then when I tried to load this updated soundfont into the AUMIDISynth I
> got the following error messages:
>
> BankEntry::LoadInstrument: Unable to find patch 0 bank 0x78/0
> EXCEPTION (-10851): "LoadInstrument: Failed to load patch from bank"
> DLS/SF2 bank load failed
>
> So I reverted updated bank number back to 128 and instead of sending a bank
> select message with value 128, I sent it with value 0x78(which is 120 in
> decimal). And voila! She preset loaded!
>
> Also to got the bank selection working I need to update my code so it doesn't
> send bank select using two messages(MSB and LSB) but only sends the provided
> bank value as MSB
>
> MusicDeviceMIDIEvent(instrumentUnit, 0xB0 | channel, 0, bank, 0)
>
>
> So I am wondering is there any meaningful explanation why bank number 128
> became 120 after the soundfont was loaded into AUMIDISynth?
>
>
>
> Best wishes,
> Dmitry
_______________________________________________
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