wer kann mir helfen
ich möchte mit Midi-Kanal 7 (binär 151), Velcity 100
und bei den Noten 80 bis 88, Kanäle vom Tiny2313 schalten,
aber irgendwie wird der Midi-Kanal beim empfangen des Protokolls
verschluckt bzw. überschrieben von Velocity

Im unteren Code sollte eigentlich
Protokoll(1) 151 (Note-on Ch. 7)
Protokoll(2) 80 ....88
Protokoll(3) 100 sein

tatsächlich ist aber Protokoll(1) 100 Velocity, mit Drumcomputer getestet, ändert man Velo geht nichts mehr
Protokoll(2) sind die Noten wie es sich gehört
Protokoll(3) is nichts da

was kann die Ursache sein, das der Note-On Befehl nicht im Protokoll steht
und Velo auf Protokoll(1) geschrieben wird und nicht auf Protokoll(3)

gruß und schonmal Danke Gerhard


das Programm unten funktioniert, aber ohne den Note-on Befehl
Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 31250

Open "COMD.2:31250,8,n,1" For Input As #1                  
Dim Zeiger As Byte At &HA0
Zeiger = 1
Dim Flag As Byte At &HA1
Dim Adresse As Eram Byte
Dim Adresse_temp As Byte At &HA3
Dim Tempword As Word At &HA5
Adresse_temp = Adresse
Dim Tempbyte As Byte At &HA7
Dim Protokoll(3) As Byte At &HA8

Ddrd = &B11100010                                          
Ddrb = &B11111111

Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer_irq                                        
Stop Timer0

Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_irq2                                        
Disable Timer1
Stop Timer1
Timer1 = 0

Enable Timer0
Enable Interrupts


Do                                                         
  Tempbyte = Waitkey(#1)                                  
  Gosub Zeichenempfang                                     
 If Flag = 1 Then                                         
     Gosub Protokoll
     Flag = 0                                               
     Zeiger = 1
 End If
Loop



Zeichenempfang:

   Protokoll(zeiger) = Tempbyte                            
   If Tempbyte = 0 Then                                     
      Zeiger = 1                                            
   End If

 If Protokoll(1) = 100 Then     'sollte eigentlich 151 sein                           
        If Tempbyte = 0 Then                             
        Flag = 1                                            
        End If
        Incr Zeiger                                        
   Else
        Zeiger = 1                                         
        Timer0 = 0                           
        Start Timer0                         
        Enable Timer0                       
 End If
Return
End



Timer_irq:
   Stop Timer0
   Disable Timer0
   Zeiger = 1
Return
End

Timer_irq2:
    Portb = 0                                              
    Portd.6 = 0
   Timer1 = 0                                              
   Disable Timer1                                          
   Stop Timer1                                            
   Protokoll(1) = 0
   Protokoll(2) = 0
   Protokoll(3) = 0
Return
End

Protokoll:

         If Protokoll(1) = 100 Then     ' sollte eigentlich Protokoll(3) sein
                 Flag = Protokoll(2)

               If Flag = 80 Then                            
                 Portd.6 = 1
          Elseif Flag = 81 Then                             
                 Portb.0 = 1
          Elseif Flag = 82 Then
                 Portb.1 = 1
          Elseif Flag = 83 Then
                 Portb.2 = 1
          Elseif Flag = 84 Then
                 Portb.3 = 1
          Elseif Flag = 85 Then
                 Portb.4 = 1
          Elseif Flag = 86 Then
                 Portb.5 = 1
          Elseif Flag = 87 Then
                 Portb.6 = 1
          Elseif Flag = 88 Then
                 Portb.7 = 1
          Elseif Flag = 0 Then
                 Portb = 0
          End If
       End If

                            Protokoll(1) = 0               
                            Protokoll(2) = 0
                            Protokoll(3) = 0
                            Timer1 = 53036                
                            Enable Timer1
                            Start Timer1

Return
End