' ========================================================================= ' ' File....... MIDI-LCD.BS2 ' Purpose.... ' Author..... Jon Williams -- Parallax, Inc. ' E-mail..... jwilliams@parallax.com ' Started.... ' Updated.... 19 JAN 2006 ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' -----[ Revision History ]------------------------------------------------ ' -----[ Conditional Definitions ]----------------------------------------- ' -----[ I/O Definitions ]------------------------------------------------- Lcd PIN 7 MidiPort PIN 15 ' -----[ Constants ]------------------------------------------------------- #SELECT $STAMP #CASE BS2, BS2E, BS2PE T1200 CON 813 T2400 CON 396 T4800 CON 188 T9600 CON 84 T19K2 CON 32 TMidi CON 12 T38K4 CON 6 #CASE BS2SX, BS2P T1200 CON 2063 T2400 CON 1021 T4800 CON 500 T9600 CON 240 T19K2 CON 110 TMidi CON 60 T38K4 CON 45 #CASE BS2PX T1200 CON 3313 T2400 CON 1646 T4800 CON 813 T9600 CON 396 T19K2 CON 188 TMidi CON 108 T38K4 CON 84 #ENDSELECT SevenBit CON $2000 Inverted CON $4000 Open CON $8000 LcdBaud CON Inverted | T9600 MidiBaud CON TMidi LcdPace CON 3 ' pacing for LCD (ms) LcdI CON 254 ' LCD instruction prefix LcdClr CON 1 LcdLine2 CON 192 NoteOff CON $80 ' Midi commands NoteOn CON $90 PolyAftr CON $A0 CtrlChg CON $B0 ModeChg CON $B0 PgmChg CON $C0 ChnlAftr CON $D0 PtchBend CON $E0 ' -----[ Variables ]------------------------------------------------------- midiCmd VAR Byte ' usually Note On/Off midiDat1 VAR Byte ' usually note midiDat2 VAR Byte ' usually velocity ' -----[ EEPROM Data ]----------------------------------------------------- ' -----[ Initialization ]-------------------------------------------------- Reset: PAUSE 1000 ' let LCD initialize SEROUT Lcd, LcdBaud, LcdPace, [LcdI, LcdClr, "Last Value:"] midiCmd = CtrlChg + 1 ' control change midiDat1 = 23 ' controller number ' -----[ Program Code ]---------------------------------------------------- Main: FOR midiDat2 = 1 TO 127 SEROUT Lcd, LcdBaud, LcdPace, [LcdI, LcdLine2, DEC3 midiDat2] SEROUT MidiPort, TMidi, [midiCmd, midiDat1, midiDat2] PAUSE 1000 NEXT GOTO Main END ' -----[ Subroutines ]-----------------------------------------------------