J'essaie d'utiliser CoreAudio/AudioToolbox pour lire plusieurs fichiers MIDI en utilisant différents nœuds MIDISynth. J'ai les samplers câblés dans un MultiChanelMixer qui est à son tour câblé dans l'unité IO. Je veux pouvoir changer les différents volumes d'entrée indépendamment les uns des autres. Je tentais cela avec cette ligne:Impossible de régler le volume d'entrée du bus MultiChanelMixer AudioUnit
AudioUnitSetParameter(mixerUnit, kMultiChannelMixerParam_Volume, kAudioUnitScope_Input, UInt32(trackIndex), volume, 0)
Le problème est que l'ajustement trackIndex
0 ajuste chaque entrée entrant dans le mélangeur, pas seulement un bus comme je me attends à.
Voici la sortie de CAShow
du graphique maître
AudioUnitGraph 0xC590003:
Member Nodes:
node 1: 'auou' 'rioc' 'appl', instance 0x60000002d580 O I
node 2: 'aumx' 'mcmx' 'appl', instance 0x60000002d680 O I
node 3: 'aumu' 'msyn' 'appl', instance 0x60000002db60 O I
node 4: 'aumu' 'msyn' 'appl', instance 0x60000002ef20 O I
node 5: 'aumu' 'msyn' 'appl', instance 0x60000002df00 O I
node 6: 'aumu' 'msyn' 'appl', instance 0x60800022d820 O I
Connections:
node 2 bus 0 => node 1 bus 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
node 3 bus 0 => node 2 bus 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
node 4 bus 0 => node 2 bus 1 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
node 5 bus 0 => node 2 bus 2 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
node 6 bus 0 => node 2 bus 3 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
CurrentState:
mLastUpdateError=0, eventsToProcess=F, isInitialized=T, isRunning=T (2)
Voici la classe que j'ai écrit pour contrôler tout cela: https://gist.github.com/jadar/26d9625c875ce91dd2ad0ad63dfd8f80
Le seul endroit où je vois que vous utilisez kMultiChannelMixerParam_Volume dans votre classe est avec kAudioUnitScope_Input. En plus de régler le volume de chaque échantillonneur sur le mélangeur, vous pouvez définir la sortie du mélangeur dans son ensemble en utilisant kAudioUnitScope_Output. –