Ana5bitLoop: Bytein = HRSIn ' Read data from the serial buffer, with no timeout If Bytein > ProgChange_Status Then ' here higher statusses are not implemented. If Bytein > 253 Then '254 = midiclock, 255= reset 'midiclock can interrupt all other msg's... '255 had to be intercepted since thats what we 'get when no new byte flows in (?) Else Clear statusbyte 'reset the status byte End If EndIf If StBit =1 Then 'should be faster than If Bytein > 127 Then ' 'status byte received, bit 7 is set Clear statusbyte 'if on another channel, the statusbyte needs a reset Clear GreenLed Select Bytein 'eqv to Select case ByteIn Case NoteOff_Status statusbyte = Bytein Set noteUit '= 255 'reset value. Cannot be 0 !!! Set release '= 255 '0 is a valid midi note! Set GreenLed Case NoteOn_Status statusbyte = Bytein Set noteAan '= 255 Set velo '= 255 Set GreenLed Case Keypres_Status statusbyte = Bytein Set notePres '= 255 Set pres '= 255 Set GreenLed Case Control_Status statusbyte = Bytein Set Ctrl '= 255 Set value '= 255 Case ProgChange_Status statusbyte = Bytein Set prog Set GreenLed End Select Else 'midi byte is 7 bits Select statusbyte Case 0 Clear GreenLed Case NoteOff_Status If noteUit = 255 Then noteUit = Bytein Else release = Bytein If noteUit = Noot Then ' blank display Clear aseg Clear bseg Clear cseg Clear dseg Clear eseg Clear fseg Clear gseg Clear dot Clear Carry Else Clear GreenLed EndIf Set noteUit '= 255 EndIf Case NoteOn_Status If noteAan = 255 Then noteAan = Bytein Else velo = Bytein If noteAan < 5 Then Select Noot Case 1 Clear aseg Clear bseg Clear cseg Clear dseg Clear eseg Clear fseg Clear gseg Clear dot Clear Carry ' overflow LED on noot1 If value < 10 Then Select value 'case 0 Case 1 Set Carry Case 2 Set Carry Set dseg Case 3 Set Carry Set eseg Case 4 Set Carry Set eseg Set gseg Case 5 Set Carry Set eseg Set fseg Case 6 Set Carry Set aseg Set eseg Set fseg Case 7 Set Carry Set aseg Set bseg Set eseg Set fseg Case 8 Set Carry Set aseg Set bseg Set cseg Set eseg Set fseg Case 9 Set Carry Set aseg Set bseg Set cseg Set eseg Set fseg Set dot End Select Else Set aseg Set bseg Set cseg Set eseg Set fseg Set Carry Set Dot EndIf Case 2 Clear aseg Clear bseg Clear cseg Clear dseg Clear eseg Clear fseg Clear gseg Clear dot If value < 11 Then ' niks Else Select value Case 11 Set dseg Case 12 Set eseg Case 13 Set eseg Set gseg Case 14 Set eseg Set fseg Case 15 Set aseg Set eseg Set fseg Case 16 Set aseg Set bseg Set eseg Set fseg Case 17 Set aseg Set bseg Set cseg Set eseg Set fseg Case Else ' >=18 Set aseg Set bseg Set cseg Set eseg Set fseg Set dot End Select Else Set aseg Set bseg Set cseg Set eseg Set fseg Set Dot EndIf Case 3 Clear aseg Clear bseg Clear cseg Clear dseg Clear eseg Clear fseg Clear gseg Clear dot If value < 19 Then ' niks Else Select value Case 19 Set dseg Case 20 Set eseg Case 21 Set eseg Set gseg Case 22 Set eseg Set fseg Case 23 Set aseg Set eseg Set fseg Case 24 Set aseg Set bseg Set eseg Set fseg Case 25 Set aseg Set bseg Set cseg Set eseg Set fseg Case Else ' >=26 Set aseg Set bseg Set cseg Set eseg Set fseg Set dot End Select Else Set aseg Set bseg Set cseg Set eseg Set fseg Set Dot EndIf Case 4 Clear aseg Clear bseg Clear cseg Clear dseg Clear eseg Clear fseg Clear gseg Clear dot If value < 27 Then ' niks Else Select value Case 27 Set dseg Case 28 Set eseg Case 29 Set eseg Set gseg Case 30 Set eseg Set fseg Case 32 Set aseg Set eseg Set fseg Case 32 Set aseg Set bseg Set eseg Set fseg Case 33 Set aseg Set bseg Set cseg Set eseg Set fseg Case 34 Set aseg Set bseg Set cseg Set eseg Set fseg Set dot Case > 34 ' case else Set aseg Set bseg Set cseg Set eseg Set fseg Set dot End Select Else Set aseg Set bseg Set cseg Set eseg Set fseg Set Dot EndIf End Select EndIf Set noteAan '= 255 'reset EndIf Case Keypres_Status 'use segment adressing of the display If notePres = 255 Then notePres = Bytein Else pres = Bytein Set notePres EndIf Case Control_Status 'this is where the action takes place for controllers If Ctrl = 255 Then Ctrl = Bytein Else value = Bytein GoSub Controller EndIf Case ProgChange_Status ' single byte follows! ProgStat = statusbyte If prog = 255 Then prog = Bytein GoSub ProgChange Select Case Programma Case 0 GoTo LOOP Case 1 GoTo LOOP2 Case 2 GoTo Teller_Loop Case 3 GoTo Second_Loop Case 4 GoTo Stopwatch_Loop Case 5 GoTo Ana5bitLoop End Select EndIf End Select EndIf GoTo Ana5bitLoop