2015-09-25 7 views
0

Я могу отключить/отключить MIDI-аудио треки с помощью метода MusicTrackSetProperty (t, kSequenceTrackProperty_MuteStatus ...) MusicPlayer. Но я не оборачивался, как включить/отключить определенные MIDI-каналы в треке. Есть ли свойство mute/unmute или disable/enable для каналов в дорожке?Как я могу воспроизвести определенный канал в треке CoreMidi?

Что-то вроде этого сделано на уровне дорожки, или я должен каким-то образом манипулировать MIDI-синтезатором MIDI-синтезатора?

Создание конечной точки не делает мне ничего хорошего, потому что я получаю только копию событий, отправленных на синтезатор, а не обратный вызов, который я могу видеть для фильтрации того, что происходит с синтезатором. Итак, я думаю, что есть что-то, что можно изменить в графике аудио единицы, но что именно?

Кто-то может предложить открыть файл midi с флагом kMusicSequenceLoadSMF_ChannelsToTracks, а затем просто включить звук, соответствующий каналу, и отключить звук остальных. Я попытался это сделать, но на самом деле я получаю/less/tracks при открытии файла midi, но без значка kMusicSequenceLoadSMF_ChannelsToTracks. Странный. Может быть, я должен понять, почему это так, да? Вот то, что у меня есть для midi-файла: 16 треков, каждый из которых содержит 6 каналов midi. Без kMusicSequenceLoadSMF_ChannelsToTracks я получаю 16 треков с флагом kMusicSequenceLoadSMF_ChannelsToTracks, 12. Не должно быть 16 * 6 треков?

Благодарим за помощь. Лучше всего для вас./Jay

ответ

1

Вы на правильном пути. Насколько мне известно, kMusicSequenceLoadSMF_ChannelsToTracks объединит общие каналы. Так что если заданы два трека, содержащие записи из трех каналов каждый, скажем, track1 имеет заметки на каналах 1,2 и 3. И track2 имеет заметки на каналах 3,4 и 5. Затем с помощью kMusicSequenceLoadSMF_ChannelsToTracks флаг будет коалесцировать заметки с использованием канала 3 с трека 1 и трек2 на новый трек. Общее количество дорожек будет 5, используя этот метод. Вероятно, это путь, если вы не сможете доказать обратное. В противном случае, если вам действительно нужно выбирать вещи, конечная точка является действительным подходом. Вам просто нужно отправить MIDI-события вручную, вместо того, чтобы устанавливать соединение (указывая дорожку на синтезатор). В вашем обратном вызове вы должны разбирать миди и вызывать MusicDeviceMIDIEvent для запуска синтезатора напрямую. Вы можете сделать свою фильтрацию там.

+0

Мне нужно идти по маршруту фильтрации, потому что мы отправляем каждый канал на устройство вместе со слухом результатов, устройство ожидает 6 каналов на дорожку. Приятно знать об объединении, хотя, я всегда думал о том, что там происходит. –

 Смежные вопросы

  • Нет связанных вопросов^_^