Forum: Mikrocontroller und Digitale Elektronik SYSEX auf SD Karte


von Ingo L. (grobian)


Lesenswert?

Ich hatte folgendes Problem, vor einem Auftritt hatte sich plötzlich die
Backup-Batterie meines Masterkeyboards verabschiedet. Folge, alle
Presetes waren gelöscht. Natürlich hatte ich die gesichert auf Cubase
als SYSEX. Nun hat man das aber nicht mit auf der Bühne.
Folgender Gedankengang..Die Sysex- Daten auf einen SD Karte und mit
einem Projekt mittels eines AVR mit Midi im Notfall in die Keyboards
spielen.
Gibr es so ein Gerät oder ein vorhandenes Projekt in dieser Richtung was
man weiter bearbeiten kann bzw. drauf aufbauen kann ?. Die Daten in den
AVR schreiben und augeben fällt aus da die Datenlänge 131 Kb beträgt.
Mit meinem Kawai K4 hat das mal super funktionier. Da war die Datenlänge
jedoch bei weiten geringer. Eine SD-Karte wäre wohl die optimale lösung
denke ich.

Gruß aus Berlin

Ingo

von Ingo L. (grobian)


Angehängte Dateien:

Lesenswert?

Habe das Projekt mal mit dem SD-Karten Code von Ulrich Radig angegangen.
Scheint eigentlich zu funktionieren... aber nur eigentlich.

Wenn ich die Daten sende erscheint auf dem MIDI-Monitor nicht das was 
erscheinen soll. Ich habe einen Quarz vom 8 MHz eingesetzt.

Sende ich die Daten auf einen Terminal-Monitor (andere Baudrate 
natürlich) werden die Daten korrekt angezeigt.

von Ingo L. (grobian)


Angehängte Dateien:

Lesenswert?

Hier ist die SYSEX die ich sende. Wie gesagt, auf dem Terminal wird sie 
korrekt angezeigt.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ingo Laabs schrieb:
> Wenn ich die Daten sende erscheint auf dem MIDI-Monitor nicht das was
> erscheinen soll.

Lade Dir mal MIDIOX herunter und schaue, was dabei ´rauskommt. Wenn Du 
die Datei binär und mit 31250Baud sendest, müsste Dein Keyboard damit 
etwas anfangen können.

Ingo Laabs schrieb:
> Folgender Gedankengang..Die Sysex- Daten auf einen SD Karte und mit
> einem Projekt mittels eines AVR mit Midi im Notfall in die Keyboards
> spielen.

Ein DataFlash reicht doch. Bau Dir einen aktiven MIDI-Plug mit Akku und 
entsprechender AVR-DataFlash-Kombi mit Record- und Play-Taste :-)

von Ingo L. (grobian)


Lesenswert?

na ich habe doch schon auf dem MIDI-Monitor (siehe Bild oben) die Daten 
betrachtet. Statt SYSEX sind da lauter NOTE OFF.

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


Lesenswert?

Ingo Laabs schrieb:
> Statt SYSEX sind da lauter NOTE OFF.

In der Binär-Datei die Du gepostet hast, sind eindeutig 0xF0 am Anfang 
(SYSEX-START) und 0xF7 am Ende (SYSEX-END) enthalten. MIDI-OX kann mit 
SYSEX-Daten umgehen und sogar versenden, kann Dein Editor das auch?

: Bearbeitet durch User
von Ingo L. (grobian)


Angehängte Dateien:

Lesenswert?

Hallo Knut,

die Binärdatei ist die die ich aus dem Kawai K4 mit dem Datenrecorder 
(Quasimidi StyleDrive) ausgelesen habe und senden möchte. Das Ergebnis 
siehst du auf dem GIF. Der K4 erkennt zwar ein senden aber nicht als 
SYSEX. Das was gesendet wir (anscheinend) siehst du auf dem GIF.
Die MidiBox bringt dasselbe Ergebnis.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Sehr merkwürdig. Wie sendest Du das die Daten jetzt genau? Ist Dein UART 
vieleicht verstellt? Zeigt Dein Terminalprogramm bei 31250Baud Fehler 
an?

von Ingo L. (grobian)


Lesenswert?

auf dem Terminalprogramm sende ich mit Standard Baud-Raten weil dort die 
31250 nicht zur Verfügung stehen. Bie dem MIDI -Monitor natürlich mit 
31250 Baud.

: Bearbeitet durch User
von Ingo L. (grobian)


Lesenswert?

Problem gelöst. In der mmc.h war noch ein Textstring (in dem war ein $80 
Note off) der vor ab gesendet wurde und damit natürlich die SYSEX-Daten 
gehörich durcheinander gewürfelt hat.

Zwar nimmt das Keyboard die Daten noch nicht korrekt an, denke aber mal 
weil ich die Dump-Dateien direkt vom Quasimidi-Style- Drive verwende, 
wird da wahrscheinlich noch das ein oder andere Byte zwischen sein was 
da wohl nicht hingehört. Zwar fangen die Dateien mit $F0 an und enden 
mit $F7, ob sich aber dazwischen jetzt nur SYS-EX befindet muß ich noch 
prüfen.

von Ingo L. (grobian)


Lesenswert?

ich habe hier noch ein kleines Problemchen. In der Schleife muß ich auf 
ein fesendetes $F7 (EOF) ein Abbruch erfolgen weiß aber nicht so recht 
wie !

//Lade Cluster für das index.htm File in den Speicher
  Clustervar = 0;//suche im Root Verzeichnis
  if (fat_search_file((unsigned char 
*)"K4_ALL.DMP",&Clustervar,&Size,&Dir_Attrib,Buffer) == 1)

{
    // * usart_write("\nFile Found!!\r\n");
    //Lese File und gibt es auf der seriellen Schnittstelle aus
    for (int b = 0;b<31;b++)
      {
      fat_read_file (Clustervar,Buffer,b);
      for (int a = 0;a<512;a++)
        {
        usart_write("%c",Buffer[a]);

        // hier muß der Break nach gesendetem $F7 erfolgen GOTO ist ja 
nicht so die Lösung in C++


        }
      }
    }

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.