diff --git a/static/qrplay/v3d.html b/static/qrplay/v3d.html
index 5bb976e..f7a8172 100644
--- a/static/qrplay/v3d.html
+++ b/static/qrplay/v3d.html
@@ -44,7 +44,7 @@ M=_=>{
// next index into S
s=1;
// opcode
- z='\n;+-@.3cdefgabxjtsiqhwmuv{}012456789'.indexOf(a);
+ z='\n;+-@.3cdefgabxjtsiqhwmuv{}z012456789'.indexOf(a);
// do nothing
z<0?0:
@@ -78,8 +78,9 @@ M=_=>{
// change volume
z<25?(V=b+c,s+=2):
// play simultaneously
- z<26?B[Z++]={L,O,T,U,V}:
- z<27?{L,O,T,U,V}=B[--Z]:
+ z<26?B[Z++]=[L,O,T,U,V]:z<27?[L,O,T,U,V]=B[--Z]:
+ // play on channel
+ z<28?B[B[Z]=[L,O,T,U,V],s=3,Z=b+c]=[L,O,T,U,V]=[1,0,0,U,V]:
// store sample
b=='['?(
m=0,
@@ -95,6 +96,6 @@ M=_=>{
S=C[a]+S.slice(s--);
// loop (but don't get too far ahead)
- A.state!='closed'&&(S=S.slice(s))&&setTimeout(M,1e3*T-Date.now()+D);
+ A.state!='closed'&&(S=S.slice(s))&&setTimeout(M,1e3*T-Date.now()+D-5e3);
};M()
">#play