Frage

Ich verwende Python zusammen mit Pygame die pyPortMidi verwendet für MIDI-Moduls, und ich bin derzeit NoteOn und NoteOff Nachrichten über Midi Yoke zu Ableton Live zu senden, die große Werke. Aber ich kann nicht scheinen, um herauszufinden, wie ich CC-Nachrichten ..

senden

Wer?

Die (Arbeits-) Klasse sieht grundsätzlich wie folgt.

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
War es hilfreich?

Lösung

Es sieht aus wie Sie die write_short Methode verwenden würden rohe MIDI-Pakete oder die write Methode zu schreiben, wenn Sie mehrere von ihnen senden möchten. So zum Beispiel, wenn Sie den Wert 123 auf Controller 17 gesendet werden sollen, dass würde wie folgt aussehen:

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

Der Grund, warum Sie dies wahrscheinlich nicht in der Dokumentation zu bemerken ist, dass der Begriff „Status“ oft im MIDI-Protokoll verwendet wird, um den Nachrichtentyp zu verweisen (dh Hinweis auf, Note-Off, Steueränderung, etc.) .

Andere Tipps

Wenn Sie auch eine Möglichkeit brauchen NRPNs zu senden, zusätzlich zu CCs, schreiben Sie mir eine Nachricht und ich werde Sie meinen Code senden, da ich ein Midi-App mit pygame mache, die sowohl mit MIDI CCs und NRPNs in Verbindung steht.

Durch die Art und Weise mit diesem Hinweis auf und Note-Off-Meldungen vorsichtig sein. Einige Synth / MIDI-Controller senden, um die gleiche Statusmeldung für eine Notiz aus und beachten Sie aus, während andere Diffirent Note-Off und Hinweis auf Statusmeldungen senden. Sie müssen sichern, dass Ihre App nicht durch die Statusmeldungen verwechselt wird. Sie haben auch die Statusmeldungen zu überprüfen, so sicher zu stellen, dass es sich um eine Nachricht und nicht eine CC-Nachricht oder umgekehrt, oder sonst könnten Sie Notizen auslösen statt CC-Nachrichten zu senden.

Was ich tat, war eine einfache MIDI-Empfangs pygame App zu machen, die mir geholfen zu studieren, was die MIDI-Nachrichten enthalten sind und wie sie gebildet wird, während Noten triggern und Knöpfe auf meinem Alesis Andromeda A6 Synthesizer drehen, einfacher Druck-Anweisungen.

Durch die Art und Weise, welche Art von Anwendung, die Sie machen? Ich bin sehr Interessent.

Viel Glück !!!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top