PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MIDI Kanal über Dipschalter wählbar. Wie?



Flasher
20.01.2007, 21:14
Ich habe ein einfaches Programm geschrieben um eine Note per MIDI zu senden. Das klappt auch wunderbar. Der MIDI Kanal ist hier in meinem Beispiel fix auf 1 gestellt. Wie kann ich den hinteren Teil des Binärcodes durch eine Variable ersetzen (die letzten 4 Stellen sind für den MIDI Kanal verantwortlich)?

&B10010000 (Note on auf MIDI Kanal 1)

&B1001xxxx (xxxx= MIDI Kanal)

Meine zweite Frage wäre dann noch wie ich eine Dezimalzahl in eine Binäre konvertieren kann.

Hoffe es kann mir jemand mit einem kurze Beispiel helfen. Habe das jetzt Stunden probiert hinzubekommen.

Hier mein Code:


Noteon = &B10010000
Noteoff = &B10000000
Velo127 = &B01111111
Note = &B00111100

Cls
Cursor Off

Do
Warteaufnote:
Locate 1 , 1
Lcd "Warte auf Note "
Debounce Pind.2 , 0 , Spielenote
Loop

Spielenote:
If Pind.2 = 0 Then
Goto Noteon
Else
Goto Noteoff
End If

Noteon:
Locate 1 , 1
Lcd "Noten Nummer: " ; Note ; " "
Printbin Noteon
Printbin Note
Printbin Velo127
If Pind.2 = 1 Then
Goto Noteoff
End If
Goto Noteon

Noteoff:
Printbin Noteoff
Printbin Note
Printbin Velo127
Goto Warteaufnote

End

Flasher
21.01.2007, 11:13
Kann mir echt keiner weiter helfen? :-(

jojo3
23.01.2007, 07:01
naja ..
Du hängst den Codierschalter an einen freien Port,
lässt ihn gegen Masse (GND) schalten
zB.: PortB, und schaltest die Pull-Ups ein
und liest den Wert in eine Variable zB. "Kanal"
Dann frägst du Ganze am Besten in einer Schleife ab:

config portb=input
portb=&B00001111 (4 Bit sollten dir ja reichen)

Abfrage:
kanal=0
if pinb.0=0 then kanal=kanal+1
if pinb.1=0 then kanal=kanal+2
if pinb.2=0 then kanal=kanal+4
if pinb.3=0 then kanal=kanal+8

noteon=noteon and &B11110000 'die niedrigsten 4 bit löschen
noteon=noteon + kanal 'und den Kanal dazu tun
return

.. gibt sicher noch andere Möglichkeiten

PicNick
23.01.2007, 07:41
Das gibt viel Code.
PortB defineren wie @jojo3 gesagt hat
Dann:


Kanal = PINB AND &H0F
Kanal = KANAL OR &HC0

1hdsquad
23.01.2007, 18:15
Nene, das ist so nichts.
1. Steht im Manual die Konvertierung von Zahlenformaten in andere, such mal nach "BIN" und wenns das nicht ist, folge den Links unten (Binval?).
2. Kannst du den Miikanal auch direkt aus dem ersten gesendeten "Note-On" auslesen und bis zum Reset verwenden, ich machs so...
MFG

Flasher
25.01.2007, 14:41
Nene, das ist so nichts.
1. Steht im Manual die Konvertierung von Zahlenformaten in andere, such mal nach "BIN" und wenns das nicht ist, folge den Links unten (Binval?).
2. Kannst du den Miikanal auch direkt aus dem ersten gesendeten "Note-On" auslesen und bis zum Reset verwenden, ich machs so...
MFG

Es geht hier aber um ein Programm welches Noten sendet. Da kannst du keinen Kanal auslesen sondern mußt ihn schon selber bestimmen.

Danke für eure Hilfe (jojo3 und Picnick)!!
Bin jetzt schon erheblich weiter gekommen :-)

1hdsquad
26.01.2007, 16:24
Oh, shit, nicht aufgepasst...