From 997ef13aaa39e5db9481107d49130559527da5d0 Mon Sep 17 00:00:00 2001 From: Trent Palmer Date: Sun, 26 Apr 2020 00:35:40 -0700 Subject: [PATCH] add drum-machine --- drum-machine/drumMachine.css | 466 ++++++++++++++ drum-machine/drumMachine.js | 221 +++++++ drum-machine/index.html | 111 ++++ drum-machine/makeSelection.js | 291 +++++++++ drum-machine/metronomeTempos.js | 24 + drum-machine/wavFiles.js | 1038 +++++++++++++++++++++++++++++++ 6 files changed, 2151 insertions(+) create mode 100644 drum-machine/drumMachine.css create mode 100644 drum-machine/drumMachine.js create mode 100644 drum-machine/index.html create mode 100644 drum-machine/makeSelection.js create mode 100644 drum-machine/metronomeTempos.js create mode 100644 drum-machine/wavFiles.js diff --git a/drum-machine/drumMachine.css b/drum-machine/drumMachine.css new file mode 100644 index 0000000..987b493 --- /dev/null +++ b/drum-machine/drumMachine.css @@ -0,0 +1,466 @@ +body { + overflow: hidden; + height: 100vh; + width: 100%; +} + +.tool-tip-class { + background-color: #756d58; + font-size: 2rem; + font-style: oblique; + border-color: black !important; + border-width: 2px !important; + border-style: solid; + border-radius: 6px; + width: unset !important; + max-width: unset !important; + text-align: center; + white-space: nowrap; +} + +#test { + position: absolute; +} + +#drum-machine { + background-color: #756d58; + height: 100vh; + width: 100%; + display: flex; + flex-direction: row; +} + +#display { + background-color: #586075; + margin: auto; + height: 70vh; + min-height: 400px; + width: 80vw; + border-radius: 1rem; + display: flex; + flex-direction: column; +} + +#display-top, #display-bottom { + flex-basis: 19%; + width: 100%; + display: flex; + flex-direction: column; + justify-content: space-around; + text-align: center; + font-size: x-large; + font-style: oblique; +} + +#display-middle { + flex-basis: 62%; + width: 100%; + display: flex; + flex-direction: row; + -webkit-user-select: none; /* Safari */ + -ms-user-select: none; /* IE 10+ and Edge */ + user-select: none; /* Standard syntax */ +} + +#display-middle-left { + flex-basis: 55%; + display: flex; + flex-direction: row; +} + +#display-middle-left-b { + flex-basis: 90%; + display: flex; + flex-direction: row; + justify-content: space-around; +} + +#drum-pad-grid { + margin: auto; + background-color: #607558; + border-radius: 1rem; + width: 54vh; + height: 45vh; + display: flex; + flex-direction: column; + justify-content: space-around; + padding: 0 0 2vh 2vh; +} + +.drum-pad-row { + height: 33%; + display: flex; + flex-direction: row; + justify-content: space-around; +} + +.drum-pad { + border-radius: 1rem; + width: 33%; + background-color: #6d5875; + border: black; + border-width: 2px; + border-style: solid; + margin: 2vh 2vh 0 0; + text-align: center; + display: flex; + flex-direction: column; + justify-content: space-around; + font-size: x-large; + font-style: oblique; +} + +.drum-pad > p { + margin-top: auto; + margin-bottom: auto; +} + +.selectionMenu { + margin: auto; + background-color: #607558; + border-radius: 1rem; + width: 54vh; + height: 45vh; + display: flex; + flex-direction: column; + flex: 1; + overflow: auto; + scrollbar-color: black #6d5875; + padding-top: 10px; + padding-bottom: 10px; +} + +.selectionMenu::-webkit-scrollbar { + background-color: #6d5875; +} + +.selectionMenu::-webkit-scrollbar-thumb { + background-color: black; +} + +.selectionMenuItem, .volumeSelectionMenuItem, .metronomeSelectionMenuItem { + min-height: min-content; + background-color: #6d5875; + margin: 10px 20px 20px 10px; + padding: 15px; + border-radius: 1rem; + border-width: 2px; + border-style: solid; + text-align: center; + font-style: bold; + font-size: 1.6rem; +} + +#display-middle-right { + flex-basis: 45%; + display: flex; + flex-direction: row; +} + +#display-middle-left-a, #display-middle-left-c { + flex-basis: 5%; +} + +#display-middle-right-b, #display-middle-right-c, #display-middle-right-d { + flex-basis: 12%; +} + +#display-middle-right-c { + min-width: 15px; +} + +#display-middle-right-b, #display-middle-right-d { + display: flex; + flex-direction: column; + justify-content: space-around; +} + +#display-middle-right-e, #display-middle-right-g { + flex-basis: 5%; +} + +#display-middle-right-e { + min-width: 50px; +} + +#display-middle-right-f { + flex-basis: 20%; + display: flex; + flex-direction: row; + justify-content: space-around; +} + +.selection { + margin-left: auto; + margin-right: auto; + width: 15vh; + min-width: 110px; + height: 12vh; + min-height: 80px; + background-color: #6d5875; + border-radius: 1rem; + border-width: 2px; + border-style: solid; + display: flex; + flex-direction: row; + justify-content: space-around; +} + +.selection > p { + margin: auto; + text-align: center; + font-size: large; +} + +#volume-container { + margin-top: auto; + margin-bottom: auto; + height: 300px; + display: flex; + flex-direction: column; + justify-content: space-around; + font-size: 32px; +} + +#volume { + margin-top: 13px; + margin-bottom: 13px; + height: 205px; + width: 4px; + background: #333333; + border-radius: 4px; + border: none; +} + +#volume > .ui-slider-range { + background: #333333; + border: none; + outline: none; +} + +#volume > .ui-slider-handle { + border: none; + margin-left: -2px; + margin-bottom: -15px; + width: 30px; + height: 30px; + border-radius: 30px; + background: #333333; + cursor: pointer; + outline: none; +} + +i.fa-volume-down { + color: #333333; + margin-left: -5px; +} + +i.fa-volume-up { + color: #333333; + margin-left: -5px; +} + +.attachment-full { + position: absolute; + right: 0px; + height: 149px; + width: 149px; +} + +@media (orientation: landscape) and (max-width: 1520px) { + #display { + width: 90vw; + } +} + +@media (orientation: landscape) and (max-width: 1258px) { + #display { + width: 99vw; + } +} + +@media (orientation: portrait) { + #display { + margin: auto; + height: 90vh; + width: 95vw; + min-width: unset; + min-height: unset; + } + + #display-top { + flex-basis: 12%; + font-size: x-large; + } + + #display-bottom { + flex-basis: 8%; + } + + #display-middle { + flex-basis: 80%; + height: 100%; + width: 100%; + display: flex; + flex-direction: column-reverse; + justify-content: space-around; + } + + #display-middle-left { + flex-basis: unset; + } + + #display-middle-right { + flex-basis: unset; + justify-content: space-around; + width: 80%; + margin-left: auto; + margin-right: auto; + } + + #select-volume, #display-middle-right-f, #display-middle-right-g { + display: none; + } + + #display-middle-right-a, #display-middle-right-c, #display-middle-right-e { + display: none; + } + + #display-middle-right-b, #display-middle-right-d { + flex-basis: unset; + min-width: unset; + } + + #display-middle-right-b, #display-middle-right-d { + justify-content: space-around; + } + + .selection { + max-height: 80px; + margin-top: 20px; + margin-bottom: 20px; + } + + #drum-pad-grid { + min-width: unset; + min-height: unset; + } + + #drum-pad-grid, .selectionMenu { + width: 72vw; + height: 60vw; + } + + .selectionMenuItem, .volumeSelectionMenuItem, .metronomeSelectionMenuItem { + padding: unset; + } + + .attachment-full { + height: 99px; + width: 99px; + } +} + +@media (orientation: portrait) and (max-device-width: 767px) { + #drum-pad-grid, .selectionMenu { + width: 84vw; + height: 70vw; + } +} + +@media (orientation: portrait) and (max-device-width: 750px) { + #display-top { + font-size: large; + } + + #drum-pad-grid, .selectionMenu { + width: 72vw; + height: 60vw; + } + + .selection { + max-height: 40px; + margin-top: 10px; + margin-bottom: 10px; + } + + #display-middle { + margin-top: 10px; + } +} + +@media (orientation: landscape) and (max-device-width: 1024px) { + #display { + height: 90vh; + width: 90vw; + min-height: unset; + } + + #display-middle-left { + flex-basis: 65%; + } + + #display-middle-right { + flex-basis: 35%; + justify-content: space-around; + margin-left: auto; + margin-right: auto; + } + + #select-volume, #display-middle-right-f, #display-middle-right-g { + display: none; + } + + #display-middle-right-a, #display-middle-right-c, #display-middle-right-e { + display: none; + } + + #display-middle-right-b, #display-middle-right-d { + flex-basis: unset; + min-width: unset; + } + + #drum-pad-grid { + min-width: unset; + min-height: unset; + } + + #drum-pad-grid, .selectionMenu { + width: 72vh; + height: 60vh; + } + + .selectionMenuItem, .volumeSelectionMenuItem, .metronomeSelectionMenuItem { + padding: unset; + } +} +@media (orientation: landscape) and (max-device-height: 767px) { + #drum-pad-grid { + min-width: unset; + min-height: unset; + } + + #drum-pad-grid, .selectionMenu { + width: 84vh; + height: 70vh; + } + + #display-middle-left { + flex-basis: 60%; + } + + #display-middle-right { + flex-basis: 40%; + } +} + +@media (orientation: landscape) and (max-height: 400px) { + #display-top { + font-size: large; + } + + .attachment-full { + height: 99px; + width: 99px; + } +} diff --git a/drum-machine/drumMachine.js b/drum-machine/drumMachine.js new file mode 100644 index 0000000..dc8cdcc --- /dev/null +++ b/drum-machine/drumMachine.js @@ -0,0 +1,221 @@ +$(document).ready(function () { + + initialSamples(); + + let volume = sessionStorage.hasOwnProperty("volume") ? + parseInt(sessionStorage.getItem('volume')) : 20; + + $('#volume').slider({ + orientation: "vertical", + min: 0, + max: 100, + value: volume, + range:"max", + slide: function(event,ui) { + sessionStorage.setItem('volume',ui.value); + makeVolumeToolTip('#display-middle-right-f'); + } + }); + + $(document).keydown(function(e){ + if (qweasdzxc.includes(e.keyCode) && (!anyMenuDisplayed())) { + playSample(String.fromCharCode(e.keyCode)+'pad'); + } else if (e.keyCode === 27 && menuDisplayed) { + makeSelection('( cancel -- back )'); + } else if (e.keyCode === 27 && volumeMenuDisplayed) { + makeVolumeSelection('( cancel -- back )'); + } else if (e.keyCode === 27 && metronomeMenuDisplayed) { + makeMetronomeSelection('( cancel -- back )'); + } else if ([37,38,39,40].includes(e.keyCode)) { + } + }); + + padsArray.forEach(pad => { + makeAudioControl(pad); + }); + + makeVolumeToolTip('#display-middle-right-f'); + + $('#selection').on('click',function() { + if (!anyMenuDisplayed()) { + makeSelection("keys"); + } + }); + + $('#display-middle').on('click','.selectionMenuItem',function() { + makeSelection($(this).text()); + }); + + $('#select-volume').on('click',function() { + if (!anyMenuDisplayed()) { + makeVolumeSelection("keys"); + } + }); + + $('#display-middle').on('click','.volumeSelectionMenuItem',function() { + makeVolumeSelection($(this).text()); + }); + + $('#metronome').on('click',function() { + if (!anyMenuDisplayed()) { + makeMetronomeSelection("keys"); + } + }); + + $('#display-middle').on('click','.metronomeSelectionMenuItem',function() { + makeMetronomeSelection($(this).text()); + }); + + $('#reset').on('click',function() { + if (!anyMenuDisplayed()) { + reset(); + } + }); + + $('#stop').on('click',function() { + stopMetronomes(); + }); + + padsArray.forEach(pad => { + makeMetronomeIcons(pad); + }); +}); + +const makeMetronomeIcons = (pad) => { + const html = $('#'+pad+'pad').html(); + if (sessionStorage.getItem(pad + 'isMetronome') === 'true') { + $('#'+pad+'pad').html('

' + html + '

'); + } +}; + +const makeVolumeToolTip = (element) => { + $(element).tooltip({ + content: sessionStorage.getItem('volume'), + show: {delay: 250, duration: 0}, + classes: { + "ui-tooltip": "highlight" + }, + tooltipClass: "tool-tip-class", + }); +}; + +const makeAudioControl = (pad) => { + const audioControl = pad + ''; + $('#'+pad+'pad').html(audioControl); +}; + +const sampleUrlPreFix = "https://trentpalmer.org/drumsamples/" +const qweasdzxc = [81,87,69,65,83,68,90,88,67]; + +const playSample = (key) => { + const audioFileText = $('#'+key[0]).attr('src').slice(36) + $('#display-top').html(key[0] +": " + audioFileText.replace(/\//g,' ').replace(/-/g,'‑')); + if (sessionStorage.getItem(key[0] + 'isMetronome') === 'false') { + const keyDuration = 1000; + const sound = document.getElementById(key[0]); + const audioFile = sessionStorage.getItem(key[0]); + const thisVolume = getVolume(key[0]); + if (sound.currentTime === 0) { + sound.volume = thisVolume; + sound.play(); + setTimeout(function(){ + const soundDuration = Math.floor(sound.duration); + if (soundDuration > (keyDuration / 1000)) { + sound.currentTime = soundDuration; + } + }, keyDuration); + } else { + const newSound = new Audio(sampleUrlPreFix + audioFile); + newSound.volume = thisVolume; + newSound.play(); + setTimeout(function(){ + const newSoundDuration = Math.floor(newSound.duration); + if (newSoundDuration > (keyDuration / 1000)) { + newSound.currentTime = newSoundDuration; + } + }, keyDuration); + } + } else { + metronome(key[0]); + sessionStorage.setItem(key[0]+'metronomeIsPlaying', + (sessionStorage.getItem(key[0]+'metronomeIsPlaying') + === 'false' ? 'true' : 'false')); + } +}; + +const metronome = (key) => { + let keyDuration = parseBPM(key); + const sound = document.getElementById(key); + sound.volume = getVolume(key); + sound.play(); + let refreshMetronome = setInterval(function(){ + keyDuration = parseBPM(key); + sound.pause(); + sound.currentTime = 0; + sound.volume = getVolume(key); + sound.play(); + if (sessionStorage.getItem(key + 'metronomeIsPlaying') === 'false') { + clearInterval(refreshMetronome); + } + },keyDuration); +}; + +const parseBPM = (key) => { + const bpm = parseInt(sessionStorage + .getItem(key+'metronomeTempo').slice(-10).split(' ')[1]); + return Math.round(60000 / bpm); +}; + +const getVolume = (key) => { + const machineVolume = parseInt(sessionStorage.getItem('volume')); + const padVolumeOffset = parseInt(sessionStorage.getItem(key+'volume')); + const thisVolume = (machineVolume + padVolumeOffset) / 100; + return thisVolume > 1 ? 1 : thisVolume < 0 ? 0 : thisVolume; +}; + +const initialSamples = () => { + if (!sessionStorage.hasOwnProperty("volume")) { + sessionStorage.setItem("volume","30"); + } + padsArray.forEach(pad => { + if (!sessionStorage.hasOwnProperty(pad + "volume")) { + sessionStorage.setItem(pad + "volume","+0"); + } + if (!sessionStorage.hasOwnProperty(pad + "isMetronome")) { + sessionStorage.setItem(pad + "isMetronome",false); + } + if (!sessionStorage.hasOwnProperty(pad + "metronomeIsPlaying")) { + sessionStorage.setItem(pad + "metronomeIsPlaying",false); + } + if (!sessionStorage.hasOwnProperty(pad + "metronomeTempo")) { + sessionStorage.setItem(pad + "metronomeTempo","Andante: 92 bpm"); + } + }); + if (!sessionStorage.hasOwnProperty("Q")) { + sessionStorage.setItem("Q","Assorted-Hits/Cymbals/CYCdh_Crash-01.wav"); + } + if (!sessionStorage.hasOwnProperty("W")) { + sessionStorage.setItem("W","Assorted-Hits/Cymbals/CYCdh_MultiCrash-01.wav"); + } + if (!sessionStorage.hasOwnProperty("E")) { + sessionStorage.setItem("E","Assorted-Hits/Cymbals/CYCdh_MultiCrashHi-01.wav"); + } + if (!sessionStorage.hasOwnProperty("A")) { + sessionStorage.setItem("A","Assorted-Hits/Cymbals/CYCdh_MultiCrashLo-01.wav"); + } + if (!sessionStorage.hasOwnProperty("S")) { + sessionStorage.setItem("S","Assorted-Hits/Snares/Ludwig-A/CYCdh_LudFlamA-05.wav"); + } + if (!sessionStorage.hasOwnProperty("D")) { + sessionStorage.setItem("D","Assorted-Hits/Snares/Ludwig-A/CYCdh_LudRimA-07.wav"); + } + if (!sessionStorage.hasOwnProperty("Z")) { + sessionStorage.setItem("Z","Assorted-Hits/Kicks/Loose-Kick/CYCdh_LooseKick-08.wav"); + } + if (!sessionStorage.hasOwnProperty("X")) { + sessionStorage.setItem("X","Assorted-Hits/Snares/Ludwig-A/CYCdh_LudSnrA-05.wav"); + } + if (!sessionStorage.hasOwnProperty("C")) { + sessionStorage.setItem("C","Assorted-Hits/Snares/Ludwig-A/CYCdh_LudSnrOffA-08.wav"); + } +} diff --git a/drum-machine/index.html b/drum-machine/index.html new file mode 100644 index 0000000..b642853 --- /dev/null +++ b/drum-machine/index.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + Drum Machine - Build A Drum Machine - Front End Libraries Projects + + + +
+ +
+
+ + Fork me on GitHub + +
+
+
+
+
+
+
+
+
+

Q

+
+
+

W

+
+
+

E

+
+
+
+
+

A

+
+
+

S

+
+
+

D

+
+
+
+
+

Z

+
+
+

X

+
+
+

C

+
+
+
+
+
+
+
+
+
+

select
a sound

+
+

select
a volume

+
+

metronome

+
+
+
+
+
+

RESET

+
+

STOP

+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+ + + + + + + diff --git a/drum-machine/makeSelection.js b/drum-machine/makeSelection.js new file mode 100644 index 0000000..77d248a --- /dev/null +++ b/drum-machine/makeSelection.js @@ -0,0 +1,291 @@ +let drumPadGrid = {}; +let fileStringArray = []; +let padSelectingFor = ''; +let menuDisplayed = false; +let volumeMenuDisplayed = false; +let metronomeMenuDisplayed = false; + +const anyMenuDisplayed = () => { + return menuDisplayed || volumeMenuDisplayed || metronomeMenuDisplayed; +}; + +const padsArray = ['Q','W','E','A','S','D','Z','X','C']; +const volumeMenuArray = ['+30','+20','+10','0','-10','-20','-30']; + +const stopMetronomes = () => { + padsArray.forEach(pad => { + sessionStorage.setItem(pad + 'metronomeIsPlaying', 'false'); + }); +} + +const reset = () => { + sessionStorage.clear(); + initialSamples(); + padsArray.forEach(pad => { + makeAudioControl(pad); + }); +}; + +const makeMetronomeSelection = (selection) => { + if (selection === "keys") { + padSelectingFor = ''; + drumPadGrid = document.getElementById('drum-pad-grid'); + metronomeMenuDisplayed = true; + showKeyMetronomeSelectionMenu(); + } else if (padsArray.includes(selection)) { + padSelectingFor = selection; + showMetronomeMenu(); + } else if (selection === 'Metronome Off') { + sessionStorage.setItem(padSelectingFor + 'isMetronome',false); + metronomeMenuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + makeAudioControl(padSelectingFor); + } else if (selection.includes('bpm')) { + sessionStorage.setItem(padSelectingFor + 'metronomeTempo',selection); + sessionStorage.setItem(padSelectingFor + 'isMetronome',true); + metronomeMenuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + makeAudioControl(padSelectingFor); + makeMetronomeIcons(padSelectingFor); + } else if (selection === '( cancel -- back )') { + metronomeMenuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + } +}; + +const showMetronomeMenu = () => { + const selectionMenu = Object.keys(metronomeTempos) + .map(item => (makeMetronomeSelectionMenuItem(item + ": " + metronomeTempos[item]))); + + selectionMenu.unshift(makeMetronomeSelectionMenuItem('Metronome Off')); + showMetronomeSelectionMenuItems(selectionMenu); +}; + +const showKeyMetronomeSelectionMenu = () => { + const metronomeSelectionMenu = padsArray + .map(item => (makeMetronomeSelectionMenuItem(item))); + + showMetronomeSelectionMenuItems(metronomeSelectionMenu); +}; + +const makeMetronomeSelectionMenuItem = (selector) => { + return '
' + selector + '
'; +}; + +const showMetronomeSelectionMenuItems = (menuItems) => { + menuItems.unshift(makeMetronomeSelectionMenuItem('( cancel -- back )')); + $('#display-middle-left-b').html(('
')); + for (let i = 0; i < menuItems.length; i++) { + let j = i + 3000; + $('#metronomeSelectionMenu').append(menuItems[i].replace('foo',j)); + $('#'+j).tooltip({ + content: makeMetronomeSelectionMenuItemToolTipContent($('#'+j).text()), + position: { my: "right top+150", at: "center bottom" }, + show: {delay: 250, duration: 0}, + classes: { + "ui-tooltip": "highlight" + }, + tooltipClass: "tool-tip-class", + }); + } +}; + +const makeMetronomeSelectionMenuItemToolTipContent = (text) => { + if (padsArray.includes(text)) { + return sessionStorage.getItem(text + 'isMetronome') === "false" ? 'Metronome Off' : sessionStorage.getItem(text + 'metronomeTempo'); + } else if (text === '( cancel -- back )') { + return text; + } +} + +const makeVolumeSelection = (selection) => { + if (selection === "keys") { + padSelectingFor = ''; + drumPadGrid = document.getElementById('drum-pad-grid'); + volumeMenuDisplayed = true; + showKeyVolumeSelectionMenu(); + } else if (padsArray.includes(selection)) { + padSelectingFor = selection; + showVolumeMenu(); + } else if (volumeMenuArray.includes(selection)) { + sessionStorage.setItem((padSelectingFor + 'volume'),selection); + volumeMenuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + } else if (selection === '( cancel -- back )') { + volumeMenuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + } +}; + +const showVolumeMenu = () => { + const selectionMenu = volumeMenuArray + .map(item => (makeVolumeSelectionMenuItem(item))); + + showVolumeSelectionMenuItems(selectionMenu); +}; + +const showKeyVolumeSelectionMenu = () => { + const volumeSelectionMenu = padsArray + .map(item => (makeVolumeSelectionMenuItem(item))); + + showVolumeSelectionMenuItems(volumeSelectionMenu); +}; + +const makeVolumeSelectionMenuItem = (selector) => { + return '
' + selector + '
'; +}; + +const showVolumeSelectionMenuItems = (menuItems) => { + menuItems.unshift(makeVolumeSelectionMenuItem('( cancel -- back )')); + $('#display-middle-left-b').html(('
')); + for (let i = 0; i < menuItems.length; i++) { + let j = i + 2000; + $('#volumeSelectionMenu').append(menuItems[i].replace('foo',j)); + $('#'+j).tooltip({ + content: makeVolumeSelectionMenuItemToolTipContent($('#'+j).text()), + position: { my: "right top+150", at: "center bottom" }, + show: {delay: 250, duration: 0}, + classes: { + "ui-tooltip": "highlight" + }, + tooltipClass: "tool-tip-class", + }); + } +}; + +const makeVolumeSelectionMenuItemToolTipContent = (text) => { + if (padsArray.includes(text)) { + return 'volume offset for ' + text; + } else if (text === '( cancel -- back )') { + return text; + } +} + +const makeSelection = (selection) => { + + if (selection === "keys") { + padSelectingFor = ''; + fileStringArray = []; + drumPadGrid = document.getElementById('drum-pad-grid'); + menuDisplayed = true; + showKeySelectionMenu(); + } else if (padsArray.includes(selection)) { + padSelectingFor = selection; + showFirstDirMenu(); + } else if (selection.substring(selection.length - 4) !== '.wav' && selection !== '( cancel -- back )') { + fileStringArray.push(selection); + if (fileStringArray.length === 1) { + showSecondDirMenu(); + } else if (fileStringArray.length === 2) { + showThirdDirMenu(); + } else { + showFourthDirMenu(); + } + } else if (selection.substring(selection.length - 4) === '.wav') { + fileStringArray.push(selection); + sessionStorage.setItem(padSelectingFor,fileStringArray.join('/')); + menuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + makeAudioControl(padSelectingFor); + } else if (selection === '( cancel -- back )') { + if (fileStringArray.length === 0) { + if (padSelectingFor === '') { + menuDisplayed = false; + $('#display-middle-left-b').html((drumPadGrid)); + } else { + padSelectingFor = ''; + showKeySelectionMenu(); + } + } else if (fileStringArray.length === 1) { + fileStringArray = []; + showFirstDirMenu(); + } else if (fileStringArray.length === 2) { + fileStringArray.pop(); + showSecondDirMenu(); + } else if (fileStringArray.length === 3) { + fileStringArray.pop(); + showThirdDirMenu(); + } + } +}; + + +const showFourthDirMenu = () => { + const selectionMenu = wavFiles[fileStringArray[0]][fileStringArray[1]][0][fileStringArray[2]] + .map(item => (makeSelectionMenuItem(item))); + showSelectionMenuItems(selectionMenu); +}; + + +const showThirdDirMenu = () => { + const selectionMenu = wavFiles[fileStringArray[0]][fileStringArray[1]] + .filter(item => typeof item === 'string') + .map(item => (makeSelectionMenuItem(item))); + + if (!(typeof wavFiles[fileStringArray[0]][fileStringArray[1]][0] === 'string')) { + const moreDirs = Object.keys(wavFiles[fileStringArray[0]][fileStringArray[1]][0]) + .map(item => (makeSelectionMenuItem(item))); + moreDirs.forEach(item => selectionMenu.push(item)); + } + showSelectionMenuItems(selectionMenu); +}; + + +const showSecondDirMenu = () => { + const selectionMenu = Object.keys(wavFiles[fileStringArray[0]]) + .map(item => (makeSelectionMenuItem(item))); + + showSelectionMenuItems(selectionMenu); +}; + + +const showFirstDirMenu = () => { + const selectionMenu = Object.keys(wavFiles) + .map(item => (makeSelectionMenuItem(item))); + + showSelectionMenuItems(selectionMenu); +}; + + +const showKeySelectionMenu = () => { + const selectionMenu = padsArray + .map(item => (makeSelectionMenuItem(item))); + + showSelectionMenuItems(selectionMenu); +}; + +const showSelectionMenuItems = (menuItems) => { + menuItems.unshift(makeSelectionMenuItem('( cancel -- back )')); + $('#display-middle-left-b').html(('
')); + for (let i = 0; i < menuItems.length; i++) { + let j = i + 1000; + $('#selectionMenu').append(menuItems[i].replace('foo',j)); + $('#'+j).tooltip({ + content: makeSelectionMenuItemToolTipContent($('#'+j).text()), + position: { my: "right top+150", at: "center bottom" }, + show: {delay: 250, duration: 0}, + classes: { + "ui-tooltip": "highlight" + }, + tooltipClass: "tool-tip-class", + }); + } +}; + +const makeSelectionMenuItemToolTipContent = (text) => { + if (padsArray.includes(text)) { + return 'select for ' + text; + } else if (text === '( cancel -- back )') { + return text; + } else if (fileStringArray.length === 0) { + return 'select for ' + padSelectingFor + ': ' + text; + } else if (fileStringArray.length === 1) { + return 'select for ' + padSelectingFor + ': ' + fileStringArray[0] + '/' + text; + } else { + return 'select for ' + padSelectingFor + ': ' + fileStringArray.join('/') + '/' + text; + } +} + +const makeSelectionMenuItem = (selector) => { + return '
' + selector + '
'; +}; diff --git a/drum-machine/metronomeTempos.js b/drum-machine/metronomeTempos.js new file mode 100644 index 0000000..c72b061 --- /dev/null +++ b/drum-machine/metronomeTempos.js @@ -0,0 +1,24 @@ +const metronomeTempos = { + 'Larghissimo': '20 bpm', + 'Adagissimo': '24 bpm', + 'Grave': '35 bpm', + 'Largo': '50 bpm', + 'Lento': '53 bpm', + 'Larghetto': '63 bpm', + 'Adagio': '71 bpm', + 'Adagietto': '75 bpm', + 'Marcia moderato': '84 bpm', + 'Andante': '92 bpm', + 'Andantino': '94 bpm', + 'Andante moderato': '95 bpm', + 'Moderato': '105 bpm', + 'Allegretto': '106 bpm', + 'Allegro moderato': '118 bpm', + 'Allegro': '138 bpm', + 'Vivace': '166 bpm', + 'Vivacissimo': '174 bpm', + 'Allegrissimo': '174 bpm', + 'Allegro vivace': '174 bpm', + 'Presto': '184 bpm', + 'Prestissimo': '205 bpm', +}; diff --git a/drum-machine/wavFiles.js b/drum-machine/wavFiles.js new file mode 100644 index 0000000..ef30e81 --- /dev/null +++ b/drum-machine/wavFiles.js @@ -0,0 +1,1038 @@ +const wavFiles = { + "Assorted-Hits": { + "Kicks": [ + { + "Loose-Kick": [ + "CYCdh_LooseKick-01.wav", + "CYCdh_LooseKick-02.wav", + "CYCdh_LooseKick-03.wav", + "CYCdh_LooseKick-04.wav", + "CYCdh_LooseKick-05.wav", + "CYCdh_LooseKick-06.wav", + "CYCdh_LooseKick-07.wav", + "CYCdh_LooseKick-08.wav" + ], + "Acoustic": [ + "CYCdh_AcouKick-01.wav", + "CYCdh_AcouKick-02.wav", + "CYCdh_AcouKick-03.wav", + "CYCdh_AcouKick-04.wav", + "CYCdh_AcouKick-05.wav", + "CYCdh_AcouKick-06.wav", + "CYCdh_AcouKick-07.wav", + "CYCdh_AcouKick-08.wav", + "CYCdh_AcouKick-09.wav", + "CYCdh_AcouKick-10.wav", + "CYCdh_AcouKick-11.wav", + "CYCdh_AcouKick-12.wav", + "CYCdh_AcouKick-13.wav", + "CYCdh_AcouKick-14.wav", + "CYCdh_AcouKick-15.wav", + "CYCdh_AcouKick-16.wav", + "CYCdh_AcouKick-17.wav", + "CYCdh_AcouKick-18.wav", + "CYCdh_AcouKick-19.wav", + "CYCdh_AcouKick-20.wav" + ], + "Kes-Kick": [ + "CYCdh_KesKick-01.wav", + "CYCdh_KesKick-02.wav", + "CYCdh_KesKick-03.wav", + "CYCdh_KesKick-04.wav", + "CYCdh_KesKick-05.wav", + "CYCdh_KesKick-06.wav", + "CYCdh_KesKick-07.wav", + "CYCdh_KesKick-08.wav" + ] + } + ], + "Cymbals": [ + { + "Trash-Crashes": [ + "CYCdh_TrashA-01.wav", + "CYCdh_TrashA-02.wav", + "CYCdh_TrashA-03.wav", + "CYCdh_TrashA-04.wav", + "CYCdh_TrashA-05.wav", + "CYCdh_TrashA-06.wav", + "CYCdh_TrashA-07.wav", + "CYCdh_TrashA-08.wav", + "CYCdh_TrashA-09.wav", + "CYCdh_TrashB-01.wav", + "CYCdh_TrashB-02.wav", + "CYCdh_TrashB-03.wav", + "CYCdh_TrashC-01.wav", + "CYCdh_TrashC-02.wav", + "CYCdh_TrashC-03.wav", + "CYCdh_TrashC-04.wav", + "CYCdh_TrashD-01.wav", + "CYCdh_TrashD-02.wav", + "CYCdh_TrashE-01.wav", + "CYCdh_TrashE-02.wav", + "CYCdh_TrashE-03.wav", + "CYCdh_TrashE-04.wav", + "CYCdh_TrashE-05.wav", + "CYCdh_TrashF-01.wav", + "CYCdh_TrashF-02.wav", + "CYCdh_TrashF-03.wav", + "CYCdh_TrashF-04.wav" + ] + }, + "CYCdh_Crash-01.wav", + "CYCdh_Crash-02.wav", + "CYCdh_Crash-03.wav", + "CYCdh_MultiCrash-01.wav", + "CYCdh_MultiCrash-02.wav", + "CYCdh_MultiCrash-03.wav", + "CYCdh_MultiCrashHi-01.wav", + "CYCdh_MultiCrashHi-02.wav", + "CYCdh_MultiCrashHi-03.wav", + "CYCdh_MultiCrashLo-01.wav", + "CYCdh_MultiCrashLo-02.wav", + "CYCdh_MultiCrashLo-03.wav" + ], + "Hi-Hats": [ + { + "Acoustic": [ + "Acoustic-Hat-01.wav", + "Acoustic-Hat-02.wav", + "Acoustic-Hat-03.wav", + "Acoustic-Hat-04.wav", + "Acoustic-Hat-05.wav", + "Acoustic-Hat-06.wav" + ], + "Sabian-B8": [ + "CYCdh_Sab_ClHat-01.wav", + "CYCdh_Sab_ClHat-02.wav", + "CYCdh_Sab_ClHat-03.wav", + "CYCdh_Sab_ClHat-04.wav", + "CYCdh_Sab_ClHat-05.wav", + "CYCdh_Sab_ClHat-06.wav", + "CYCdh_Sab_ClHat-07.wav", + "CYCdh_Sab_ClHat-08.wav", + "CYCdh_Sab_ClHat-09.wav", + "CYCdh_Sab_ClHat-10.wav", + "CYCdh_Sab_ClHat-11.wav", + "CYCdh_Sab_ClHat-12.wav", + "CYCdh_Sab_ClHat-13.wav", + "CYCdh_Sab_ClHat-14.wav", + "CYCdh_Sab_HfHat-01.wav", + "CYCdh_Sab_HfHat-02.wav", + "CYCdh_Sab_HfHat-03.wav", + "CYCdh_Sab_HfHat-04.wav", + "CYCdh_Sab_OpHat-01.wav", + "CYCdh_Sab_OpHat-02.wav", + "CYCdh_Sab_OpHat-03.wav", + "CYCdh_Sab_OpHat-04.wav", + "CYCdh_Sab_OpHat-05.wav", + "CYCdh_Sab_OpHat-06.wav", + "CYCdh_Sab_OpHat-07.wav", + "CYCdh_Sab_OpHat-08.wav", + "CYCdh_Sab_OpHat-09.wav", + "CYCdh_Sab_PdHat-01.wav", + "CYCdh_Sab_PdHat-02.wav" + ], + "Zildjian-K-Hats": [ + "KHats-Clsd-01.wav", + "KHats-Clsd-02.wav", + "KHats-Clsd-03.wav", + "KHats-Clsd-04.wav", + "KHats-Clsd-05.wav", + "KHats-Clsd-06.wav", + "KHats-Clsd-07.wav", + "KHats-Clsd-08.wav", + "KHats-Clsd-09.wav", + "KHats-Clsd-10.wav", + "KHats-Clsd-11.wav", + "KHats-HlfOp-01.wav", + "KHats-HlfOp-02.wav", + "KHats-HlfOp-03.wav", + "KHats-Open-01.wav", + "KHats-Open-02.wav", + "KHats-Open-03.wav", + "KHats-Open-04.wav", + "KHats-Open-05.wav", + "KHats-Open-06.wav", + "KHats-Open-07.wav", + "KHats-Open-08.wav", + "KHats-Open-09.wav", + "KHats-Pdl-01.wav", + "KHats-Pdl-02.wav", + "KHats-Pdl-03.wav", + "KHats-Pdl-04.wav" + ] + } + ], + "Snares": [ + { + "Acoustic": [ + "Acoustic-Snare-01.wav", + "Acoustic-Snare-02.wav", + "Acoustic-Snare-03.wav", + "Acoustic-Snare-04.wav" + ], + "Ludwig-A": [ + "CYCdh_LudFlamA-01.wav", + "CYCdh_LudFlamA-02.wav", + "CYCdh_LudFlamA-03.wav", + "CYCdh_LudFlamA-04.wav", + "CYCdh_LudFlamA-05.wav", + "CYCdh_LudRimA-01.wav", + "CYCdh_LudRimA-02.wav", + "CYCdh_LudRimA-03.wav", + "CYCdh_LudRimA-04.wav", + "CYCdh_LudRimA-05.wav", + "CYCdh_LudRimA-06.wav", + "CYCdh_LudRimA-07.wav", + "CYCdh_LudSdStA-01.wav", + "CYCdh_LudSdStA-02.wav", + "CYCdh_LudSdStA-03.wav", + "CYCdh_LudSdStA-04.wav", + "CYCdh_LudSdStA-05.wav", + "CYCdh_LudSdStA-06.wav", + "CYCdh_LudSdStA-07.wav", + "CYCdh_LudSnrA-01.wav", + "CYCdh_LudSnrA-02.wav", + "CYCdh_LudSnrA-03.wav", + "CYCdh_LudSnrA-04.wav", + "CYCdh_LudSnrA-05.wav", + "CYCdh_LudSnrOffA-01.wav", + "CYCdh_LudSnrOffA-02.wav", + "CYCdh_LudSnrOffA-03.wav", + "CYCdh_LudSnrOffA-04.wav", + "CYCdh_LudSnrOffA-05.wav", + "CYCdh_LudSnrOffA-06.wav", + "CYCdh_LudSnrOffA-07.wav", + "CYCdh_LudSnrOffA-08.wav" + ], + "Ludwig-B": [ + "CYCdh_LudFlamB-01.wav", + "CYCdh_LudFlamB-02.wav", + "CYCdh_LudFlamB-03.wav", + "CYCdh_LudFlamB-04.wav", + "CYCdh_LudFlamB-05.wav", + "CYCdh_LudRimB-01.wav", + "CYCdh_LudRimB-02.wav", + "CYCdh_LudRimB-03.wav", + "CYCdh_LudRimB-04.wav", + "CYCdh_LudRimB-05.wav", + "CYCdh_LudRimB-06.wav", + "CYCdh_LudRimB-07.wav", + "CYCdh_LudSdStB-01.wav", + "CYCdh_LudSdStB-02.wav", + "CYCdh_LudSdStB-03.wav", + "CYCdh_LudSdStB-04.wav", + "CYCdh_LudSdStB-05.wav", + "CYCdh_LudSdStB-06.wav", + "CYCdh_LudSdStB-07.wav", + "CYCdh_LudSnrB-01.wav", + "CYCdh_LudSnrB-02.wav", + "CYCdh_LudSnrB-03.wav", + "CYCdh_LudSnrB-04.wav", + "CYCdh_LudSnrB-05.wav", + "CYCdh_LudSnrOffB-01.wav", + "CYCdh_LudSnrOffB-02.wav", + "CYCdh_LudSnrOffB-03.wav", + "CYCdh_LudSnrOffB-04.wav", + "CYCdh_LudSnrOffB-05.wav", + "CYCdh_LudSnrOffB-06.wav", + "CYCdh_LudSnrOffB-07.wav", + "CYCdh_LudSnrOffB-08.wav" + ], + "Ludwig-C": [ + "CYCdh_LudFlamC-01.wav", + "CYCdh_LudFlamC-02.wav", + "CYCdh_LudFlamC-03.wav", + "CYCdh_LudFlamC-04.wav", + "CYCdh_LudFlamC-05.wav", + "CYCdh_LudRimC-01.wav", + "CYCdh_LudRimC-02.wav", + "CYCdh_LudRimC-03.wav", + "CYCdh_LudRimC-04.wav", + "CYCdh_LudRimC-05.wav", + "CYCdh_LudRimC-06.wav", + "CYCdh_LudRimC-07.wav", + "CYCdh_LudSdStC-01.wav", + "CYCdh_LudSdStC-02.wav", + "CYCdh_LudSdStC-03.wav", + "CYCdh_LudSdStC-04.wav", + "CYCdh_LudSdStC-05.wav", + "CYCdh_LudSdStC-06.wav", + "CYCdh_LudSdStC-07.wav", + "CYCdh_LudSnrC-01.wav", + "CYCdh_LudSnrC-02.wav", + "CYCdh_LudSnrC-03.wav", + "CYCdh_LudSnrC-04.wav", + "CYCdh_LudSnrC-05.wav", + "CYCdh_LudSnrOffC-01.wav", + "CYCdh_LudSnrOffC-02.wav", + "CYCdh_LudSnrOffC-03.wav", + "CYCdh_LudSnrOffC-04.wav", + "CYCdh_LudSnrOffC-05.wav", + "CYCdh_LudSnrOffC-06.wav", + "CYCdh_LudSnrOffC-07.wav", + "CYCdh_LudSnrOffC-08.wav" + ], + "Piccolo-Sidestick": [ + "PearlPiccolo-Side-SnrOff-01.wav", + "PearlPiccolo-Side-SnrOff-02.wav", + "PearlPiccolo-Side-SnrOff-03.wav", + "PearlPiccolo-Side-SnrOff-04.wav", + "PearlPiccolo-Side-SnrOff-05.wav", + "PearlPiccolo-Side-SnrOn-01.wav", + "PearlPiccolo-Side-SnrOn-02.wav", + "PearlPiccolo-Side-SnrOn-03.wav", + "PearlPiccolo-Side-SnrOn-04.wav", + "PearlPiccolo-Side-SnrOn-05.wav", + "PearlPiccolo-Side-SnrOn-06.wav", + "PearlPiccolo-Side-SnrOn-07.wav", + "PearlPiccolo-Side-SnrOn-08.wav", + "PearlPiccolo-Side-SnrOn-09.wav" + ], + "Sonor-Force-3000": [ + "CYCdh_SonFlam-01.wav", + "CYCdh_SonFlam-02.wav", + "CYCdh_SonFlam-03.wav", + "CYCdh_SonRim-01.wav", + "CYCdh_SonRim-02.wav", + "CYCdh_SonRim-03.wav", + "CYCdh_SonRim-04.wav", + "CYCdh_SonRim-05.wav", + "CYCdh_SonRim-06.wav", + "CYCdh_SonRim-07.wav", + "CYCdh_SonRim-08.wav", + "CYCdh_SonRim-09.wav", + "CYCdh_SonRim-10.wav", + "CYCdh_SonSdSt-01.wav", + "CYCdh_SonSdSt-02.wav", + "CYCdh_SonSdSt-03.wav", + "CYCdh_SonSdSt-04.wav", + "CYCdh_SonSdSt-05.wav", + "CYCdh_SonSdSt-06.wav", + "CYCdh_SonSdSt-07.wav", + "CYCdh_SonSnr-01.wav", + "CYCdh_SonSnr-02.wav", + "CYCdh_SonSnr-03.wav", + "CYCdh_SonSnr-04.wav", + "CYCdh_SonSnr-05.wav", + "CYCdh_SonSnr-06.wav", + "CYCdh_SonSnrOff-01.wav", + "CYCdh_SonSnrOff-02.wav", + "CYCdh_SonSnrOff-03.wav", + "CYCdh_SonSnrOff-04.wav", + "CYCdh_SonSnrOff-05.wav", + "CYCdh_SonSnrOff-06.wav", + "CYCdh_SonUpsd-01.wav", + "CYCdh_SonUpsd-02.wav", + "CYCdh_SonUpsd-03.wav", + "CYCdh_SonUpsd-04.wav", + "CYCdh_SonUpsd-05.wav", + "CYCdh_SonUpsd-06.wav", + "CYCdh_SonUpsd-07.wav", + "CYCdh_SonUpsd-08.wav" + ], + "Tama-Wood": [ + "CYCdh_TamFlam-01.wav", + "CYCdh_TamFlam-02.wav", + "CYCdh_TamFlam-03.wav", + "CYCdh_TamRim-01.wav", + "CYCdh_TamRim-02.wav", + "CYCdh_TamRim-03.wav", + "CYCdh_TamRim-04.wav", + "CYCdh_TamRim-05.wav", + "CYCdh_TamRim-06.wav", + "CYCdh_TamRim-07.wav", + "CYCdh_TamRim-08.wav", + "CYCdh_TamRimTgt-01.wav", + "CYCdh_TamRimTgt-02.wav", + "CYCdh_TamRimTgt-03.wav", + "CYCdh_TamRimTgt-04.wav", + "CYCdh_TamRimTgt-05.wav", + "CYCdh_TamSdSt-01.wav", + "CYCdh_TamSdSt-02.wav", + "CYCdh_TamSdSt-03.wav", + "CYCdh_TamSdSt-04.wav", + "CYCdh_TamSdSt-05.wav", + "CYCdh_TamSdSt-06.wav", + "CYCdh_TamSdSt-07.wav", + "CYCdh_TamSdSt-08.wav", + "CYCdh_TamSnr-01.wav", + "CYCdh_TamSnr-02.wav", + "CYCdh_TamSnr-03.wav", + "CYCdh_TamSnr-04.wav", + "CYCdh_TamSnr-05.wav", + "CYCdh_TamSnr-06.wav", + "CYCdh_TamSnr-07.wav", + "CYCdh_TamSnr-08.wav", + "CYCdh_TamSnrEd-01.wav", + "CYCdh_TamSnrEd-02.wav", + "CYCdh_TamSnrEd-03.wav", + "CYCdh_TamSnrEd-04.wav", + "CYCdh_TamSnrEd-05.wav", + "CYCdh_TamSnrEd-06.wav", + "CYCdh_TamSnrEd-07.wav", + "CYCdh_TamSnrEd-08.wav", + "CYCdh_TamSnrTgt-01.wav", + "CYCdh_TamSnrTgt-02.wav", + "CYCdh_TamSnrTgt-03.wav", + "CYCdh_TamSnrTgt-04.wav", + "CYCdh_TamSnrTgt-05.wav", + "CYCdh_TamSnrTgt-06.wav", + "CYCdh_TamSnrTgt-07.wav", + "CYCdh_TamUpsd-01.wav", + "CYCdh_TamUpsd-02.wav", + "CYCdh_TamUpsd-03.wav", + "CYCdh_TamUpsd-04.wav", + "CYCdh_TamUpsd-05.wav", + "CYCdh_TamUpsd-06.wav", + "CYCdh_TamUpsd-07.wav", + "CYCdh_TamUpsd-08.wav", + "CYCdh_TamUpsd-09.wav" + ], + "Wooden-Piccolo": [ + "CYCdh_PiccoloA-01.wav", + "CYCdh_PiccoloA-02.wav", + "CYCdh_PiccoloA-03.wav", + "CYCdh_PiccoloA-04.wav", + "CYCdh_PiccoloB-01.wav", + "CYCdh_PiccoloB-02.wav", + "CYCdh_PiccoloB-03.wav", + "CYCdh_PiccoloB-04.wav", + "CYCdh_PiccoloC-01.wav", + "CYCdh_PiccoloC-02.wav", + "CYCdh_PiccoloC-03.wav", + "CYCdh_PiccoloC-04.wav", + "CYCdh_PiccoloD-01.wav", + "CYCdh_PiccoloD-02.wav", + "CYCdh_PiccoloD-03.wav", + "CYCdh_PiccoloD-04.wav", + "CYCdh_PiccoloE-01.wav", + "CYCdh_PiccoloE-02.wav", + "CYCdh_PiccoloE-03.wav", + "CYCdh_PiccoloE-04.wav" + ] + } + ] + }, + "Drum-Kits": { + "Kit-10-Vinyl": [ + "CYCdh_VinylK3-ClHat01.wav", + "CYCdh_VinylK3-ClHat02.wav", + "CYCdh_VinylK3-Kick01.wav", + "CYCdh_VinylK3-Kick02.wav", + "CYCdh_VinylK3-Kick03.wav", + "CYCdh_VinylK3-Kick04.wav", + "CYCdh_VinylK3-OpHat.wav", + "CYCdh_VinylK3-Perc01.wav", + "CYCdh_VinylK3-Perc02.wav", + "CYCdh_VinylK3-Perc03.wav", + "CYCdh_VinylK3-Perc04.wav", + "CYCdh_VinylK3-Snr01.wav", + "CYCdh_VinylK3-Snr02.wav" + ], + "Kit-11-Vinyl": [ + "CYCdh_VinylK4-China.wav", + "CYCdh_VinylK4-ClHat01.wav", + "CYCdh_VinylK4-ClHat02.wav", + "CYCdh_VinylK4-ClHat03.wav", + "CYCdh_VinylK4-ClHat04.wav", + "CYCdh_VinylK4-ClHat05.wav", + "CYCdh_VinylK4-Crash01.wav", + "CYCdh_VinylK4-Crash02.wav", + "CYCdh_VinylK4-Kick01.wav", + "CYCdh_VinylK4-Kick02.wav", + "CYCdh_VinylK4-OpHat01.wav", + "CYCdh_VinylK4-OpHat02.wav", + "CYCdh_VinylK4-Ride01.wav", + "CYCdh_VinylK4-Ride02.wav", + "CYCdh_VinylK4-Ride03.wav", + "CYCdh_VinylK4-Ride04.wav", + "CYCdh_VinylK4-Snr01.wav", + "CYCdh_VinylK4-Snr02.wav", + "CYCdh_VinylK4-Snr03.wav", + "CYCdh_VinylK4-Snr04.wav", + "CYCdh_VinylK4-Snr05.wav", + "CYCdh_VinylK4-Snr06.wav", + "CYCdh_VinylK4-Tom01.wav", + "CYCdh_VinylK4-Tom02.wav", + "CYCdh_VinylK4-Tom03.wav" + ], + "Kit-12-Vinyl": [ + "CYCdh_VinylK5-ClHat01.wav", + "CYCdh_VinylK5-ClHat02.wav", + "CYCdh_VinylK5-ClHat03.wav", + "CYCdh_VinylK5-Kick01.wav", + "CYCdh_VinylK5-Kick02.wav", + "CYCdh_VinylK5-OpHat.wav", + "CYCdh_VinylK5-Snr01.wav", + "CYCdh_VinylK5-Snr02.wav", + "CYCdh_VinylK5-Snr03.wav", + "CYCdh_VinylK5-Snr04.wav", + "CYCdh_VinylK5-Tom01.wav", + "CYCdh_VinylK5-Tom02.wav", + "CYCdh_VinylK5-Tom03.wav" + ], + "Kit-13-Acoustic": [ + "CYCdh_K4-4OpHat03.wav", + "CYCdh_K4-ClHat01.wav", + "CYCdh_K4-ClHat02.wav", + "CYCdh_K4-ClHat03.wav", + "CYCdh_K4-Kick01.wav", + "CYCdh_K4-Kick02.wav", + "CYCdh_K4-Kick03.wav", + "CYCdh_K4-Kick04.wav", + "CYCdh_K4-Kick05.wav", + "CYCdh_K4-OpHat01.wav", + "CYCdh_K4-OpHat02.wav", + "CYCdh_K4-Snr01.wav", + "CYCdh_K4-Snr02.wav", + "CYCdh_K4-Snr03.wav", + "CYCdh_K4-Snr04.wav", + "CYCdh_K4-Snr05.wav", + "CYCdh_K4-Snr06.wav", + "CYCdh_K4-Snr07.wav", + "CYCdh_K4-Snr08.wav", + "CYCdh_K4-Snr09.wav", + "CYCdh_K4-Snr10.wav", + "CYCdh_K4-Snr11.wav", + "CYCdh_K4-Trash01.wav", + "CYCdh_K4-Trash02.wav", + "CYCdh_K4-Trash03.wav", + "CYCdh_K4-Trash04.wav", + "CYCdh_K4-Trash05.wav", + "CYCdh_K4-Trash06.wav", + "CYCdh_K4-Trash07.wav", + "CYCdh_K4-Trash08.wav", + "CYCdh_K4-Trash09.wav", + "CYCdh_K4-Trash10.wav" + ], + "Kit-14-Acoustic": [ + "CYCdh_K5-ClHat01.wav", + "CYCdh_K5-ClHat02.wav", + "CYCdh_K5-ClHat03.wav", + "CYCdh_K5-Kick01.wav", + "CYCdh_K5-Kick02.wav", + "CYCdh_K5-Kick93.wav", + "CYCdh_K5-OpHat01.wav", + "CYCdh_K5-OpHat02.wav", + "CYCdh_K5-PdHat.wav", + "CYCdh_K5-Rim01.wav", + "CYCdh_K5-Rim02.wav", + "CYCdh_K5-Rim03.wav", + "CYCdh_K5-SdSt01.wav", + "CYCdh_K5-SdSt02.wav", + "CYCdh_K5-SdSt03.wav", + "CYCdh_K5-Snr01.wav", + "CYCdh_K5-Snr02.wav", + "CYCdh_K5-Snr03.wav", + "CYCdh_K5-Snr04.wav", + "CYCdh_K5-Tom01a.wav", + "CYCdh_K5-Tom01b.wav", + "CYCdh_K5-Tom01c.wav", + "CYCdh_K5-Tom02a.wav", + "CYCdh_K5-Tom02b.wav", + "CYCdh_K5-Tom02c.wav", + "CYCdh_K5-Tom03a.wav", + "CYCdh_K5-Tom03b.wav", + "CYCdh_K5-Tom03c.wav" + ], + "Kit-15-Electro": [ + "CYCdh_ElecK05-Clap01.wav", + "CYCdh_ElecK05-Clap02.wav", + "CYCdh_ElecK05-ClHat01.wav", + "CYCdh_ElecK05-ClHat02.wav", + "CYCdh_ElecK05-ClHat03.wav", + "CYCdh_ElecK05-ClHat04.wav", + "CYCdh_ElecK05-Kick01.wav", + "CYCdh_ElecK05-Kick02.wav", + "CYCdh_ElecK05-OpHat01.wav", + "CYCdh_ElecK05-OpHat02.wav", + "CYCdh_ElecK05-Snr01.wav", + "CYCdh_ElecK05-Snr02.wav", + "CYCdh_ElecK05-Snr03.wav", + "CYCdh_ElecK05-Snr04.wav" + ], + "Kit-16-Electro": [ + "CYCdh_ElecK06-Clap01.wav", + "CYCdh_ElecK06-Clap02.wav", + "CYCdh_ElecK06-Clap03.wav", + "CYCdh_ElecK06-ClHat01.wav", + "CYCdh_ElecK06-ClHat02.wav", + "CYCdh_ElecK06-Kick01.wav", + "CYCdh_ElecK06-Kick02.wav", + "CYCdh_ElecK06-OpHat.wav", + "CYCdh_ElecK06-Snr01.wav", + "CYCdh_ElecK06-Snr02.wav", + "CYCdh_ElecK06-Snr03.wav" + ], + "Kit-17-Electro": [ + "CYCdh_ElecK07-ClHat01.wav", + "CYCdh_ElecK07-ClHat02.wav", + "CYCdh_ElecK07-Kick01.wav", + "CYCdh_ElecK07-Kick02.wav", + "CYCdh_ElecK07-OpHat.wav", + "CYCdh_ElecK07-Snr01.wav", + "CYCdh_ElecK07-Snr02.wav", + "CYCdh_ElecK07-Snr03.wav" + ], + "Kit-18-Acoustic": [ + "CYCdh_K6-ClHat.wav", + "CYCdh_K6-Kick01.wav", + "CYCdh_K6-OpHat01.wav", + "CYCdh_K6-OpHat02.wav", + "CYCdh_K6-Snr01.wav", + "CYCdh_K6-Snr02.wav", + "CYCdh_K6-Snr03.wav", + "CYCdh_K6-Snr04.wav", + "CYCdh_K6-SnrBuzz.wav" + ], + "Kit-1-Acoustic-close": [ + "CYCdh_K1close_ClHat-01.wav", + "CYCdh_K1close_ClHat-02.wav", + "CYCdh_K1close_ClHat-03.wav", + "CYCdh_K1close_ClHat-04.wav", + "CYCdh_K1close_ClHat-05.wav", + "CYCdh_K1close_ClHat-06.wav", + "CYCdh_K1close_ClHat-07.wav", + "CYCdh_K1close_ClHat-08.wav", + "CYCdh_K1close_ClHat-09.wav", + "CYCdh_K1close_Flam-01.wav", + "CYCdh_K1close_Flam-02.wav", + "CYCdh_K1close_Flam-03.wav", + "CYCdh_K1close_Flam-04.wav", + "CYCdh_K1close_Flam-05.wav", + "CYCdh_K1close_Kick-01.wav", + "CYCdh_K1close_Kick-02.wav", + "CYCdh_K1close_Kick-03.wav", + "CYCdh_K1close_Kick-04.wav", + "CYCdh_K1close_Kick-05.wav", + "CYCdh_K1close_Kick-06.wav", + "CYCdh_K1close_Kick-07.wav", + "CYCdh_K1close_Kick-08.wav", + "CYCdh_K1close_OpHat-01.wav", + "CYCdh_K1close_OpHat-02.wav", + "CYCdh_K1close_OpHat-03.wav", + "CYCdh_K1close_OpHat-04.wav", + "CYCdh_K1close_OpHat-05.wav", + "CYCdh_K1close_OpHat-06.wav", + "CYCdh_K1close_OpHat-07.wav", + "CYCdh_K1close_PdHat-01.wav", + "CYCdh_K1close_PdHat-02.wav", + "CYCdh_K1close_PdHat-03.wav", + "CYCdh_K1close_PdHat-04.wav", + "CYCdh_K1close_Rim-01.wav", + "CYCdh_K1close_Rim-02.wav", + "CYCdh_K1close_Rim-03.wav", + "CYCdh_K1close_Rim-04.wav", + "CYCdh_K1close_Rim-05.wav", + "CYCdh_K1close_Rim-06.wav", + "CYCdh_K1close_Rim-07.wav", + "CYCdh_K1close_SdSt-01.wav", + "CYCdh_K1close_SdSt-02.wav", + "CYCdh_K1close_SdSt-03.wav", + "CYCdh_K1close_SdSt-04.wav", + "CYCdh_K1close_SdSt-05.wav", + "CYCdh_K1close_SdSt-06.wav", + "CYCdh_K1close_SdSt-07.wav", + "CYCdh_K1close_Snr-01.wav", + "CYCdh_K1close_Snr-02.wav", + "CYCdh_K1close_Snr-03.wav", + "CYCdh_K1close_Snr-04.wav", + "CYCdh_K1close_Snr-05.wav", + "CYCdh_K1close_SnrOff-01.wav", + "CYCdh_K1close_SnrOff-02.wav", + "CYCdh_K1close_SnrOff-03.wav", + "CYCdh_K1close_SnrOff-04.wav", + "CYCdh_K1close_SnrOff-05.wav", + "CYCdh_K1close_SnrOff-06.wav", + "CYCdh_K1close_SnrOff-07.wav", + "CYCdh_K1close_SnrOff-08.wav" + ], + "Kit-2-Acoustic-room": [ + "CYCdh_K2room_ClHat-01.wav", + "CYCdh_K2room_ClHat-02.wav", + "CYCdh_K2room_ClHat-03.wav", + "CYCdh_K2room_ClHat-04.wav", + "CYCdh_K2room_ClHat-05.wav", + "CYCdh_K2room_ClHat-06.wav", + "CYCdh_K2room_ClHat-07.wav", + "CYCdh_K2room_ClHat-08.wav", + "CYCdh_K2room_ClHat-09.wav", + "CYCdh_K2room_Flam-01.wav", + "CYCdh_K2room_Flam-02.wav", + "CYCdh_K2room_Flam-03.wav", + "CYCdh_K2room_Flam-04.wav", + "CYCdh_K2room_Flam-05.wav", + "CYCdh_K2room_Kick-01.wav", + "CYCdh_K2room_Kick-02.wav", + "CYCdh_K2room_Kick-03.wav", + "CYCdh_K2room_Kick-04.wav", + "CYCdh_K2room_Kick-05.wav", + "CYCdh_K2room_Kick-06.wav", + "CYCdh_K2room_Kick-07.wav", + "CYCdh_K2room_Kick-08.wav", + "CYCdh_K2room_OpHat-01.wav", + "CYCdh_K2room_OpHat-02.wav", + "CYCdh_K2room_OpHat-03.wav", + "CYCdh_K2room_OpHat-04.wav", + "CYCdh_K2room_OpHat-05.wav", + "CYCdh_K2room_OpHat-06.wav", + "CYCdh_K2room_OpHat-07.wav", + "CYCdh_K2room_PdHat-01.wav", + "CYCdh_K2room_PdHat-02.wav", + "CYCdh_K2room_PdHat-03.wav", + "CYCdh_K2room_PdHat-04.wav", + "CYCdh_K2room_Rim-01.wav", + "CYCdh_K2room_Rim-02.wav", + "CYCdh_K2room_Rim-03.wav", + "CYCdh_K2room_Rim-04.wav", + "CYCdh_K2room_Rim-05.wav", + "CYCdh_K2room_Rim-06.wav", + "CYCdh_K2room_Rim-07.wav", + "CYCdh_K2room_SdSt-01.wav", + "CYCdh_K2room_SdSt-02.wav", + "CYCdh_K2room_SdSt-03.wav", + "CYCdh_K2room_SdSt-04.wav", + "CYCdh_K2room_SdSt-05.wav", + "CYCdh_K2room_SdSt-06.wav", + "CYCdh_K2room_SdSt-07.wav", + "CYCdh_K2room_Snr-01.wav", + "CYCdh_K2room_Snr-02.wav", + "CYCdh_K2room_Snr-03.wav", + "CYCdh_K2room_Snr-04.wav", + "CYCdh_K2room_Snr-05.wav", + "CYCdh_K2room_SnrOff-01.wav", + "CYCdh_K2room_SnrOff-02.wav", + "CYCdh_K2room_SnrOff-03.wav", + "CYCdh_K2room_SnrOff-04.wav", + "CYCdh_K2room_SnrOff-05.wav", + "CYCdh_K2room_SnrOff-06.wav", + "CYCdh_K2room_SnrOff-07.wav", + "CYCdh_K2room_SnrOff-08.wav" + ], + "Kit-3-Acoustic": [ + "CyCdh_K3ClHat-01.wav", + "CyCdh_K3ClHat-02.wav", + "CyCdh_K3ClHat-03.wav", + "CyCdh_K3ClHat-04.wav", + "CyCdh_K3Crash-01.wav", + "CyCdh_K3Crash-02.wav", + "CyCdh_K3Crash-03.wav", + "CyCdh_K3Crash-04.wav", + "CyCdh_K3Crash-05.wav", + "CyCdh_K3Crash-06.wav", + "CyCdh_K3Crash-07.wav", + "CyCdh_K3HfHat.wav", + "CyCdh_K3Kick-01.wav", + "CyCdh_K3Kick-02.wav", + "CyCdh_K3Kick-03.wav", + "CyCdh_K3OpHat-01.wav", + "CyCdh_K3OpHat-02.wav", + "CyCdh_K3OpHat-03.wav", + "CyCdh_K3Rim-01.wav", + "CyCdh_K3SdSt-01.wav", + "CyCdh_K3SdSt-02.wav", + "CyCdh_K3SdSt-03.wav", + "CyCdh_K3SdSt-04.wav", + "CyCdh_K3SdSt-05.wav", + "CyCdh_K3SdSt-06.wav", + "CyCdh_K3SdSt-07.wav", + "CyCdh_K3Snr-01.wav", + "CyCdh_K3Snr-02.wav", + "CyCdh_K3Snr-03.wav", + "CyCdh_K3Snr-04.wav", + "CyCdh_K3Snr-05.wav", + "CyCdh_K3Snr-06.wav", + "CyCdh_K3Snr-07.wav", + "CyCdh_K3Snr-08.wav", + "CyCdh_K3Snr-09.wav", + "CyCdh_K3Snr-10.wav", + "CyCdh_K3Tom-01.wav", + "CyCdh_K3Tom-04.wav", + "CyCdh_K3Tom-05.wav" + ], + "Kit-4-Electro": [ + "CYCdh_ElecK01-ClHat01.wav", + "CYCdh_ElecK01-ClHat02.wav", + "CYCdh_ElecK01-ClHat03.wav", + "CYCdh_ElecK01-Cymbal.wav", + "CYCdh_ElecK01-Kick01.wav", + "CYCdh_ElecK01-Kick02.wav", + "CYCdh_ElecK01-OpHat01.wav", + "CYCdh_ElecK01-OpHat02.wav", + "CYCdh_ElecK01-Snr01.wav", + "CYCdh_ElecK01-Snr02.wav", + "CYCdh_ElecK01-Snr03.wav", + "CYCdh_ElecK01-Tom01.wav", + "CYCdh_ElecK01-Tom02.wav", + "CYCdh_ElecK01-Tom03.wav", + "CYCdh_ElecK01-Tom04.wav" + ], + "Kit-5-Electro": [ + "CYCdh_ElecK02-Clap01.wav", + "CYCdh_ElecK02-Clap02.wav", + "CYCdh_ElecK02-ClHat01.wav", + "CYCdh_ElecK02-ClHat02.wav", + "CYCdh_ElecK02-FX01.wav", + "CYCdh_ElecK02-FX02.wav", + "CYCdh_ElecK02-FX03.wav", + "CYCdh_ElecK02-HfHat.wav", + "CYCdh_ElecK02-Kick01.wav", + "CYCdh_ElecK02-Kick02.wav", + "CYCdh_ElecK02-Snr01.wav", + "CYCdh_ElecK02-Snr02.wav", + "CYCdh_ElecK02-Tom01.wav", + "CYCdh_ElecK02-Tom02.wav", + "CYCdh_ElecK02-Tom03.wav" + ], + "Kit-6-Electro": [ + "CYCdh_ElecK03-Clap01.wav", + "CYCdh_ElecK03-Clap02.wav", + "CYCdh_ElecK03-ClHat.wav", + "CYCdh_ElecK03-Kick01.wav", + "CYCdh_ElecK03-Kick02.wav", + "CYCdh_ElecK03-OpHat.wav", + "CYCdh_ElecK03-PdHat.wav", + "CYCdh_ElecK03-Snr01.wav", + "CYCdh_ElecK03-Snr02.wav", + "CYCdh_ElecK03-Tom01.wav", + "CYCdh_ElecK03-Tom02.wav", + "CYCdh_ElecK03-Tom03.wav", + "CYCdh_ElecK03-Tom04.wav", + "CYCdh_ElecK03-Tom05.wav" + ], + "Kit-7-Electro": [ + "CYCdh_ElecK04-Clap.wav", + "CYCdh_ElecK04-ClHat01.wav", + "CYCdh_ElecK04-ClHat02.wav", + "CYCdh_ElecK04-Cymbal01.wav", + "CYCdh_ElecK04-Cymbal02.wav", + "CYCdh_ElecK04-HfHat.wav", + "CYCdh_ElecK04-Kick01.wav", + "CYCdh_ElecK04-Kick02.wav", + "CYCdh_ElecK04-Kick03.wav", + "CYCdh_ElecK04-Snr01.wav", + "CYCdh_ElecK04-Snr02.wav", + "CYCdh_ElecK04-Snr03.wav", + "CYCdh_ElecK04-Tom01.wav", + "CYCdh_ElecK04-Tom02.wav", + "CYCdh_ElecK04-Tom03.wav", + "CYCdh_ElecK04-Tom04.wav" + ], + "Kit-8-Vinyl": [ + "CYCdh_VinylK1-ClHat01.wav", + "CYCdh_VinylK1-ClHat02.wav", + "CYCdh_VinylK1-Kick01.wav", + "CYCdh_VinylK1-Kick02.wav", + "CYCdh_VinylK1-Kick03.wav", + "CYCdh_VinylK1-OpHat.wav", + "CYCdh_VinylK1-Shkr01.wav", + "CYCdh_VinylK1-Shkr02.wav", + "CYCdh_VinylK1-Shkr03.wav", + "CYCdh_VinylK1-Snr01.wav", + "CYCdh_VinylK1-Snr02.wav", + "CYCdh_VinylK1-Tamb.wav" + ], + "Kit-9-Vinyl": [ + "CYCdh_VinylK2-ClHat.wav", + "CYCdh_VinylK2-HfHat.wav", + "CYCdh_VinylK2-Kick02.wav", + "CYCdh_VinylK2-Kicki01.wav", + "CYCdh_VinylK2-OpHat01.wav", + "CYCdh_VinylK2-OpHat02.wav", + "CYCdh_VinylK2-Ride01.wav", + "CYCdh_VinylK2-Ride02.wav", + "CYCdh_VinylK2-Snr01.wav", + "CYCdh_VinylK2-Snr02.wav", + "CYCdh_VinylK2-Tom01.wav", + "CYCdh_VinylK2-Tom02.wav" + ], + "Kurzweil-Kit-01": [ + "CYCdh_Kurz01-ClHat.wav", + "CYCdh_Kurz01-Crash01.wav", + "CYCdh_Kurz01-Crash02.wav", + "CYCdh_Kurz01-Crash03.wav", + "CYCdh_Kurz01-Crash04.wav", + "CYCdh_Kurz01-HfHat.wav", + "CYCdh_Kurz01-Kick01.wav", + "CYCdh_Kurz01-Kick02.wav", + "CYCdh_Kurz01-Kick03.wav", + "CYCdh_Kurz01-OpHat01.wav", + "CYCdh_Kurz01-OpHat02.wav", + "CYCdh_Kurz01-PdHat.wav", + "CYCdh_Kurz01-RevCrash.wav", + "CYCdh_Kurz01-Ride01.wav", + "CYCdh_Kurz01-Ride02.wav", + "CYCdh_Kurz01-SdSt.wav", + "CYCdh_Kurz01-Snr01.wav", + "CYCdh_Kurz01-Snr02.wav", + "CYCdh_Kurz01-Snr03.wav", + "CYCdh_Kurz01-Tom01.wav", + "CYCdh_Kurz01-Tom02.wav", + "CYCdh_Kurz01-Tom03.wav", + "CYCdh_Kurz01-Tom04.wav" + ], + "Kurzweil-Kit-02": [ + "CYCdh_Kurz02-ClHat.wav", + "CYCdh_Kurz02-Crash01.wav", + "CYCdh_Kurz02-Crash02.wav", + "CYCdh_Kurz02-HfHat.wav", + "CYCdh_Kurz02-Kick01.wav", + "CYCdh_Kurz02-Kick02.wav", + "CYCdh_Kurz02-OpHat.wav", + "CYCdh_Kurz02-PdHat.wav", + "CYCdh_Kurz02-Ride01.wav", + "CYCdh_Kurz02-Ride02.wav", + "CYCdh_Kurz02-SdSt.wav", + "CYCdh_Kurz02-Snr01.wav", + "CYCdh_Kurz02-Snr02.wav", + "CYCdh_Kurz02-Tom01.wav", + "CYCdh_Kurz02-Tom02.wav", + "CYCdh_Kurz02-Tom03.wav", + "CYCdh_Kurz02-Tom04.wav" + ], + "Kurzweil-Kit-03": [ + "CYCdh_Kurz03-ClHat01.wav", + "CYCdh_Kurz03-ClHat02.wav", + "CYCdh_Kurz03-Crash01.wav", + "CYCdh_Kurz03-Crash02.wav", + "CYCdh_Kurz03-Crash03.wav", + "CYCdh_Kurz03-HfHat.wav", + "CYCdh_Kurz03-Kick.wav", + "CYCdh_Kurz03-OpHat.wav", + "CYCdh_Kurz03-PdHat.wav", + "CYCdh_Kurz03-Ride.wav", + "CYCdh_Kurz03-SdSt.wav", + "CYCdh_Kurz03-Snr01.wav", + "CYCdh_Kurz03-Snr02.wav", + "CYCdh_Kurz03-Tom01.wav", + "CYCdh_Kurz03-Tom02.wav", + "CYCdh_Kurz03-Tom03.wav", + "CYCdh_Kurz03-Tom04.wav" + ], + "Kurzweil-Kit-04": [ + "CYCdh_Kurz04-ClHat.wav", + "CYCdh_Kurz04-Crash01.wav", + "CYCdh_Kurz04-Crash02.wav", + "CYCdh_Kurz04-HfHat.wav", + "CYCdh_Kurz04-Kick01.wav", + "CYCdh_Kurz04-Kick02.wav", + "CYCdh_Kurz04-OpHat.wav", + "CYCdh_Kurz04-PdHat.wav", + "CYCdh_Kurz04-Ride01.wav", + "CYCdh_Kurz04-Ride02.wav", + "CYCdh_Kurz04-SdSt.wav", + "CYCdh_Kurz04-Snr01.wav", + "CYCdh_Kurz04-Snr02.wav", + "CYCdh_Kurz04-Snr03.wav", + "CYCdh_Kurz04-Snr04.wav", + "CYCdh_Kurz04-Tom01.wav", + "CYCdh_Kurz04-Tom02.wav", + "CYCdh_Kurz04-Tom03.wav", + "CYCdh_Kurz04-Tom04.wav", + "CYCdh_Kurz04-Tom05.wav", + "CYCdh_Kurz04-Tom06.wav" + ], + "Kurzweil-Kit-05": [ + "CYCdh_Kurz05-Brsh01.wav", + "CYCdh_Kurz05-Brsh02.wav", + "CYCdh_Kurz05-Brsh03.wav", + "CYCdh_Kurz05-ClHat.wav", + "CYCdh_Kurz05-Crash01.wav", + "CYCdh_Kurz05-Crash02.wav", + "CYCdh_Kurz05-HfHat.wav", + "CYCdh_Kurz05-Kick01.wav", + "CYCdh_Kurz05-Kicki02.wav", + "CYCdh_Kurz05-OpHat.wav", + "CYCdh_Kurz05-PdHat.wav", + "CYCdh_Kurz05-Ride01.wav", + "CYCdh_Kurz05-Ride02.wav", + "CYCdh_Kurz05-SdSt.wav", + "CYCdh_Kurz05-Snr.wav", + "CYCdh_Kurz05-Tom01.wav", + "CYCdh_Kurz05-Tom02.wav", + "CYCdh_Kurz05-Tom03.wav", + "CYCdh_Kurz05-Tom04.wav" + ], + "Kurzweil-Kit-06": [ + "CYCdh_Kurz06-ClHat.wav", + "CYCdh_Kurz06-Crash01.wav", + "CYCdh_Kurz06-Crash02.wav", + "CYCdh_Kurz06-HfHat01.wav", + "CYCdh_Kurz06-HfHat02.wav", + "CYCdh_Kurz06-Kick01.wav", + "CYCdh_Kurz06-Kick02.wav", + "CYCdh_Kurz06-OpHat.wav", + "CYCdh_Kurz06-PdHat.wav", + "CYCdh_Kurz06-Ride01.wav", + "CYCdh_Kurz06-Ride02.wav", + "CYCdh_Kurz06-SdSt.wav", + "CYCdh_Kurz06-Snr01.wav", + "CYCdh_Kurz06-Snr02.wav", + "CYCdh_Kurz06-Snr03.wav", + "CYCdh_Kurz06-Tom01.wav", + "CYCdh_Kurz06-Tom02.wav", + "CYCdh_Kurz06-Tom03.wav", + "CYCdh_Kurz06-Tom04.wav" + ], + "Kurzweil-Kit-07": [ + "CYCdh_Kurz07-ClHat01.wav", + "CYCdh_Kurz07-ClHat02.wav", + "CYCdh_Kurz07-Crash01.wav", + "CYCdh_Kurz07-Crash02.wav", + "CYCdh_Kurz07-HfHat01.wav", + "CYCdh_Kurz07-HfHat02.wav", + "CYCdh_Kurz07-Kick02.wav", + "CYCdh_Kurz07-Kick03.wav", + "CYCdh_Kurz07-Kicki01.wav", + "CYCdh_Kurz07-OpHat01.wav", + "CYCdh_Kurz07-OpHat02.wav", + "CYCdh_Kurz07-Perc01.wav", + "CYCdh_Kurz07-Perc03.wav", + "CYCdh_Kurz07-RevCrash01.wav", + "CYCdh_Kurz07-RevCrash02.wav", + "CYCdh_Kurz07-RevHat.wav", + "CYCdh_Kurz07-SdSt.wav", + "CYCdh_Kurz07-Snr01.wav", + "CYCdh_Kurz07-Snr02.wav", + "CYCdh_Kurz07-Snr03.wav", + "CYCdh_Kurz07-Snr04.wav", + "CYCdh_Kurz07-Tom01.wav", + "CYCdh_Kurz07-Tom02.wav", + "CYCdh_Kurz07-Tom03.wav", + "CYCdh_Kurz07-Tom04.wav", + "CYCdh_Kurz07-Tom05.wav" + ], + "Kurzweil-Kit-08": [ + "CYCdh_Kurz08-Clap.wav", + "CYCdh_Kurz08-ClHat.wav", + "CYCdh_Kurz08-Crash01.wav", + "CYCdh_Kurz08-Crash02.wav", + "CYCdh_Kurz08-Crash03.wav", + "CYCdh_Kurz08-Kick01.wav", + "CYCdh_Kurz08-Kick02.wav", + "CYCdh_Kurz08-OpHat.wav", + "CYCdh_Kurz08-PdHat.wav", + "CYCdh_Kurz08-Perc01.wav", + "CYCdh_Kurz08-Perc02.wav", + "CYCdh_Kurz08-Perc03.wav", + "CYCdh_Kurz08-Perc04.wav", + "CYCdh_Kurz08-Perc05.wav", + "CYCdh_Kurz08-Perc06.wav", + "CYCdh_Kurz08-Perc07.wav", + "CYCdh_Kurz08-Perc08.wav", + "CYCdh_Kurz08-Perc09.wav", + "CYCdh_Kurz08-Scratch01.wav", + "CYCdh_Kurz08-Scratch02.wav", + "CYCdh_Kurz08-Scratch03.wav", + "CYCdh_Kurz08-SdSt01.wav", + "CYCdh_Kurz08-SdSt02.wav", + "CYCdh_Kurz08-Snr01.wav", + "CYCdh_Kurz08-Snr02.wav", + "CYCdh_Kurz08-Tom01.wav", + "CYCdh_Kurz08-Tom02.wav", + "CYCdh_Kurz08-Tom03.wav", + "CYCdh_Kurz08-Tom04.wav" + ] + } +};