mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Midi Clock an PC senden


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Skua C:\> (skua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wofür soll das gut sein?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Zum Beispiel wozu?

Autor: Stefan C. (jaecko)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.