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
> 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.
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?
>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.
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.
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.
> 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 ;-)
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.
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?
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.
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.
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?
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.