Forum: Mikrocontroller und Digitale Elektronik Probleme mit Midisignal


von Moritz M. (hvgguser)


Angehängte Dateien:

Lesenswert?

Hallo

Ich bin gerade dabei mir einen MIDI-Controller selbst zu bauen, aber es
funktioniert garnichts. Der Code müsste eigentlich in Ordnung sein und
auch die Hardware funktioniert ohne Fehler. Wenn ich mir die Signale
mit MIDI-OX anschaue kommt nur Müll. Es wird alles angezeigt nur nicht
das, was ich sende. Ich habe keine Ahnung woran es liegt. Bitte helft
mir.
Ich habe leider nur recht wenig Erfahrung mit Mikrocontrollern.

Danke schon mal jetzt für eure Antworten

von The Daz (Gast)


Lesenswert?

Haeng mal den Schaltplan an aber bitte keine Eagle Dateien oder
sonstiges proprietaeres Zeugs.

von Andi (Gast)


Lesenswert?

ich kenne MIDI-OX nicht, aber vielleicht braucht das vollständige
MIDI-Messages. Das was du da sendest erfüllt das definitiv nicht, da
gar kein Status-Byte vorhanden ist.

Probier mal folende 3 Send-Bytes:
$90 (=0b10010000 =Status NoteOn Ch1)
$3C (=0b00111100 =mittleres C)
$7F (=0b01111111 =volle Dynamik)

Gruss Andi

von Vex (Gast)


Lesenswert?

Hallo...

Das 1. Byte ist immer - MSB (127)Marker Statusbyte,3 Bits Befehl + 4
Bits Channel  also im Format 0bSBBBCCCC

von Moritz M. (hvgguser)


Lesenswert?

Vielen Dank für die Antworten. Ich habe das mit dem Statusbyte falsch
gemacht. Jetzt funktioniert alles so wie es soll.

Mfg Moritz

von Moritz M. (hvgguser)


Lesenswert?

Hallo, ich hab da nochmal eine Frage:
Ich möchte mit Hilfe des integrierten AD-Wandler eines ATMEGA-32 Potis
auswerten und als Midibefehl senden. Der AD-Wandler hat eine Auflösung
von 8-Bit, aber ich kann ja nur 7-Bit als Mididaten versenden. Wie kann
ich jetzt die ersten 7-Bit die nach der Wandlung in ADCH stehen in ein
anderes Register schieben mit einer Null davor als MSB, damit das Ganze
als Midi Datenbyte durchgeht?
ADCH = 10100110  -> verschieben -> r16 = 0 1010011
Ein Beispielcode wäre hilfreich, da ich mich nicht so sehr mit
Assembler auskenne.

Danke schon mal jetzt

von inoffizieller WM-Rahul (Gast)


Lesenswert?

"verschieben" nennt sich im englischen auch "shift".
Im AVR Instruction set wird es dafür 2-3 Befehle geben (und dann noch
ein paar, die rotieren).

"shift right" könnte helfen...

von Moritz M. (hvgguser)


Lesenswert?

Danke ich habe den richtigen Befehl gefunden.

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.