1 line
No EOL
1.1 KiB
HTML
1 line
No EOL
1.1 KiB
HTML
<META NAME=VIEWPORT CONTENT=INITIAL=SCALE=1><CENTER><P><A HREF=http://nycki.net/qrplay>qrplay v3b</A></P><TEXTAREA ID=F STYLE=WIDTH:MIN(40EM,99%);HEIGHT:9LH></TEXTAREA><P><BUTTON onclick="F.A?.close();F.A=A=new AudioContext;S='@xx'+F.value;B=[];K=O=T=Z=L=0;U=137;V=40;C=['+g','-b+c#deff#g','g++ddb--g++ddb',,'+ea-g--b++g++c#','a#ga#g-a#+g-b+g','-a++c#-aae+e--a','-ffed#ddc#','dddddd#e','--ba#bb-a+a#-b'].map(c=>`{o06m${c}}x`);M=_=>{[a,b,c,d]=S;s=1;z='\n;+-@.3cdefgabx012456789jtsiqhwmuvo{}'.indexOf(a);z<0?0:z<2?K=z:K?0:z<4?O+=a+1|0:z<5?(O=0,L=1):z<6?L*=3/2:z<7?L/=3:z<15?(z-=7,o=new OscillatorNode(A,{type:'square',detune:100*(z*2-(z>2)-(b=='!')+(b=='#')+12*O-9)}),g=new GainNode(A,{gain:z<7&&.5**(12-V/5)}),o.connect(g),g.connect(A.destination),o.start(T),o.stop(T+=7.5*L/U)):z<22&&b=='['?(m=0,d=B.findIndex.call(S,c=>c=='['?!++m:c==']'?!--m:0),C[a]=S.slice(s,d),s=d+1):z<24?S=C[a]+S.slice(s--):z<31?L=2**(z-25):z<32?L=U/2**11:z<33?(U=b+c+d,s+=3):z<34?(V=b+c,s+=2):z<35?(O=b+c-4,s+=2):z<36?B[Z++]={L,O,T,U,V}:{L,O,T,U,V}=B[--Z];S=S.slice(s);S&&setTimeout(M)};M()">#play</BUTTON> <BUTTON ONCLICK=F.A.close()>#stop |