- LiTime Speicher und Akkus         
Ergebnis 1 bis 7 von 7

Thema: MIDI Kanal über Dipschalter wählbar. Wie?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2006
    Alter
    43
    Beiträge
    15

    MIDI Kanal über Dipschalter wählbar. Wie?

    Anzeige

    Powerstation Test
    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

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2006
    Alter
    43
    Beiträge
    15
    Kann mir echt keiner weiter helfen?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.02.2006
    Beiträge
    40
    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

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Das gibt viel Code.
    PortB defineren wie @jojo3 gesagt hat
    Dann:
    Code:
       Kanal = PINB AND &H0F     
       Kanal = KANAL OR &HC0
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    1hdsquad
    Gast
    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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2006
    Alter
    43
    Beiträge
    15
    Zitat Zitat von 1hdsquad
    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

  7. #7
    1hdsquad
    Gast
    Oh, shit, nicht aufgepasst...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus