
BBC BASIC for Linux version 0.18a(C) Copyright R. T. Russell. 2017> >PRINT 555 555>10 PRINT 555Syntax error>_
|
|
PROCgraphics(1000,500) REPEAT resp$=FNbuttonz(100,100,"clearitall") resp$=FNbuttonz(100,100,"Show me a circle ") WAIT 1 REPEAT k% = INKEY(4) resp%=FNmoucheck UNTIL k%<>-1 OR resp% >0 UNTIL resp$="Show me a circle " PROCcolor("f","yellow") CIRCLE FILL 500,500,150 END DEF FNmoucheck PRIVATE mx%,my%,mb%,x%,y%,b% MOUSE x%,y%,b% IF mx%=0 AND my%=0 AND mb%=0 THEN mx%=x%:my%=y%:mb%=b%: =-1 IF mx%=x% AND my%=y% AND mb%=b% THEN =-1 ELSE mx%=x%:my%=y%:mb%=b%:=1 DEF PROCgraphics(x,y) VDU 23,22,x;y;8,15,16,1 OFF VDU 5 ENDPROC DEFFNbuttonz(X,Y,msg$) LOCAL initialx%,fi%,reduction%,tx,ty,mx%,my%,mb%,ad%,ady%,c$ PRIVATE st$ IF msg$<> "clearitall" THEN initialx%=LEN(msg$) LET tx= X+initialx%+25 LET ty= Y:reduction%=0 reduction%=initialx%/2 reduction%=reduction%*6 IF initialx%<20 THEN reduction%=reduction%/2 initialx%=initialx%*22-reduction% MOUSE mx%,my%,mb% ad%=initialx%+8:ad%+=X:ady%=Y-28 IF mx% >X AND mx%<ad% AND my%<Y+8 AND my%>ady% THEN c$="255,255,255" IF mb%=4 THEN st$=msg$ ELSE c$="200,200,200" ENDIF IF FNrgb(X,Y)="000,000,000" THEN c$="200,200,200" PROCcolor("f",c$) IF FNrgb(X,Y)<>c$ THEN FOR fi%=12 TO 48 LINE X-3,Y+20-fi%,X+initialx%+8,Y+20-fi% NEXT PROCcolor("f","000,000,000") MOVE tx,ty PRINT msg$ ENDIF ENDIF IF msg$="clearitall" THEN st$="" MOVE 0,0 REM hide that thing =st$ DEF PROCcolor(fb$,rgb$) PRIVATE assemble$,br%,bg%,bb% IF rgb$="0" OR rgb$="black" THEN rgb$="000,000,000" IF rgb$="1" OR rgb$="red" THEN rgb$="200,000,000" IF rgb$="2" OR rgb$="green" THEN rgb$="000,200,000" IF rgb$="3" OR rgb$="yellow" THEN rgb$="200,200,000" IF rgb$="4" OR rgb$="blue" THEN rgb$="000,000,200" IF rgb$="5" OR rgb$="magenta" THEN rgb$="200,000,200" IF rgb$="6" OR rgb$="cyan" THEN rgb$="000,200,200" IF rgb$="7" OR rgb$="white" THEN rgb$="200,200,200" IF rgb$="8" OR rgb$="grey" THEN rgb$="056,056,056" IF rgb$="9" OR rgb$="light red" THEN rgb$="248,056,056" IF rgb$="10" OR rgb$="light green" THEN rgb$="056,248,056" IF rgb$="11" OR rgb$="light yellow" THEN rgb$="248,248,056" IF rgb$="12" OR rgb$="light blue" THEN rgb$="056,056,248" IF rgb$="13" OR rgb$="light magenta" THEN rgb$="248,056,248" IF rgb$="14" OR rgb$="light cyan" THEN rgb$="056,248,248" IF rgb$="15" OR rgb$="light white" THEN rgb$="248,248,248" assemble$=rgb$ br%=VAL(MID$(assemble$,1,3)):bg%=VAL(MID$(assemble$,5,3)):bb%=VAL(MID$(assemble$,9,3)) IF fb$="f" OR fb$="F" THEN COLOUR 0,br%,bg%,bb% : GCOL 0 IF fb$="b" OR fb$="B" THEN COLOUR 1,br%,bg%,bb% : GCOL 128+1 ENDPROC DEFFNrgb(x%,y%) LOCAL rgb%, r&, g&, b& rgb%=TINT(x%,y%) r&=rgb% :REM Use byte variable as mask. g&=rgb% >>8 b&=rgb% >>16 =FNnumstr(r&)+","+FNnumstr(g&)+","+FNnumstr(b&) DEFFNnumstr(num) LOCAL cov$,l% cov$=STR$(num) l%=LEN(cov$) IF l%=1 THEN ret$="00"+cov$ IF l%=2 THEN ret$="0"+cov$ IF l%=3 THEN ret$=cov$ =ret$
|
|
|
|
system "sudo modprobe snd-virmidi snd_index=0"system "aconnect 20:0 128:0"dosystem "amidi -p hw:1,0 -S'90 3C 7F' "system "amidi -p hw:1,0 -S'90 3C 0' "pause 1until falseend
SYS "sudo modprobe snd-virmidi snd_index=0 " SYS "aconnect 20:0 128:0" REPEAT SYS "amidi -p hw:1,0 -S'90 3c 7f'" SYS "amidi -p hw:1,0 -S'90 3c 0' " WAIT 22 UNTIL FALSE
|
SYS "system", "sudo modprobe snd-virmidi snd_index=0" SYS "system", "aconnect 20:0 128:0" REPEAT SYS "system", "amidi -p hw:1,0 -S'90 3C 7F' " SYS "system", "amidi -p hw:1,0 -S'90 3C 0' " WAIT 22 UNTIL FALSE END
SYS "system", "amidi -p hw:1,0 -S'90 3C 7F' "SYS "system", "amidi -p hw:1,0 -S'90 3C 0' "
### MIDIPI ######################## Assumes Timidity installed# Works on RPi .... Maybe other LinuxMachines ?# In terminal type 'timidity -iA'# Leave terminal opensystem"sudo modprobe snd-virmidi snd_index=0"#Alsasystem"aconnect 20:0 128:0" #Connectscale=[48,50,52,53,55,57,59,60] #MidiScalea=144.to_s(16) #Convertc=127.to_s(16) #MidiDatad=0.to_s(16) #to hexfor i in 0..7 #PlayScale b=scale[i].to_s(16) system"amidi -p hw:1,0 -S'#{a}#{b}#{c}'" system"amidi -p hw:1,0 -S'#{a}#{b}#{d}'" sleep 1end
|
|
*amidi -p hw:1,0 -S'90 3C 7F' *amidi -p hw:1,0 -S'90 3C 0'
b0=144: b1=60: b2=127 SYS "system", " sudo modprobe snd-virmidi snd_index=0 " SYS "system", " aconnect 20:0 128:0 " PRINT" amidi -p hw:1,0 -S'90 3C 7F'" PRINT" amidi -p hw:1,0 -S'"STR$~(b0)" "STR$~(b1)" "STR$~(b2)"'" REPEAT REM: SYS "system", " amidi -p hw:1,0 -S'90 3C 7F'" SYS "system", " amidi -p hw:1,0 -S'"STR$~(b0)" "STR$~(b1)" "STR$~(b2)"'" SYS "system", " amidi -p hw:1,0 -S'90 3C 0' " WAIT 22 UNTIL FALSE END
|
PRINT "The " "quick " "brown " "fox" PRINT "The "+"quick "+"brown "+"fox"
SYS "system", " amidi -p hw:1,0 -S'" STR$~(b0) " " STR$~(b1) " " STR$~(b2) "'" SYS "system", " amidi -p hw:1,0 -S'"+STR$~(b0)+" "+STR$~(b1)+" "+STR$~(b2)+"'"
REM: ######## RPi Midi Explorer ################ REM: Assumes Timidity installed REM: In terminal enter ' timidity -iA ' ( leave terminal open ) REM: midi setup SYS "system", " sudo modprobe snd-virmidi snd_index=0 " SYS "system", " aconnect 20:0 128:0 " REM: firstnote midipatch = 0: midinote = 55 REM: start PROC_playnote(midipatch, midinote) REM: set patches and notes REPEAT: REPEAT: x=INKEY(2): UNTIL x <> -1 IF x = 139 THEN midipatch = midipatch + 1 IF x = 138 THEN midipatch = midipatch - 1 IF x = 137 THEN midinote = midinote + 1 IF x = 136 THEN midinote = midinote - 1 IF midipatch < 0 THEN midipatch = 0 IF midipatch >127 THEN midipatch = 127 IF midinote < 0 THEN midinote = 0 IF midinote > 127 THEN midinote = 127 PROC_playnote(midipatch, midinote) UNTIL FALSE: END REM: play and display DEF PROC_playnote(midipatch,midinote) SYS "system", " amidi -p hw:1,0 -S'C0 "+STR$~(midipatch)+"'" SYS "system", " amidi -p hw:1,0 -S'90 "+STR$~(midinote)+" 7F'" WAIT 5 REM: adjust waitime for sustain SYS "system", " amidi -p hw:1,0 -S'B0 7B 0'" CLS PRINT "midipatch = "; midipatch ;" midinote = "; midinote PRINT " up / down arrows for patch change" PRINT "left / right arrows for note change" ENDPROC
|


??
|

|
|

|
REM:#### RPi Midi Explorer ################# REM: Assumes Timidity installed REM: In terminal enter ' timidity -iA ' ( leave terminal open ) REM: midi setup SYS "system", " sudo modprobe snd-virmidi snd_index=0 " SYS "system", " aconnect 20:0 128:0 " REM: firstnote midipatch = 0: midinote = 55 REM: start PROC_playnote(midipatch, midinote) REM: set patches and notes REPEAT: REPEAT: x=INKEY(0): UNTIL x <> -1 IF x = 139 THEN midipatch = midipatch + 1 IF x = 138 THEN midipatch = midipatch - 1 IF x = 137 THEN midinote = midinote + 1 IF x = 136 THEN midinote = midinote - 1 IF midipatch < 0 THEN midipatch = 0 IF midipatch >127 THEN midipatch = 127 IF midinote < 0 THEN midinote = 0 IF midinote > 127 THEN midinote = 127 PROC_playnote(midipatch, midinote) UNTIL FALSE: END REM: play and display DEF PROC_playnote(midipatch,midinote) SYS "system", " amidi -p hw:1,0 -S'C0 "+STR$~(midipatch)+"'" SYS "system", " amidi -p hw:1,0 -S'90 "+STR$~(midinote)+" 7F'" SYS "system", " amidi -p hw:1,0 -S'B0 7B 0'" CLS PRINT "midipatch = "; midipatch ;" midinote = "; midinote PRINT " up / down arrows for patch change" PRINT "left / right arrows for note change" ENDPROC
|

|

|
SYS "system", "sudo modprobe snd-virmidi snd_index=0" SYS "system", "aconnect 20:0 128:0" midipatch=0 midinote=55 PROCplaynote(midipatch, midinote) REPEAT CASE GET OF WHEN 139: IF midipatch < 127 midipatch += 1 WHEN 138: IF midipatch > 1 midipatch -= 1 WHEN 137: IF midinote < 127 midinote += 1 WHEN 136: IF midinote > 1 midinote -= 1 ENDCASE PROCplaynote(midipatch, midinote) UNTIL FALSE END DEF PROCplaynote(midipatch,midinote) OSCLI "amidi -p hw:1,0 -S'C0 "+STR$~(midipatch)+" 90 "+STR$~(midinote)+" 7F' ;" OSCLI "amidi -p hw:1,0 -S'B0 7B 0' ;" PRINT midipatch, midinote ENDPROC
TIME=0 SYS "system","amidi -p hw:1,0 -S'90 #{hmn} 7F'" SYS "system","amidi -p hw:1,0 -S'B0 7B 0'" x=TIME PRINT x
|
|
|
|
