www.mikrocontroller.net

Forum: Projekte & Code MIDI Merger Hilfe weiss nicht weiter


Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle,

Ich suche einen Source Code oder Beispiel, wie ich zwei oder mehr
MIDI-In auf einen MIDI-Out Mergen kann.

Es müsste theoretisch mit einem ATmega8 oder 16 mit Ringpuffer gehen.
Ich find aber keinerlei Hilfen oder Beispiele im I-Net.

Eine Funktion um Zwei MINI-In's zu lesen ist relativ einfach, habe ich 
auch schon auf einem ATmega128 mit STK500 programmiert.
Komme jedoch bei der Merger Funktion absolut nicht weiter.

Da beide MINI-In jeder Zeit senden können und die Daten nicht verloren 
gehen dürfen. Weis ich nicht wie ich beide Datenströme so koppeln kann, 
dass sie auf einem MIDI-Out richtig ausgegeben werden.

Bitte um Hilfe

(kurz vor der Verzweifelung)

MFG
Oliver

Autor: Mano Wee (Firma: ---) (manow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.ucapps.de/ siehe MIDImerge, allerdings mit PIC's

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mano Wee,

Na ja, tolle Hard und Software.
Ich möchte ungern die Hardware auf PIC's aufbauen, da ich alles für 
Atmega geplant habe und auch die nötige Hardware bereits besitze.
Des Weiteren steige ich durch den asm code überhaupt nicht durch.

trotzdem danke.

vielleicht hat ja doch jemand was für die ATmegas's in C.

MFG
Oliver

Autor: Mano Wee (Firma: ---) (manow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei denen gibt's auch ein Forum, vllt kann dir da ja einer helfen.

http://forum.midibox.org/

http://www.midibox.org/forum/index.php/board,18.0.html (deutsch)



Gruß MW

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade schon wieder nur PIC'S

giebt es sowas nicht mit ATmegas?

HILFE

Gruß
Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver wrote:

> Eine Funktion um Zwei MINI-In's zu lesen ist relativ einfach, habe ich
> auch schon auf einem ATmega128 mit STK500 programmiert.

Du kannst auch den ATmega162 nehmen, der hat auch 2 UARTs.


> Da beide MINI-In jeder Zeit senden können und die Daten nicht verloren
> gehen dürfen. Weis ich nicht wie ich beide Datenströme so koppeln kann,
> dass sie auf einem MIDI-Out richtig ausgegeben werden.

Dazu mußt Du Dich informieren, wie das MIDI-Protokoll aufgebaut ist.
Und dann einfach prüfen, wenn ein Paket zuende ist, ob auf dem anderen 
Kanal schon Daten reingekommen sind und dann umschalten.

Du mußt also nur die Pakete wechselseitig senden, solange in beiden 
Puffern was ist.


Peter

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

Bewertung
0 lesenswert
nicht lesenswert
MIDI-Befehle haben eine recht klare Struktur. Dein Programm muß 
zuallererst sämtliche Daten auf beiden Kanälen einsammeln. Dann muß es 
in Echtzeit prüfen, ob ein kompletter MIDI-Befehl im Puffer angekommen 
ist. Dann muß es schauen, ob gerade eine Ausgabe stattfindet. Wenn ja, 
muß der Befehl weiter gespeichert bleiben und gewartet werden, bis die 
Ausgabe frei ist. Dann muß der Befehl komplett ausgegeben werden. 
Beide Kanäle müssen wechselseitig die Ausgabepriorität bekommen, wenn 
auf beiden Kanälen Befehle eigetrudelt sind. Es ergibt sich dann eine 
Latenz von einer Befehlslänge. Nicht geeignet ist diese Topologie, wenn 
viele Daten an einem Stück, zum Beispiel SysEx-Blöcke übertragen werden 
müssen, da diese nicht unterbrochen werden können. Dein Programm muß 
diese Befehle, wenn nötig, ausmaskieren.

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.