Forum: Mikrocontroller und Digitale Elektronik Midi Clock an PC senden


von Michael (Gast)


Lesenswert?

Hey!

ich würde gern mit einem AVR ein Midiclock Signal (welches über ein Poti 
eingestellt wird) an den PC senden.
Da ich jeden Beat und jeden 96tel Teil ein Signal schicken muss sollte 
das so aussehen:

150bpm (maximal) --> 2,5 Beats pro Sekunde --> mal 96 Anschläge pro 
Beat: 240 Anschläge pro Sekunde --> aller 4,16ms ein Byte zu übertragen.

Das sollte soweit machbar sein mit einem AVR (hoffe ich). Allerdings 
weiß ich nicht welche Schnittstelle ich am PC verwenden soll. Wollte 
gern USB, allerdings ist der Pollintervall für LowSpeed Devices ja schon 
bei 10ms. Fällt also raus.

Wie ist die Latenzzeit bei anderen Schnittstellen?
Eine Latenzzeit wäre ja wahrscheinlich auch nicht so schlimm, allerdings 
sollte sie relativ konstant bleiben damit man damit arbeiten kann.

Wie sieht es mit RS232 aus? Wie groß und wie konstant ist die 
Verzögerung an dieser Schnittstelle?

Danke schonmal!

Bye

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wie groß und wie konstant ist die Verzögerung an dieser Schnittstelle?
Welches Betriebssystem?
Falls du Windows willst, wirst du ohne tiefergehende Programmierung 
keinerlei sinvolle und reproduzierbare Genauigkeit hinbekommen. Nicht, 
dass eine Auflösung von 1ms nicht möglich wäre, aber auf der Ebene, die 
dir die "üblichen" Tools bieten, ist Echtzeit ein schnöder 
Wunschtraum... :-(

Mal ganz davon abgesehen, dass die Midi-Baudrate nicht zu den 
gebräuchlichen Übertragungsraten im PC-Bereich gehört, und es dir schon 
schwerfallen könnte, diese Baudrate überhaupt einzustellen.

von Michael (Gast)


Lesenswert?

Also wäre es eventuell einfacher das Timing durch den Rechner machen zu 
lassen, und nur per Schnittstelle den aktuellen Timerwert übergeben zu 
lassen. (Der ändert sich ja nicht so schnell und so sprunghaft)

Habe gelesen das es einen VB Timer gibt, welcher bis auf einen Bruchteil 
einer Millisekunde genau arbeitet.

Das sollte dann reichen, oder was meint ihr?

von Skua C. (skua)


Lesenswert?

Wofür soll das gut sein?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Allerdings weiß ich nicht welche Schnittstelle ich am PC verwenden soll

Na wie wär´s denn mit der MIDI-Schnittstelle?! Wenn Dein PC keine (mehr) 
hat, die sich gemeinhin am Gameport der Soundkarte befindet, kannst Du 
einen MIDI <-> USB Wandler käuflich erwerben, zum Beispiel von EMU für 
etwa 40 EUR.

von Stefan C. (jaecko)


Lesenswert?

Wobei diese Midi-Wandler bei mir nur Stress machen. Hatte bisher 2 
verschiedene (auch an verschiedenen PCs versucht). Überall war es so, 
dass dort untolerierbare Laufzeiten drin waren.

Bei Midi-Out, d.h. vom PC zum Instrument gings, wenn ausser diesem 
Instrument nichts anderes (weiteres Instrument, Sounds per Soundkarte) 
gespielt wurde.

Einspielen von Tönen (Instrument => PC) geht garnicht brauchbar; wenn 
eine Taste gedrückt wird, dann kommt der Ton erst so nach ca. >200ms 
beim PC an.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Bei meinem E-MU Xmidi 2x2 geht das wunderbar mit nicht spürbarer Latenz. 
Am besten sind natürlich echte MIDI-Schnittstellen, gerade wenn man 
etwas damit synchronisieren will.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Habe gelesen das es einen VB Timer gibt, welcher bis auf einen Bruchteil
> einer Millisekunde genau arbeitet.
> Das sollte dann reichen, oder was meint ihr?
Wenn du dann nur mal die Maus bewegst -->   :-(

Ich zitiere mich nochmal:
>> Falls du Windows willst, wirst du ohne tiefergehende Programmierung
>> keinerlei sinvolle und reproduzierbare Genauigkeit hinbekommen.
VB gilt für mich nicht als tiefergehend.

Ich habe hier mit diversen Chipsätzen und Bios-sen gekämpft, und 
herausgefunden, dass dir bei gleichem Chipsatz sogar schon das Bios 
ansehnlichen Jitter bringen kann.
Wenn du z.B. einen USB-Stick einsteckst, laufen da einige DMA-Transfers 
ab, die bei ungünstiger Bios-Programmierung ohne weiteres 500us Jitter 
bringen können. Bei mir hat da nur noch die zeitweise Abschaltung des 
PCI-Arbiters geholfen.


EDIT:
Auch mein Emagic MT4 USB-MIDI-Interface macht das ganz erträglich gut,
aber ich denke, das ist nicht in VB programmiert ;-)

von Stefan C. (jaecko)


Lesenswert?

Travel Rec. wrote:
> ... E-MU Xmidi 2x2 ...

Ich hab den 1x1... anscheinend stimmt dann irgendwo was mit der Software 
nicht. Oder läuft das Teil nur unter Nicht-Win98-SE vernünftig?
(WinXP geht leider nicht, da die Sampling-Software dort nicht mehr will)

Das davor war irgend so ne Chinagurke, da ging garnix bzw. die Zeiten 
waren random.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gut, mein E-MU XMIDI läuft unter XP, mit den XP-eigenen Treibern für 
USB-MIDI Devices. Welches Wiedergabemodul für Deine MIDI-Daten benutzt 
Du unter Win98SE, also was erzeugt den Sound, wenn Du per MIDI Daten 
einspielst?

von Stefan C. (jaecko)


Lesenswert?

Als Empfänger/Sequencer/Aufnahmesoftware wird der Midi Orchestrator 
(Voyetra) verwendet. Zwar schon uralt, aber tuts. Der gibt die Signale 
an den Nemesys (mittlerweile Tascam) GigaSampler weiter. Und der will 
unter XP nicht mehr.
(Sogar mit eigener Fehlermeldung sinngemäss "This program can not be run 
under Windows XP)

Mit dem Gameport der Soundkarte geht das mit MIDI problemlos. Nur wird 
der Port recht oft anderweitig gebraucht, so dass in diesen Fällen dann 
die Verbindung per USB herhalten muss.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Mit dem Gameport der Soundkarte geht das mit MIDI problemlos. Nur wird
>der Port recht oft anderweitig gebraucht,

Zum Beispiel wozu?

von Stefan C. (jaecko)


Lesenswert?

Andere MIDI-Geräte, die blöderweise nur diesen 15poligen Stöpsel haben, 
statt den DIN-Buchsen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Dann bau Dir einen Adapter oder steck eine 2. Soundkarte ´rein, z.B. 
eine günstige SBLive! oder Audigy, die ist dann auch gleich noch 
kompatibel zum kX-Treiber.

von Michael (Gast)


Lesenswert?

Hey!

Das ist ja wunderbare Diskussion.
Zu den nicht akzeptierbaren Latenzen über Midi bin ich auch schon 
gekommen.

Wie wäre es ein fertiges Programm zu benutzen? Zum Beispiel Midiox?
Wenn ich irgendwie meinen Speed dort hineinbekomme.

leider hab ich keinen Platz mehr für ne Soundkarte, ansonsten wäre das 
wahrscheinlich die erste Wahl.

Latenzen wären ja nicht mal so schlimm, aber sie müssten halt konstant 
bleiben. Und wenn der Timer auf 0,5ms genau läuft, reicht das glaub ich 
auch, oder?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Also über USB und mit WIN98SE sehe ich eher keine ansprechende Lösung, 
zumal viele Sequenzer-Programme mit WIN98SE ihre eigenen Probleme haben. 
Seit meinem Schwenk auf XP ist meine Arbeit mit HD-Recording und MIDI 
unbeschwert. An früher mag ich nicht denken.

PS: viele Motherboards haben einen Game/MIDI-Port onboard auf einem 
Header, vielleicht kann man den nutzen. Dieser muß im BIOS aktiviert 
werden, falls vorhanden.

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.