Hallo, ich habe Heute den ganzen Tag erfolglos versucht an ein Gitarreneffektpedal über das Midiprotokoll eine Bank Select Message zu senden. Es wäre wirklich sehr nett, wenn mir irgendwer aus meiner Verzweifelung heraus helfen kann. Meine Hardware(die relevante): Ich nutze einen Atmega16 mit einem 8Mhz Quarz. PinD1(TXD) ist über einen 220 Ohm Widerstand an Pin5 der Midi Eingangsbuchse angeschlossen und +5Volt ist auch über einen 220 Ohm Widerstand an Pin4 der Midieingangsbuchse angeschlossen. Wenn ich An PinD1 eine Led anschließe sehe ich diese beim senden kurz aufblitzen. Meine Software(auf das nötigste beschränkt): #ifndef F_CPU #define F_CPU 8000000UL // Systemtakt in Hz - Definition als unsigned long beachten >> Ohne ergeben Fehler in der Berechnung #endif #define BAUD 31250UL // Baudrate // Berechnungen #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler. #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010)) #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1 UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF; if (!(PINA & (1<<PINA1) )) { // wenn Taster1 gedrückt while (!(UCSRA & (1<<UDRE))){} UDR = 0b10110001; while (!(UCSRA & (1<<UDRE))){} UDR = 0b00000001; while (!(UCSRA & (1<<UDRE))){} UDR = 0b00010011; } Unter diesem Link findet Ihr die Anleitung des Gitarreneffektpedals: Auf Seite 86 steht eine Tabelle mit den Midibefehlen! http://lib.roland.co.jp/support/en/manuals/res/1811397/GT-8_e7.pdf P.S.: Ich habe sehr lange im Forum, sowie mit Google nach vergleichbaren Problemen und Lösungsansätzen gesucht, da ich jedoch auch noch nicht besonders gut im Programmieren bin konnten mit die Lösungsansätze nicht weiterhelfen. Vielen Dank für eure Bemühungen!
Danke für den Tipp, leider ist da für mich kein lesbarer Sourcecode mit dabei, aus dem ich lernen könnte. Die Hex Dateien kann ich nicht lesen. Aber trotzdem Danke für den Tip. Vllt kann sich jemand noch genau mein Problem angucken ? Das wäre echt super, ich weiß nicht mehr weiter. mfg Ronn
Du sendest UDR = 0b10110001; = 0xB1 UDR = 0b00000001; = 0x01 UDR = 0b00010011; = 0x13 Das bewirkt entsprechend dem Midi-Protokoll (http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface) die Änderung eines Controllers
1 | 0xBn cc vv Controller, Wert Control Change Ändert den Zustand eines Controllers (siehe nächster Abschnitt) (cc = Controller) |
und zwar hier:
1 | 0xBn 01 vv 1 Modulation MSB Stellung des Modulationsrades |
Du änderst also die Stellung des Modulationsrades auf Midi-Kanal 1. Ist es das, was du wollstest? Eher nein. In dem Dokument aus deinem Link steht:
1 | PC#: Program Number |
2 | CC#0: Controller Number 0 (Bank Select MSB) |
3 | (Example) |
4 | When changing to Patch #30-3 (Bank 30, Number 3) |
5 | Transmit MIDI messages from an external MIDI sequencer in following order. |
6 | CC#0: 1 |
7 | PC#: 19 |
Also mußt du erst einen Controller 0 (Bank Select) mit dem Wert 1 senden: 0xB0 0x00 0x01 Und danach einen Program Change mit Wert 19 dez = 13 hex: 0xC0 0x13 Insgesamt also 5 Bytes :-o Ein Tipp: Lies dir die Midi-Geschichte nochmal genauer durch ;-) z.B. auch hier: http://www.blitter.com/~russtopia/MIDI/~jglatt/tutr/bank.htm
>PinD1(TXD) ist über einen 220 Ohm Widerstand an Pin5 der Midi >Eingangsbuchse angeschlossen und +5Volt ist auch über einen 220 Ohm >Widerstand an Pin4 der Midieingangsbuchse angeschlossen. Nur zur Sicherheit: Eine Masseverbindung gibt es aber auch noch, oder? Oliver
>Nur zur Sicherheit: Eine Masseverbindung gibt es aber auch noch, oder?
Das würde bei einer galvanisch getrennten Schnittstelle wie MIDI ja nun
gar keinen Sinn machen!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.