/* The golden-vector case list. Shared by gen-vectors.js and check-vectors.js. keys = KEYS GEN (0 MOTIF, 1 303, 2 TURING, 3 ARP); scale/root -1 = AUTO; bars (optional) overrides BARS. */ var SEEDS=[0x5EEDB0C5,0x00000001,0xDEADBEEF,0x00009AAB]; // bars of 14, 16, 12 and 20 steps var SETS=[[64,32],[0,0],[127,127]]; // [energy, drift] var BARS=8; function base(seed,gen,keys,e,d){ return {seed:seed,salts:[0,0],gen:gen,keys:keys,energy:e,drift:d,fillBars:[],scale:-1,root:-1}; } function cases(){ var out=[]; // every kit generator against every keys generator SEEDS.forEach(function(seed){ for(var gen=0;gen<5;gen++) for(var keys=0;keys<4;keys++) SETS.forEach(function(ed){ out.push(base(seed,gen,keys,ed[0],ed[1])); }); }); // ROLL (salts) and FILL, per keys generator for(var keys=0;keys<4;keys++){ var a=base(0x5EEDB0C5,0,keys,64,32); a.salts=[3,0]; out.push(a); var b=base(0x5EEDB0C5,2,keys,64,32); b.salts=[0,5]; out.push(b); var c=base(0x5EEDB0C5,keys===3?4:1,keys,80,50); c.fillBars=[3,7]; out.push(c); } // TURING over more than its 16-bar window: locked at drift 0, flipping at drift 64 and 127 [0,64,127].forEach(function(d){ var t=base(0x12345678,1,2,64,d); t.bars=24; out.push(t); }); // a long 303 and ARP run for the phrase variants [1,3].forEach(function(keys){ var t=base(0xC0FFEE00,0,keys,90,100); t.bars=16; out.push(t); }); // ROOT / SCALE pages: [seed, gen, keys, scale, root]. Covers 5-, 6-, 7- and 8-note scales and each override alone. [[0x5EEDB0C5,0,0,14,2],[0x5EEDB0C5,2,3,19,9],[0x5EEDB0C5,4,1,0,7],[0xDEADBEEF,1,2,18,-1],[0x12345678,3,0,-1,5],[0xC0FFEE00,0,1,7,11],[0x00000001,1,3,20,0]].forEach(function(k){ var c=base(k[0],k[1],k[2],64,32); c.fillBars=[3]; c.scale=k[3]; c.root=k[4]; out.push(c); }); return out; } module.exports={cases:cases,BARS:BARS};