Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/21/08 23:26
Modified:
  11/21/08 23:31

Read: times


 
#160186 - ==CODE==
Responding to: ???'s previous message
Hi again... I will post the code... as a newbie "not colleged" 8051 programmer I dont know if it is the right or best way to program what I want, so, I will be thankful with corrections, critics or sugestions. Thanks a lot!

Also, tested this same code over an USB-midi interface, my computer onboard midi interface, a Kurzeil piano keyboard and another piano keyboard but can remember the brand... all they works, just the yamaha gives the problem, but the yamaha works normal to my computer and directly to other pianos.





Note	EQU 078h
MidiB   EQU 079h
V0      EQU 07Ch


ORG 00H
JMP START

ORG 0023H
JMP SERI



START:  MOV PCON,#0
        MOV TMOD,#00100001B ;T1 8bit autoreload/T0 16bit
        MOV TL1,#255        ;Set load/reload
        MOV TH1,#255        ;
        MOV TL0,#0
        MOV TH0,#0
        SETB TR1
        MOV SCON,#01010000B
        
        SETB EA
        SETB ES


RUN:
        JMP RUN




SERI:
        PUSH ACC
        
        JB RI,LER
        JMP MidiEnd
LER:
        MOV A,SBUF
        MOV V0,A				;Buffers SBUF
        CLR RI

        ANL A,#11110000b

        ;=======CAUTION=========
        CJNE A,#090h,$+6
        LJMP PNoteOn
        
        CJNE A,#080h,$+6
        LJMP PNoteOff
        
        JB ACC.0, MidiEnd		;END if is another midi command (ie. RT)
                                        ;a bit buggy but should work
        
        JMP ProcessMidiData
        
        
PNoteOn:	;Process Note On Command
        MOV MidiB,#1
        JMP MidiEnd

PNoteOff:	;Process Note Off Command
        MOV MidiB,#5
        JMP MidiEnd


ProcessMidiData:
        MOV A,MidiB
        
        CJNE A,#1,$+6
        LJMP PNoteOnNote
        
        CJNE A,#2,$+6
        LJMP PNoteOnVelocity
        
        CJNE A,#5,$+6
        LJMP PNoteOffNote
        
        CJNE A,#6,$+6
        LJMP PNoteOffVelocity
        
        JMP MidiEnd ;Not Listed



PNoteOnNote:
        MOV Note,V0
        
        MOV MidiB,#2
        JMP MidiEnd


PNoteOnVelocity:
        MOV A,V0
        
        JZ VELZERO
        ;VELOCITY NOT ZERO
        
        ;Note On Routine====
        
        JMP PNoteOnVelocityEnd
        


VELZERO:;VELOCITY = ZERO (same as note off)
		
        ;;Note On Routine when velocity=zero


PNoteOnVelocityEnd:
        MOV MidiB,#0
        JMP MidiEnd


PNoteOffNote:
        MOV Note,V0

        MOV MidiB,#6
        JMP MidiEnd


PNoteOffVelocity:
        MOV MidiB,#0
        
        ;Note Off Routine====
        
        JMP MidiEnd


MidiEnd:
		CLR TI
        CLR RI
		POP ACC
        RETI

END


 



List of 19 messages in thread
TopicAuthorDate
Midi trouble with Keyboard!            01/01/70 00:00      
   Blame the computer?            01/01/70 00:00      
      I'm lost            01/01/70 00:00      
         Check for differences            01/01/70 00:00      
            you are right...            01/01/70 00:00      
         First check grounding            01/01/70 00:00      
   ==CODE==            01/01/70 00:00      
   Can I post...            01/01/70 00:00      
   MIDI Trouble            01/01/70 00:00      
      I can be wrong...            01/01/70 00:00      
         MIDI Trouble ...            01/01/70 00:00      
            Should be JB ACC.7 ...            01/01/70 00:00      
   Maybe I discovered something, but have no clue to solve            01/01/70 00:00      
      Midi Thru Problems...            01/01/70 00:00      
         Same problem            01/01/70 00:00      
            MIDI Head Scratcher ..            01/01/70 00:00      
               Data is arriving corrupted            01/01/70 00:00      
   tried simplest way            01/01/70 00:00      
      Already tried this            01/01/70 00:00      

Back to Subject List