2010-10-25 3 views
2

Я использую Python вместе с Pygame, который использует pyPortMidi для своего midi-модуля, и в настоящее время я отправляю сообщения NoteOn и NoteOff через Midi Yoke в Ableton live, который отлично работает. Но я не могу понять, как я отправляю сообщения CC.Как отправить сообщения управления изменениями MIDI (CC) с помощью pyPortMidi или pygame?

Кто-нибудь?

Класс (рабочий) в основном выглядит следующим образом.

class MidiIO:   
    def __init__(self, device_id = None, inst=0): 
     pygame.midi.init() 
     pygame.fastevent.init() 

     if device_id is None: 
      self.output_id = pygame.midi.get_default_output_id() 
     else: 
      self.output_id = device_id 

     self._print_device_info() 

     port = self.output_id 

     print ("using output_id :%s:" % port) 

     self.midi_out = pygame.midi.Output(port, 0) 
     self.midi_out.set_instrument(inst) 

     self.pressed = False 

def midiOut(self, btns, note=60, vel=100): 
     if btns == 1: 
      if not self.pressed: 
       self.midi_out.note_on(note, vel) 
       self.pressed = 1 

     elif btns == 0: 
      self.midi_out.note_off(note) 
      self.pressed = 0 

ответ

3

Похоже, что вы бы использовать метод write_short писать сырые MIDI-пакеты, или метод write, если вы хотите отправить несколько из них сразу. Так, например, если вы хотите отправить значение 123 на контроллер 17, который будет выглядеть следующим образом:

self.midi_out.write_short(0xb0, 17, 123) 

Причина вы, вероятно, не заметил этого в документации, что термин «статус» является часто используется в MIDI-протоколе для обозначения типа сообщения (т. е. примечание, заметка, изменение управления и т. д.).

+0

Вот что я в конце концов узнал. Благодаря! –

+0

@MarcusOttosson Если вы что-то понимаете, вам разрешено (и поощрять) возвращаться и публиковать ответ на свой вопрос. – rjmunro

+0

Является ли pyPortMIDI JACK или ALSA? –

0

Если вам также нужен способ отправки NRPNs, кроме CCs, напишите мне сообщение, и я пришлю вам свой код, так как я делаю приложение midi с pygame, которое обменивается данными с MIDI CCs и NRPN.

Кстати, будьте осторожны с этими примечаниями и обратите внимание на сообщения. Некоторые контроллеры synth/midi отправляют одно и то же сообщение о статусе для снятия заметки и отмечают, а другие отправляют diffirent note и отмечают сообщения о состоянии. Вам нужно будет гарантировать, что ваше приложение не будет путать сообщения о статусе. Вам также нужно будет проверить сообщения о состоянии, чтобы убедиться, что это сообщение, а не сообщение CC, или наоборот, иначе вы можете запускать заметки вместо отправки сообщений CC.

То, что я сделал, это сделать простое приложение для приема MIDI-сообщений, которое помогло мне изучить, что содержалось в сообщениях midi и как они сформировались при запуске нот и поворотных ручек на моем синтезаторе Alesis Andromeda A6, используя простые операторы печати.

Кстати, какое приложение вы делаете? Меня очень интересует.

Удачи !!!

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

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