Last active
February 9, 2020 15:57
-
-
Save petersalomonsen/0dd3fdd6cbc2ea6433c9e80635a68967 to your computer and use it in GitHub Desktop.
shuffle chill - https://petersalomonsen.com/webassemblymusic/livecodev2/?gist=0dd3fdd6cbc2ea6433c9e80635a68967
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { StereoSignal } from "../synth/stereosignal.class"; | |
| import { Freeverb } from "../fx/freeverb"; | |
| import { DelayLine } from "../fx/delayline"; | |
| import { SAMPLERATE } from "../environment"; | |
| import { TriBandStereoCompressor } from "../fx/tribandstereocompressor"; | |
| import { EQBand } from "../fx/eqband"; | |
| import { SubPiano } from "../instruments/piano/subpiano"; | |
| import { Kick2 } from "../instruments/drums/kick2.class"; | |
| import { Snare } from "../instruments/snare.class"; | |
| import { DeepBass } from "../instruments/bass/deepbass"; | |
| import { Eftang } from "../instruments/lead/eftang"; | |
| import { SoftPad } from "../instruments/pad/softpad.class"; | |
| import { Hihat } from "../instruments/hihat.class"; | |
| import { SineLead } from "../instruments/lead/sinelead"; | |
| import { DriveLead } from "../instruments/drivelead.class"; | |
| export const PATTERN_SIZE_SHIFT: usize = 3; | |
| export const BEATS_PER_PATTERN_SHIFT: usize = 0; | |
| const gain: f32 = 0.13; | |
| const ENABLE_MULTIBAND_COMPRESSOR = true; | |
| let freeverb = new Freeverb(); | |
| const delayframes = (SAMPLERATE * (3/8) * 60 / 70) as usize; | |
| let delayLeft: DelayLine = new DelayLine(delayframes); | |
| let delayRight: DelayLine = new DelayLine(delayframes); | |
| let echoline = new StereoSignal(); | |
| let reverbline = new StereoSignal(); | |
| let mainline = new StereoSignal(); | |
| let tribandstereocompressor = new TriBandStereoCompressor(20,500,7000,19500); | |
| let eqbandl = new EQBand(20, 19500); | |
| let eqbandr = new EQBand(20, 19500); | |
| function createInstrumentArray<T>(length: i32, factoryFunc: () => T): T[] { | |
| const arr = new Array<T>(length); | |
| for(let n = 0; n < length;n++) { | |
| arr[n] = factoryFunc(); | |
| } | |
| return arr; | |
| } | |
| const pianos: SubPiano[] = createInstrumentArray<SubPiano>(8, () => new SubPiano()); | |
| const pads: SoftPad[] = createInstrumentArray<SoftPad>(8, () => new SoftPad()); | |
| const driveleads: DriveLead[] = createInstrumentArray<DriveLead>(3, () => new DriveLead()); | |
| const kick = new Kick2(); | |
| const bass = new DeepBass(); | |
| const eftang = new Eftang(); | |
| const snare = new Snare(); | |
| const hihat = new Hihat(); | |
| const sinelead = new SineLead(); | |
| export function setChannelValue(channel: usize, value: f32): void { | |
| switch(true) { | |
| case (channel < 8): | |
| pianos[channel].note = value; | |
| break; | |
| case channel === 8: | |
| kick.note = value; | |
| break; | |
| case channel === 9: | |
| snare.note = value; | |
| break; | |
| case channel === 10: | |
| hihat.note = value; | |
| break; | |
| case channel === 11: | |
| bass.note = value | |
| break; | |
| case channel === 12: | |
| eftang.note = value; | |
| break; | |
| case channel < 21: | |
| pads[channel - 13].note = value; | |
| break; | |
| case channel === 21: | |
| sinelead.note = value; | |
| break; | |
| case channel < 25: | |
| driveleads[channel - 22].note = value; | |
| break; | |
| case channel === 25: | |
| if(value > 1) { | |
| for(let n = 0; n<driveleads.length; n++) { | |
| driveleads[n].setPitchbend(value - 64); | |
| } | |
| } | |
| break; | |
| } | |
| } | |
| export function mixernext(leftSampleBufferPtr: usize, rightSampleBufferPtr: usize): void { | |
| mainline.clear() | |
| reverbline.clear(); | |
| echoline.clear(); | |
| for(let n = 0;n<pianos.length;n++) { | |
| const piano = pianos[n]; | |
| piano.next(); | |
| mainline.addStereoSignal(piano.signal, 0.4, 0.5); | |
| reverbline.addStereoSignal(piano.signal, 0.1, 0.5); | |
| } | |
| for(let n = 0;n<pads.length;n++) { | |
| const pad = pads[n]; | |
| pad.next(); | |
| mainline.addStereoSignal(pad.signal, 0.4, 0.5); | |
| echoline.addStereoSignal(pad.signal, 0.4, 0.5); | |
| } | |
| for(let n = 0;n<driveleads.length;n++) { | |
| const drivelead = driveleads[n]; | |
| drivelead.next(); | |
| const pan = ((n + 1) * 0.25) as f32; | |
| mainline.addStereoSignal(drivelead.signal, 0.1, pan); | |
| echoline.addStereoSignal(drivelead.signal, 0.45, 1 - pan); | |
| } | |
| kick.next(); | |
| mainline.addStereoSignal(kick.signal, 1.5, 0.5); | |
| reverbline.addStereoSignal(kick.signal, 0.2, 0.5); | |
| hihat.next(); | |
| mainline.addStereoSignal(hihat.signal, 1.5, 0.5); | |
| // reverbline.addStereoSignal(hihat.signal, 0.0, 0.5); | |
| bass.next(); | |
| mainline.addStereoSignal(bass.signal, 4.5, 0.5); | |
| reverbline.addStereoSignal(bass.signal, 0.3, 0.5); | |
| eftang.next(); | |
| mainline.addStereoSignal(eftang.signal, 2.1, 0.5); | |
| echoline.addStereoSignal(eftang.signal, 1.8, 0.5); | |
| sinelead.next(); | |
| mainline.addStereoSignal(sinelead.signal, 2.4, 0.5); | |
| echoline.addStereoSignal(sinelead.signal, 2.0, 0.5); | |
| snare.next(); | |
| mainline.addStereoSignal(snare.signal, 1.0, 0.5); | |
| reverbline.addStereoSignal(snare.signal, 0.01, 0.5); | |
| echoline.left += delayRight.read() * 0.7; | |
| echoline.right += delayLeft.read() * 0.7; | |
| delayLeft.write_and_advance(echoline.left); | |
| delayRight.write_and_advance(echoline.right); | |
| reverbline.addStereoSignal(echoline, 0.5, 0.5); | |
| freeverb.tick(reverbline); | |
| let left = gain * (mainline.left + echoline.left + reverbline.left); | |
| let right = gain * (mainline.right + echoline.right + reverbline.right); | |
| if (ENABLE_MULTIBAND_COMPRESSOR) { | |
| tribandstereocompressor.process(left,right,0.45, 1.0, 0.9 , 1.20, 1.05, 1.0); | |
| left = tribandstereocompressor.stereosignal.left; | |
| right = tribandstereocompressor.stereosignal.right; | |
| } else { | |
| left = eqbandl.process(left); | |
| right = eqbandr.process(right); | |
| } | |
| // clip | |
| if (Math.abs(left) > 1.0) { | |
| left = 1.0; | |
| } | |
| if (Math.abs(right) > 1.0) { | |
| right = 1.0; | |
| } | |
| store<f32>(leftSampleBufferPtr, left); | |
| store<f32>(rightSampleBufferPtr, right); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Copyright (c) 2019 - Peter Salomonsen (https://petersalomonsen.com) | |
| */ | |
| global.bpm = 70; | |
| global.pattern_size_shift = 3; | |
| global.beats_per_pattern_shift = 1; | |
| calculatePatternSize(); | |
| // global.looptimes = 100; | |
| // soloInstrument('kick'); | |
| // soloInstrument('snare'); | |
| // soloInstrument('hihat'); | |
| /*soloInstrument('piano1'); | |
| soloInstrument('piano2'); | |
| soloInstrument('piano3'); | |
| soloInstrument('piano4'); | |
| soloInstrument('piano5');*/ | |
| //muteInstrument('pad1'); | |
| // muteInstrument('pad2'); | |
| // muteInstrument('pad3'); | |
| //soloInstrument('sinelead'); | |
| global.WASM_SYNTH_LOCATION = 'https://gist.githubusercontent.com/petersalomonsen/0dd3fdd6cbc2ea6433c9e80635a68967/raw/7b3c50d5179807a43fbe095370b1a4552f953289/synth.wasm'; | |
| var pianoVoices = []; | |
| for(let n=1;n<=8;n++) { | |
| pianoVoices.push('piano'+n); | |
| addInstrument('piano'+n, {type: 'note'}); | |
| } | |
| addInstrumentGroup('piano', pianoVoices); | |
| addInstrument('kick', {type: 'number'}); | |
| addInstrument('snare', {type: 'number'}); | |
| addInstrument('hihat', {type: 'number'}); | |
| addInstrument('bass', {type: 'note'}); | |
| addInstrument('eftang', {type: 'note'}); | |
| var padVoices = []; | |
| for(let n=1;n<=8;n++) { | |
| padVoices.push('pad'+n); | |
| addInstrument('pad'+n, {type: 'note'}); | |
| } | |
| addInstrumentGroup('pads', padVoices); | |
| addInstrument('sinelead', {type: 'note'}); | |
| var driveleadVoices = []; | |
| for(let n=1;n<=4;n++) { | |
| driveleadVoices.push('drivelead'+n); | |
| addInstrument('drivelead'+n, {type: n === 4 ? 'number' : 'note'}); | |
| } | |
| addInstrumentGroup('driveleads', driveleadVoices); | |
| const primaryPatterns = { | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| ,,,,,, | |
| 60,,,,,, | |
| ,,,60,,20, | |
| ,,,60,,, | |
| ]), | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| "piano": pp(4, [ | |
| [as4(3),d5(3),e3(3/8),g2(7/8),a4(23/8),f5(23/8)],,,,,, | |
| [,,d3(1/4),,],,,[,,f3(1/4),,],,[,,g3(1/4),,], | |
| ,,,[,,f3(1/4),,],,[,,d3,,], | |
| [,,f3(1/4),,],,,[,,g3(1/2),,],,, | |
| [b4(7/4),c5(15/8),g4(15/8),a2(1/2),e5(7/4)],,,,,, | |
| [,,,a2(1/4),],,,[,,,g3(1/4),],,a3, | |
| [d3(3/8),a3(1/4),c5(1),a4(1),ds5(1)],,[,c4(1/4),,,],d3(1/2),,[,d4(1/4),,,], | |
| fs4(1),,, | |
| ], 8), | |
| "bass": pp(4, [ | |
| g2(0.5),,,,,, | |
| d3(1/4),,,f3(1/4),,g3(1/4), | |
| ,,,f3(1/4),,d3(1/4), | |
| f3(1/4),,,g3(1/2),,, | |
| a2(5/8),,,,,, | |
| e3(1/4),,,g3(1/4),,a3(1/4), | |
| d3(3/8),,,,,d4(3/8), | |
| ,,,a3,,c4 | |
| ]), | |
| }; | |
| for(var n=0;n<2;n++) { | |
| playPatterns(primaryPatterns, 6); | |
| } | |
| // | |
| for(var n=0;n<2;n++) { | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "eftang": pp(4, [a5(6/8),,,,,, | |
| ,,,g5(1/4),,f5(1/4), | |
| ,,d5(1/4),,,, | |
| ,,,g5(1/4),,e5(6/8),, | |
| ,,,,,,,,d5(1/4),,c5(1/4),, | |
| ,,a4(3/8),,,,,]), | |
| }), 6); | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "eftang": pp(4, [ | |
| f5(1/2),,,d5(1/4),,f5, | |
| ,,,g5(1/2),,, | |
| a5(1/2),,,g5(1/4),,f5(3/4),, | |
| ,,g5(1/2),,e5(2),,]), | |
| }), 6); | |
| } | |
| const basisPads = pp(4, [[g3(6),as4(6),a4(6),d5(6),f5(6)],,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| [,a3(3),c5(3),g4(3),e5(3)],,,,,, | |
| ,,,,,, | |
| [,ds5(3),fs4(3),c5(3),a4(3)],,, | |
| ], 8); | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "sinelead": pp(4, [d6(3/8),,,d6(1/4),,, | |
| c6(1/4),,,a5(3/8),,d6(1/4),, | |
| ,,,,,,, | |
| a5,c6(3/8),,a5, | |
| e6(3/8),,,e6(1/4),,, | |
| d6(1/4),,,c6(1/4),,, | |
| e6(1/4),,f6(1/4),e6,,c6, | |
| ,,a5,c6,,a5]), | |
| "pads": basisPads | |
| }), 6); | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "sinelead": pp(4, [d6(3/8),,,d6(1/4),,, | |
| c6(1/4),,,a5(3/8),,d6(1/4),, | |
| ,,,,,,, | |
| a5,c6(3/8),,a5, | |
| e6(3/8),,,e6(1/4),,, | |
| d6(1/4),,,c6(1/4),,, | |
| f6(1/4),,e6(1/4),,d6,,c6, | |
| ,a5,,g5]), | |
| "pads": basisPads, | |
| "driveleads": pp(4, [ | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| [c5(1/2),,g4(1/2)],,[d5(1/2),a4(1/2)],, | |
| [f5(1/2),,c5(1/2)],,[d5,g5],, | |
| [a5(1/2),f5(1/2)],,[a5,c6]], 3), | |
| }), 6); | |
| // | |
| for(var n=0;n<2;n++) { | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "pads": basisPads, | |
| "driveleads": pp(4, [ | |
| [d6(2),a5(2),f5(2)],,,,,, | |
| ,,,,[f6(4),c6(4),g5(4),63],, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,[d6(1/2),e5(1/2),a5(1/2)], | |
| ,,[c6(1/2),g5(1/2),d5(1/2)],, | |
| ,[d6(1/2),a5(1/2)],,[c6(1/2),g5(1/2)], | |
| ,,,[f5(1/2),a5(1/2)], | |
| ,,[g5(1/2),c6(1/2)],,[a5(1/2),d6(1/2)], | |
| ], 4), | |
| }), 6); | |
| playPatterns(Object.assign({}, primaryPatterns, { | |
| "pads": basisPads, | |
| "driveleads": pp(4, [ | |
| [a5(6),f5(6),c5(6),63],,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| g5(3),,,,,, | |
| ,,,,,, | |
| f5(2),,g5,a5(2),,, | |
| c6(2),,,d6(2),,, | |
| ], 4), | |
| }), 6); | |
| } | |
| // | |
| for(var n=0;n<2;n++) { | |
| playPatterns({ | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| ]), | |
| "piano": pp(4, [ | |
| [as5(5/4),d6(5/4),f5(5/4),],,,, | |
| ,,,, | |
| ,[as5(1/2),d6(1/2),f5],,, | |
| [f6(1),a5(3/4),c6(1)],,,, | |
| ,[c6(1/2),a5(1/2),f6(1/2)],,, | |
| ,[c6(1/2),a5(1/2),f6(1/2)],,, | |
| [gs5(3/4),f6(3/4),c6(3/4)],,,, | |
| ,,,, | |
| ,[gs5(1/2),f6(1/2),c6(1/2)],,, | |
| [c6(3/4),ds6(3/4),g5(1/2)],,,, | |
| ,[ds6(1/2),c6(1/2),g5(1/2)],,, | |
| ,[ds6(1/2),c6(1/2),g5(1/2)],,, | |
| [as5(3/4),d6(3/4),f5(3/4)],,,, | |
| ,,,, | |
| ,[as5(1/2),d6(1/2),f5(1/2)],,, | |
| [c6(3/4),a5(3/4),f6(3/4)],,, | |
| [c6(3/4),a5(3/4),f6(3/4)],,,, | |
| ,,[c6(1/2),a5,f6],,, | |
| [gs5(1/2),c6(3/4),f6],,,, | |
| ,,,, | |
| ,[gs5(1/2),f6(1/2),c6(1/2)],,, | |
| [c6(3/4),ds6(3/4),g5(3/4)],,,, | |
| ,[ds6(1/2),c6(1/2),g5(1/2)],,, | |
| ,[ds6,c6,g5]], 8), | |
| "driveleads": pp(4, [as5(1),,,f6(1/2), | |
| ,,c6(1),, | |
| ,as5(1),,c6(1), | |
| ,,c6,as5(1/2), | |
| ,c6,f6(1/2),, | |
| ,c6(1/2),,, | |
| as5(1/2),,,f6(1), | |
| ,,c6(1),, | |
| ,as5(1),,c6(1/2), | |
| ,c6(1/2),,as5(1/2), | |
| ,c6,f6(1/2),, | |
| ,[c6(1/2)],,], 4), | |
| "bass": pp(4, [as3(1),,,,, | |
| as3(1/2),,, | |
| ,as3(1/2),,, | |
| d3(3/4),,,, | |
| ,d3(1/2),,, | |
| ,d3,,e3(1/2), | |
| f3(1/2),,,, | |
| ,f3(1/2),,, | |
| ,f3,,, | |
| gs3(3/4),,,f3(1/2), | |
| ,gs3(3/4),,,,as3(1/2) | |
| ]), | |
| "pads": pp(4, [[d6(4),as5(4),f5(4)],,,, | |
| ,,,, | |
| ,,,, | |
| [a5(4),c6(4),],[,,f5(4)],,, | |
| ,,,, | |
| ,,,, | |
| [gs5(4),c6(4),ds5(4)],, | |
| ,,,, | |
| ,,,,,, | |
| [g5(3),ds5(3),as5(3)],,,, | |
| ,,,, | |
| ], 8), | |
| }, 6); | |
| // | |
| playPatterns({ | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| ]), | |
| "driveleads": pp(4, [as5(2)], 4), | |
| "bass": pp(4, [as3(1),,,, | |
| ,as3(1/2),,, | |
| ,as3(1/2),,, | |
| d3(3/4),,,, | |
| ,d3(1/2),,, | |
| ,d3,,e3(1/2), | |
| f3(1/2),,,, | |
| ,f3(1/2),,, | |
| ,f3,,, | |
| gs3(3/4),,,f3(1/2), | |
| ,gs3(3/4),,,,as3 | |
| ,,f3]), | |
| "pads": pp(4, [[d6(4),as5(4),f5(4)],,,, | |
| ,,,, | |
| ,,,, | |
| [a5(4),c6(4),],[,,f5(4)],,, | |
| ,,,, | |
| ,,,, | |
| [gs5(4),c6(4),ds5(4)],, | |
| ,,,, | |
| ,,,,,, | |
| [g5(3),ds5(3),as5(3)],,,, | |
| ,,,, | |
| ], 8), | |
| }, 6); | |
| } | |
| // playFromHere(); | |
| const transitionpatterns = { | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| 60,,,,,10, | |
| 60,,,,,, | |
| 60,,,,,, | |
| 60,,,,,, | |
| 60,,,,,, | |
| 60,,,40,,, | |
| 60,,,,,, | |
| ]), | |
| "driveleads": pp(4, [,,,f5(1/2), | |
| ,g5(1/2),,, | |
| as5(1/2),,,c6, | |
| d6(1),,,c6(1/2), | |
| ,as5(1/2),c6(3/4),, | |
| ,d6(1/2),,as5, | |
| ,,g5(1/2),, | |
| ,,,, | |
| ,f5(1/2),,g5(1/2), | |
| ,,as5(1/2),, | |
| ,c6(1/2),,, | |
| ,,,], 4), | |
| "bass": pp(4, [c3(1),,,, | |
| ,,,, | |
| ,,,d3(1/2), | |
| ,,d3(9/4),, | |
| ,,,, | |
| ,,,, | |
| ds3(5/2),,,, | |
| ,,,, | |
| ,,,f3(1/2), | |
| ,,f3,c4(3/4), | |
| ,,f4(1),, | |
| ]), | |
| "pads": pp(4, [[as5(41/4),ds5(5/2),g5(11/4),d5(5/2),c3(11/4)],,,, | |
| ,,,, | |
| ,,,, | |
| [,d3(3),c5(11/4),f5(3),],,,, | |
| ,,,, | |
| ,,,, | |
| [,ds3(3),g5(3),ds5(3)],,,, | |
| ,,,, | |
| ,,,, | |
| [,f5(3),f3(3),c5(3)],,,, | |
| ,,a5(1),, | |
| ,,,, | |
| ], 8), | |
| }; | |
| playPatterns(transitionpatterns, 6); | |
| playPatterns(Object.assign({}, transitionpatterns, { | |
| "sinelead": pp(4, [,,,f5(1/2), | |
| ,g5(1/2),,, | |
| as5(1/2),,,c6, | |
| d6(1),,,c6(1/2), | |
| ,as5(1/2),c6(3/4),, | |
| ,d6(1/2),,as5, | |
| ,,g5(1/2),, | |
| ,,,, | |
| ,f5(1/2),,g5(1/2), | |
| ,,as5(1/2),, | |
| ,c6(1/2),,, | |
| ,,,]), | |
| }), 6); | |
| playPatterns(Object.assign({}, transitionpatterns, { | |
| "sinelead": pp(4, [,,,f5(1/2), | |
| ,g5(1/2),,, | |
| as5(1/2),,,c6, | |
| d6(1),,,c6(1/2), | |
| ,as5(1/2),c6(3/4),, | |
| ,d6(1/2),,as5, | |
| ,,g5(1/2),, | |
| ,,,, | |
| ,f5(1/2),,g5(1/2), | |
| ,,as5(1/2),, | |
| ,c6(1/2),,,as5 | |
| ,,,]), | |
| "eftang": pp(4, [,,,f5(1/2), | |
| ,g5(1/2),,, | |
| as5(1/2),,,c6, | |
| d6(1),,,c6(1/2), | |
| ,as5(1/2),c6(3/4),, | |
| ,d6(1/2),,as5, | |
| ,,g5(1/2),, | |
| ,,,, | |
| ,f5(1/2),,g5(1/2), | |
| ,,as5(1/2),, | |
| ,c6(1/2),,,as5 | |
| ,,,]), | |
| }), 6); | |
| // playFromHere(); | |
| playPatterns({ | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| ]), | |
| "driveleads": pp(4, [as5(2),f6(2)], 4), | |
| "sinelead": pp(4, [ | |
| as5,,,f6,,,as6,,, | |
| as5,,as6,f6,,as6,,, | |
| as5,,,f6,,,, | |
| as5,,,f6,,,as6,,, | |
| as5,,as6,f6,,as6,,, | |
| as5,,,f6,,, | |
| ]), | |
| "eftang": pp(4, [ | |
| as4,,,f5,,,as5,,, | |
| as4,,as5,f5,,as5,,, | |
| as4,,,f5,,,, | |
| as4,,,f5,,,as5,,, | |
| as4,,as5,f5,,as5,,, | |
| as4,,,f5,,, | |
| ]), | |
| "bass": pp(4, [as3(1),,,, | |
| ,as3(1/2),,, | |
| ,as3(1/2),,, | |
| f3(3/4),,,, | |
| ,f3(1/2),,, | |
| ,f3,,f3(1/2), | |
| ds3(1/2),,,, | |
| ,ds3(1/2),,, | |
| ,ds3,,, | |
| f3(3/4),,,f3(1/2), | |
| ,f3(3/4),,,,f3 | |
| ,,f3]), | |
| "pads": pp(4, [[d6(4),as5(4),f5(4)],,,, | |
| ,,,, | |
| ,,,, | |
| [a5(4),c6(4),],[,,f5(4)],,, | |
| ,,,, | |
| ,,,, | |
| [g5(4),as5(4),ds5(4)],, | |
| ,,,, | |
| ,,,,,, | |
| [a5(3),c6(3),f5(3)],,,, | |
| ,,,, | |
| ], 8), | |
| "piano": pp(4, [[as5(3/4),d6(3/4),f5(3/4),],,,, | |
| ,[as5(3/4),d6(3/4),f5(3/4),],,, | |
| ,[as5(3/4),f5(3/4),d6(3/4)],,, | |
| [a5(1),c6(1),f5(1)],,,, | |
| ,[c6(3/4),a5(3/4),f5(3/4)],,, | |
| ,[a5(1/2),f5(1/2),c6(1/2)],, | |
| ,[as5(3/4),ds5(3/4),g5(3/4)],,,, | |
| ,[as5(3/4),ds5(3/4),g5(3/4)],, | |
| ,,[as5(3/4),ds5(3/4),g5(3/4)],,, | |
| [a5(1),c6(1),f5(1)],,,, | |
| ,[a5(3/4),c6(3/4),f5(3/4)],, | |
| ,,[c6(1/2),f5(1/2),a5(1/2)],,, | |
| ], 8), | |
| }, 6); | |
| playPatterns({ | |
| snare: pp(4, [ | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,,60 | |
| ,,,,,20, | |
| ,,,,,,60 | |
| ,,,,,, | |
| ,,,,,20,60 | |
| ,,,20,,50 | |
| ]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| 60,,30,60,,30 | |
| ]), | |
| kick: pp(4, [ | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| 60,,,,,, | |
| ,,,,,, | |
| ,,,60,,20, | |
| ]), | |
| "sinelead": pp(4, [ | |
| as5,,,f6,,,as6,,, | |
| as5,,as6,f6,,as6,,, | |
| as5,,,f6,,,, | |
| as5,,,f6,,,as6,,, | |
| as5,,as6,f6,,as6,,, | |
| as5,,,f6,,, | |
| ]), | |
| "eftang": pp(4, [ | |
| as4,,,f5,,,as5,,, | |
| as4,,as5,f5,,as5,,, | |
| as4,,,f5,,,, | |
| as4,,,f5,,,as5,,, | |
| as4,,as5,f5,,as5,,, | |
| as4,,,f5,,, | |
| ]), | |
| "driveleads": pp(4, [,,,, | |
| ,,,,,,,, | |
| f6(1),,,[,ds6(1/2)], | |
| ,d6(1/2),[,c6(3/4)],, | |
| ,as5(1),,, | |
| [,c6(1)],,,d6(1/2), | |
| ,[,c6(1/2)],as5(1),, | |
| ,[,g5(3/4)],,, | |
| f5(3/4),,,[,g5(3/4)], | |
| ,,as5(3/2),, | |
| ], 4), | |
| "piano": pp(4, [[as5(3/4),d6(3/4),f5(3/4),],,,, | |
| ,[as5(3/4),d6(3/4),f5(3/4),],,, | |
| ,[as5(3/4),f5(3/4),d6(3/4)],,, | |
| [a5(1),c6(1),f5(1)],,,, | |
| ,[c6(3/4),a5(3/4),f5(3/4)],,, | |
| ,[a5(1/2),f5(1/2),c6(1/2)],, | |
| ,[as5(3/4),ds5(3/4),g5(3/4)],,,, | |
| ,[as5(3/4),ds5(3/4),g5(3/4)],, | |
| ,,[as5(3/4),ds5(3/4),g5(3/4)],,, | |
| [a5(1),c5(1),f5(1)],,,, | |
| ,[a5(3/4),c5(3/4),f5(3/4)],, | |
| ,,[c5(1/2),f5(1/2),a5(1/2)],,, | |
| ], 8), | |
| "bass": pp(4, [as3(1),,,, | |
| ,as3(1/2),,, | |
| ,as3(1/2),,, | |
| f3(3/4),,,, | |
| ,f3(1/2),,, | |
| ,f3,,f3(1/2), | |
| ds3(1/2),,,, | |
| ,ds3(1/2),,, | |
| ,ds3,,, | |
| f3(3/4),,,f3(1/2), | |
| ,f3(3/4),,,,f3 | |
| ,,f3]), | |
| "pads": pp(4, [[d6(4),as5(4),f5(4)],,,, | |
| ,,,, | |
| ,,,, | |
| [a5(4),c6(4),],[,,f5(4)],,, | |
| ,,,, | |
| ,,,, | |
| [g5(4),as5(4),ds5(4)],, | |
| ,,,, | |
| ,,,,,, | |
| [a5(3),c5(3),f5(3)],,,, | |
| ,,,, | |
| ], 8), | |
| }, 6); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| driveleads: pp(4, [ | |
| [a5(4),d5(4),,62] | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,, | |
| g5,a5(1/2),[,a5(3/4)],g5, | |
| a5(1/2),,a5,, | |
| as5(1/2),,a5(1),[,,ds6], | |
| ,g5(1/2),,d5(3/4), | |
| ,,, | |
| , | |
| [f6,,,63] | |
| ],4) | |
| }), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| "driveleads": pp(4, [ | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,,,, | |
| ,,,, | |
| ,f6,[g6(2),fs6],, | |
| ,,,, | |
| f6(1/2),,d6,, | |
| c6(1/2),,,, | |
| as5(1/2),,,], 4), | |
| }), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| "pads": basisPads, | |
| "eftang": pp(4, [a5(6/8),,,,,, | |
| ,,,g5(1/4),,f5(1/4), | |
| ,,d5(1/4),,,, | |
| ,,,g5(1/4),,e5(6/8),, | |
| ,,,,,,,,d5(1/4),,c5(1/4),, | |
| ,,a4(3/8),,,,,]), | |
| "driveleads": pp(4, [a6(9/4),,,, | |
| ,,,, | |
| ,g6(1/2),,f6(1/2), | |
| ,,d6(7/4),, | |
| ,,,, | |
| ,g6(1/2),,e6(5/2), | |
| ,,,, | |
| ,,,, | |
| ,d6(1/2),,e6, | |
| [c6(3/4),d6],,,a5(2), | |
| ,,,, | |
| ,,,, | |
| f6(3/4),,,d6(1/2), | |
| ,[,f6(5/4)],,, | |
| ,g6(1/2),,, | |
| g6,[,a6(1/2)],,g6(1/2), | |
| ,f6(1),,, | |
| ,g6(1/2),,e6(5/2), | |
| ,,,, | |
| ,,,, | |
| ,d6,,d6, | |
| [c6(1),e6],,,[,d6(1/2)], | |
| ,,[d6,e6(3/4)],, | |
| ,,,], 4), | |
| }), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| "pads": basisPads, | |
| "eftang": pp(4, [ | |
| f5(1/2),,,d5(1/4),,f5, | |
| ,,,g5(1/2),,, | |
| a5(1/2),,,g5(1/4),,f5(3/4),, | |
| ,,g5(1/2),,e5(2),,]), | |
| }), 6); | |
| // playFromHere(); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| "driveleads": pp(4, [,,,, | |
| ,a6,c7(3/4),, | |
| ,c7(1/2),,, | |
| c7(1/2),,d7(1/2),, | |
| ,,,, | |
| ,c7(1/2),,a6, | |
| c7(3/4),,,a6(1/2), | |
| ,g6(1/2),,, | |
| f6(1/2),,,g6(3/4), | |
| ,,f6,d6(1/2), | |
| ,c6,[,d6(3/4)],, | |
| ,f6(3/4),,, | |
| d6(3/2),,,, | |
| ,,,, | |
| ,c6(1/2),,d6, | |
| f6(1/2),,g6(1/2),, | |
| ,[gs6,a6(3/4)],,, | |
| c7(3/4),,,, | |
| [c7,d7(1)],,,c7(1/2), | |
| ,a6(1/2),,, | |
| gs6(1/2),[,g6(1/2)],,f6(1/2), | |
| ,g6,f6,d6(1/2), | |
| ,c6,,f6(3/4), | |
| ,[,d6],,], 4), | |
| "pads": basisPads, | |
| "eftang": pp(4, [a5(6/8),,,,,, | |
| ,,,g5(1/4),,f5(1/4), | |
| ,,d5(1/4),,,, | |
| ,,,g5(1/4),,e5(6/8),, | |
| ,,,,,,,,d5(1/4),,c5(1/4),, | |
| ,,a4(3/8),,,,,]), | |
| }), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{ | |
| "pads": basisPads, | |
| "eftang": pp(4, [ | |
| f5(1/2),,,d5(1/4),,f5, | |
| ,,,g5(1/2),,, | |
| a5(1/2),,,g5(1/4),,f5(3/4),, | |
| ,,g5(1/2),,e5(2),,]), | |
| }), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{}), 6); | |
| playPatterns(Object.assign({},primaryPatterns,{}), 6); | |
| playPatterns({ | |
| kick: pp(4, [60]), | |
| hihat: pp(4, [ | |
| 60,,30,60,,30, | |
| 60,,30,60,,30, | |
| ]), | |
| }, 3); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment