// Play a note by midi number or predefined variables or use hz_to_midi( freq ) to convert frequency to note number. // // See: https://sonic-pi.mehackit.org/exercises/en/01-introduction/02-play-a-melody.html // const noise = synth.def( (phase, env, tick, options) => (Math.random() * 2 - 1) * env.value, { env: adsr2 }); const kick = synth.def( (phase, env, tick, options) => Math.sin(phase * 2 * Math.PI * (1.5 - tick * 4)) * env.value, { attack: 0.025, release: 0.15, amp: 4, env: adsr2 }); loop( () => { sine.play(c3, { attack: 0.01, release: 0.25, amp: 0.75 }); sleep( 0.25 ); for (let i=0; i<3; i++) { sine.play(f3, { attack: 0.01, release: 0.25, amp: 0.75 }); sleep( 0.25 ); } sleep( 0.5 ); sine.play(g3, { attack: 0.01, release: 0.15, amp: 0.75 }); sleep( 0.25 ); sine.play(g3, { attack: 0.01, release: 0.1, amp: 0.75 }); sleep( 0.25 ); }); loop( () => { kick.play(c3, { amp: 0.5, release: 0.1}); sleep(0.25); kick.play(d3, { amp: 1, release: 0.1 }); sleep(0.25); kick.play(f3, { amp: 1.25, release: 0.1}); sleep(0.25); kick.play(d3, { amp: 1, release: 0.1 }); sleep(0.25); kick.play(c3, { amp: 0.5, release: 0.1 }); sleep(1); }); loop( () => { for (let i=0; i<5; i++) { noise.play(c3, { attack: 0.025, release: 0.15, amp: .02 + Math.random() * 0.05 }); sleep( 0.25 ); } //noise.play(c, { attack: 0.025, release: 0.15, amp: .05 + Math.random() * 0.05 }); //sleep(0.25 + Math.random() * 0.25); }); loop( (phase) => { var w = Math.sin(phase / 10); var amplitude = 0.15 + w * (0.35 - 0.15); //Math.sin(phase * 2 * Math.PI * (1.5 - tick * 4) sine.play(g4, { attack: 0.01, pan: Math.random() * 2 - 1, release: 0.25, amp: amplitude }); sleep( 0.25 ); });