Forum: PC-Programmierung Schnittstelle zum MIDI-Controller auf dem PC


von Mark M. (mom-jovi)


Lesenswert?

Ich möchte ein Drumpad mit nicht nur einem Ton belegen, sondern mit 
einer Sequenz. Das bedeutet, dass nach jedem Ton das MIDI-Routing 
verändert werden müsste. Im Endeffekt kann man dann eine Melodie mit nur 
einem Trigger-Element (das Drumpad) spielen und gibt den Rhythmus dabei 
selbst vor, während die Tonfolge fix ist.

Ich bin mir nicht mal sicher, ob es professionelle Hardware für dieses 
Problem gibt. Wahrscheinlich bin ich der einzige, der sowas braucht, 
denn bei Thomann konnten sie mir nicht wirklich weiterhelfen.
Ich kenne eine ähnliche Funktion aber von YAMAHA Keyboards mit 
Lernfunktion: Dort sind Melodien programmiert, aber jeder Ton muss vom 
Spieler getriggert werden.
Aber selbst wenn es sowas zu kaufen gibt, dann wird das 
Preisleistungsverhältnis nicht passen. Das DrumKAT kann das glaub ich, 
ist aber erstens teuer und begrenzt in der Länge der Tonsequenz.

Deswegen hab ich mir überlegt, was zu basteln, was halbwegs zuverlässig
sein sollte:
Gibt es eine einfache Möglichkeit, den MIDI-Controller auf dem PC via 
Python o. ä. anzusteuern? Dann wäre es relativ einfach. In einem Skript 
wird die Tonfolge als Liste hinterlegt und Ton für Ton an den 
MIDI-Controller gesendet. Der Trigger kommt von extern über ein 
MIDI-Drumpad, dass bei jedem Schlag den gleichen Befehl sendet.

von Borislav B. (boris_b)


Lesenswert?

Würde man das nicht eigentlich in der Software auf dem PC machen?
Also dort eine Melodie als Track hinterlegen, und diese mit einem 
bestimmten Midi-Command triggern?

So mache ich das (als voll-Noob) das: etliche Tracks sind in Ableton 
Live hinterlegt. Mit einer selber geschriebenen iPad-App werden diese 
dann getriggert.

Funktioniert so weit ganz gut ;-)

von Mark M. (mom-jovi)


Lesenswert?

Boris P. schrieb:
> Würde man das nicht eigentlich in der Software auf dem PC machen?
> Also dort eine Melodie als Track hinterlegen, und diese mit einem
> bestimmten Midi-Command triggern?

Ja genau. Aber in meinem Fall besteht ein Track aus genau einem Ton. Das 
Problem ist, dass ich damit Glockenspiel im Orchester machen möchte und 
es extrem schwierig ist, bei einem Orchesterstück mit Tempowechseln ein 
Backing mit Click-Track zu machen - da dann möglichst alle den Click im 
Ohr brauchen...deswegen muss jeder Ton einzeln getriggert werden können.

von ThomasG (Gast)


Lesenswert?

Hallöchen !

Versteh ich das Richtig. Du willst z.B. bei jedem Anschlag auf EIN Pad, 
eine andere Note spielen ?? Meinetwegen C-Dur-Tonleiter einmal durch und 
dann wieder von vorn??
Na gut, bissel seltsame Art Musik zu spielen ;-)
Vor allen Dingen bei 3-4 Pads muß man sich ja dann immer merken auf 
welcher Note das Pad grade „steht“
Warum spielst du es nicht selber ? Also pro Note ein Pad ? Oder mußt du 
über 5 Oktaven spielen können ? Also ich würde Drum-Controller und pro 
Ton ein Pad... notfalls Piezo-Elemente und selber basteln falls Pads zu 
teuer anderenfalls ein altes Midi-Keyboard schlachten und die Tasten 
umbasteln, daß du ein paar hängende Trigger hast, die du anschlagen 
kannst ? Das sollte für die Tonanzahl dann doch sicher reichen.

Da du es per Software und nur mit einem Pad machen willst.... und 
scheinbar Linux installiert ist ???
Ich hab Ubuntu-Studio auf'm PC. Da gibt’s ein Progrämmchen „GMIDI 
Monitor“ damit kannst du dir die Midi-Messages anzeigen lassen.... eben 
mal ausprobiert.
Mit Qjack Ctl mein Midi-Eingang am PC mit „GMIDI Monitor“ verbunden und 
ich konnte die Midi-Signale vom Drumset mitlesen.
Vielleicht hilft dir das schonmal bei der Datenverarbeitung, -eingabe. 
Dann mußt nur noch ne Möglichkeit basteln die dir den Notenwert pro 
Anschlag ändert und „irgendwie“ an deinen Software- Hardwaresynth 
schicken.

Nächste Möglichkeit wäre wenn wirklich nur EIN Pad. Kleinen 
Microcontroller.... Pad anschließen und deine Noten im Controller 
speichern, auf SD-Karte, EEPROM oder sonst wo. Dann kannst auch mehrere 
Melodien/Notenfolgen ablegen und vielleicht mit Schalter auswählen. 
Schaltung ist dann dein Midi-Controller der dir immer einen anderen 
Notenwert via Midi an den PC/Synth schickt. Kommt halt drauf an, wie oft 
die Melodie geändert werden soll wenn öfter ist das halt immer Arbeit.

Gruß: Thomas

von Elektrotechniker im Urlaub (Gast)


Lesenswert?

Mark M. schrieb:
> Ich bin mir nicht mal sicher, ob es professionelle Hardware für dieses
> Problem gibt.
Das kann eigentlich jeder programmierbare Sequenzer wie z.B. der SY99. 
Mit dem mache ich das wenigstens. Ferner können es die E-mu Rack-Geräte, 
welche Patterns hintereinnaderhängen können. Da kannst Du ganze Lieder 
mit einem MIDI-Start abspielen, in jeweils dem eingestellten Tempo der 
eingehenden MIDI-clock. Wenn Du eigene MIDI-patterns verwenden willst, 
musstest Du allerdings das ROM patchen.

> Wahrscheinlich bin ich der einzige, der sowas braucht,
nö, jeder live DJ der mit MIDI arbeitet(e) braucht(e) das.
War in der Trance Szene eine zeitlang üblich mit MIDI Squenzern zu 
arbeiten, weil die sich leichter timen und progrmamieren liessen. Heute 
ist wieder Audio / WAVE angesagt, seit die Computer in Echtzeit 
resampeln und loopen können.

> denn bei Thomann konnten sie mir nicht wirklich weiterhelfen.
ach was. Sag blos. Im Baumarkt der Musikgeschäfte würde ich nicht soviel 
erwarten. Geh mal in den Music Store nach Köln oder zu MP nach 
Ibbenbürem

> Ich kenne eine ähnliche Funktion aber von YAMAHA Keyboards mit
> Lernfunktion: Dort sind Melodien programmiert, aber jeder Ton muss vom
> Spieler getriggert werden.
Das gibt es auch bei 25 Jahren alten Casios schon :-)

> Aber selbst wenn es sowas zu kaufen gibt, dann wird das
> Preisleistungsverhältnis nicht passen.
Tja dann



> den MIDI-Controller auf dem PC via  Python
welchen MIDI-Controller? Ich denke, du willst mit einem MIDI Controller 
oder dem PC die MIDI Sequenzen abarbeiten. Entweder ghet es über PC / 
Taste über die Soundkarte oder ein USB-MIDI Interface, also extern aufs 
device oder du triggerst einen MIDI Player intern, wie Cubase oder 
Reaktor.

von Mark M. (mom-jovi)


Lesenswert?

Elektrotechniker im Urlaub schrieb:
>> den MIDI-Controller auf dem PC via  Python
> welchen MIDI-Controller? Ich denke, du willst mit einem MIDI Controller
> oder dem PC die MIDI Sequenzen abarbeiten. Entweder ghet es über PC /
> Taste über die Soundkarte oder ein USB-MIDI Interface, also extern aufs
> device oder du triggerst einen MIDI Player intern, wie Cubase oder
> Reaktor.
Mit MIDI-Controller meinte ich den Teil der Soundkarte, der MIDI 
versteht, also sendet und empfängt.

Ich habe das Open Source Projekt "Portmidi" gefunden: 
http://portmedia.sourceforge.net/portmidi/
Kennt das jemand?

Nach ein paar Anpassungen hab ich es auch zum Laufen gekriegt.
Das Ton-für-Ton-Triggern funktioniert wunderbar! Man muss nicht mal die 
Input-Nachrichten filtern, da mein Drumpad nur bei einem Schlag sendet.
Allerdings ist die Latenz leider hörbar. Ich habe sie nicht gemessen, 
aber sie liegt mit Sicherheit bei 100ms. Eher mehr, denn bei 100bpm muss 
ich etwa ein 16tel vorher anschlagen. Das wären 150ms.

Ich bin mir allerdings nicht sicher, ob die Latenz in Portmidi oder in 
meiner Hardware entsteht. Ich nutze ein io2 von Alesis (USB to MIDI 
Interface) als Eingang und die Standard Microsoft Wavetable als Ausgang.

Hat jemand Erfahrung mit der Performance dieser Hardware?

: Bearbeitet durch User
von ./. (Gast)


Lesenswert?

> ob die Latenz in Portmidi oder in meiner Hardware entsteht.

Standard Microsoft Wavetable [x]

von Hobbymusiker (Gast)


Lesenswert?

Mark M. schrieb:
> Eher mehr, denn bei 100bpm muss
> ich etwa ein 16tel vorher anschlagen. Das wären 150ms.
Wie hast Du das denn gerechnet?

Ich fasse nochmal Dein Setup zusammen:
Du gehst vom Drumpad über das Alesis UBS INF in den Rechner und von dort 
über PortMIDI in den Wavetable-Synthesizer?

Ich würde sagen, der Zeitversatz dürfte irgendwo vom MIDI Interface 
kommen.

von Mark M. (mom-jovi)


Lesenswert?

./. schrieb:
>> ob die Latenz in Portmidi oder in meiner Hardware entsteht.
> Standard Microsoft Wavetable [x]
Es wäre wunderbar, wenn es daher käme! :-)

Hobbymusiker schrieb:
> Mark M. schrieb:
>> Eher mehr, denn bei 100bpm muss
>> ich etwa ein 16tel vorher anschlagen. Das wären 150ms.
> Wie hast Du das denn gerechnet?
100bpm heißt 100 Viertelnoten pro Minute, also 400 Sechzehntelnoten. 60 
Sekunden geteilt durch 400 gibt 150ms pro Sechzehntelnote. Also ist das 
das Delay.

Hobbymusiker schrieb:
> Ich fasse nochmal Dein Setup zusammen:
> Du gehst vom Drumpad über das Alesis UBS INF in den Rechner und von dort
> über PortMIDI in den Wavetable-Synthesizer?
Ja.

Hobbymusiker schrieb:
> Ich würde sagen, der Zeitversatz dürfte irgendwo vom MIDI Interface
> kommen.
Ich finde es nur etwas eigenartig, wenn das so ist. Das würde heißen, 
dass es schier unmöglich ist, mit PC MIDI-Sounds Live-Musik zu machen. 
Vom Alesis sollte die riesen Verzögerung nicht kommen, da das 
schließlich ein (halbwegs) Profiteil ist.
Ich habe noch keinen anderen Synthesizer als den PC-internen MS 
Wavetable. Das Alesis hat nen MIDI-Out, kann nur keine eigenen Sounds 
erzeugen. Aber ich könnte da mal mein Keyboard dranhängen, das hat nen 
MIDI In...

von ./. (Gast)


Lesenswert?

Der Yamaha S-YXG50 bringt es auf 360 ms.

(Auch ein Softsynth...)

von Mark M. (mom-jovi)


Lesenswert?


von Mark M. (mom-jovi)


Lesenswert?

./. schrieb:
>> ob die Latenz in Portmidi oder in meiner Hardware entsteht.
>
> Standard Microsoft Wavetable [x]

Das wars! Jetzt läuft es. :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.