{"version":3,"sources":["Globals.js","reducers/samplesReducer.js","actions/setVolumeAction.js","reducers/setVolumeReducer.js","actions/setDrumPadGridAction.js","actions/setSelectionMenuAction.js","actions/toggleMetronomeIsPlayingAction.js","actions/shouldMetronomeRestartAction.js","reducers/rootReducer.js","actions/setSampleAction.js","reducers/volumeOffSetsReducer.js","reducers/setDrumPadGridReducer.js","reducers/setSelectionMenuReducer.js","reducers/isMetronomeReducer.js","reducers/metronomeTemposReducer.js","actions/setMetronomeTempoAction.js","reducers/isMetronomePlayingReducer.js","reducers/shouldMetronomeRestartReducer.js","store.js","DrumPadGrid.js","Selection.js","SelectVolume.js","Metronome.js","SelectionLeft.js","Reset.js","Stop.js","SelectionRight.js","VolumeContainer.js","wavFiles.js","metronomeTempos.js","SelectionMenu.js","DisplayMiddle.js","DrumMachine.js","App.js","serviceWorker.js","index.js"],"names":["padsArray","initialPadVolumes","forEach","pad","sessionStorage","hasOwnProperty","setItem","initialIsMetronome","initialMetronomeTempos","initialSamples","getUrls","urls","key","getItem","setVolumeAction","volume","type","DEFAULTVOLUME","setDrumPadGridAction","drumPadGrid","setSelectionMenuAction","selectionMenu","toggleMetronomeIsPlayingAction","metronomeIsPlaying","shouldMetronomeRestartAction","restartMetronome","combineReducers","samplesUrls","state","action","sample","volumeOffSets","getVolumeOffSets","metronomeStatuses","getIsMetronomeStatuses","metronomeTempos","parseInt","getMetronomeTempos","tempo","metronomePlayingStates","initMetronomeIsPlaying","shouldMetronomeRestart","restartMetronomes","initRestartMetronome","store","createStore","rootReducer","DrumPadGrid","props","playSample","bind","metronome","getVolume","handleKeyPress","this","audioFileText","document","getElementById","src","slice","innerHTML","replace","sound","audioFile","thisVolume","currentTime","play","setTimeout","soundDuration","Math","floor","duration","keyDuration","newSound","Audio","newSoundDuration","e","includes","keyCode","String","fromCharCode","focus","self","refreshMetronome","setInterval","pause","clearInterval","addEventListener","removeEventListener","rowOfPads","keys","map","item","index","id","className","onClick","icon","faSyncAlt","round","React","Component","connect","dispatch","Selection","handleClick","SelectVolume","Metronome","SelectionLeft","Reset","clear","Stop","SelectionRight","VolumeContainer","handleVolumeChange","target","value","faVolumeUp","min","max","onChange","faVolumeDown","wavFiles","volumeSelectionMenuItems","SelectionMenu","fileStringArray","padSelectingFor","handleMouseOver","handleMouseOut","makeMenuToolTipText","handleBackNav","backToDrumPad","handleEscKey","join","split","setState","event","menuToolTip","createElement","setAttribute","textContent","appendChild","parentNode","removeChild","tabIndex","menuScrollTip","prevProps","substring","length","setMetronomeTempoAction","makeSelectionMenu","menuItems","resultItems","unshift","onMouseEnter","onMouseLeave","makeSelectionMenuItem","Object","filter","push","tempos","keyItems","setSampleAction","DisplayMiddle","showVolumeToolTip","handleMouseOverOut","willShow","DrumMachine","App","href","rel","alt","data-recalc-dims","Boolean","window","location","hostname","match","ReactDOM","render","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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,eAAeG,UAAY,sF,+BAInD,OACE,yBAAKkC,GAAG,oBACN,yBAAKA,GAAG,4BACN,kBAAC,IAAD,CAAiBA,GAAG,eAAeG,KAAMoB,IAAatB,UAAU,gBAElE,yBAAKD,GAAG,0BACN,2BAAOA,GAAG,SAAS9E,KAAK,QAAQsG,IAAI,IAAIC,IAAI,MAAMH,MAAO9D,KAAKN,MAAMjC,OAAQyG,SAAUlE,KAAK4D,sBAE7F,yBAAKpB,GAAG,8BACN,kBAAC,IAAD,CAAiBA,GAAG,iBAAiBG,KAAMwB,IAAc1B,UAAU,qB,GAzB/CK,IAAMC,YAgCrBC,eAtCS,SAAC1E,GAAD,sBAAiBA,MAEd,SAAC2E,GAAD,MAAe,CACxCzF,gBAAiB,SAACC,GAAD,OAAYwF,EAASzF,EAAgBC,QAmCzCuF,CAA6CW,G,QChD/CS,EAAW,CACtB,gBAAiB,CACf,MAAS,CACP,CACE,aAAc,CACZ,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,SAAY,CACV,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBAEF,WAAY,CACV,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,0BAIN,QAAW,CACT,CACE,gBAAiB,CACf,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,wBAGJ,qBACA,qBACA,qBACA,0BACA,0BACA,0BACA,4BACA,4BACA,4BACA,4BACA,4BACA,6BAEF,UAAW,CACT,CACE,SAAY,CACV,sBACA,sBACA,sBACA,sBACA,sBACA,uBAEF,YAAa,CACX,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBACA,qBACA,qBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,sBAIN,OAAU,CACR,CACE,SAAY,CACV,wBACA,wBACA,wBACA,yBAEF,WAAY,CACV,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,WAAY,CACV,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,WAAY,CACV,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,uBACA,uBACA,uBACA,uBACA,uBACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,oBAAqB,CACnB,kCACA,kCACA,kCACA,kCACA,kCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,kCAEF,mBAAoB,CAClB,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAEF,YAAa,CACX,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,yBACA,yBACA,yBACA,yBACA,yBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAEF,iBAAkB,CAChB,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,4BAKR,YAAa,CACX,eAAgB,CACd,4BACA,4BACA,2BACA,2BACA,2BACA,2BACA,0BACA,2BACA,2BACA,2BACA,2BACA,0BACA,2BAEF,eAAgB,CACd,0BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,2BACA,4BACA,4BACA,2BACA,2BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,eAAgB,CACd,4BACA,4BACA,4BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,kBAAmB,CACjB,wBACA,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBACA,uBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAEF,kBAAmB,CACjB,uBACA,uBACA,uBACA,sBACA,sBACA,sBACA,uBACA,uBACA,qBACA,qBACA,qBACA,qBACA,sBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBAEF,iBAAkB,CAChB,2BACA,2BACA,4BACA,4BACA,4BACA,4BACA,2BACA,2BACA,4BACA,4BACA,0BACA,0BACA,0BACA,2BAEF,iBAAkB,CAChB,2BACA,2BACA,2BACA,4BACA,4BACA,2BACA,2BACA,0BACA,0BACA,0BACA,2BAEF,iBAAkB,CAChB,4BACA,4BACA,2BACA,2BACA,0BACA,0BACA,0BACA,2BAEF,kBAAmB,CACjB,qBACA,sBACA,uBACA,uBACA,qBACA,qBACA,qBACA,qBACA,wBAEF,uBAAwB,CACtB,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,2BACA,2BACA,2BACA,2BACA,8BACA,8BACA,8BACA,8BACA,8BACA,8BACA,8BACA,+BAEF,sBAAuB,CACrB,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,4BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,8BAEF,iBAAkB,CAChB,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,oBACA,sBACA,sBACA,sBACA,uBACA,uBACA,uBACA,qBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEF,gBAAiB,CACf,4BACA,4BACA,4BACA,2BACA,2BACA,2BACA,4BACA,4BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,gBAAiB,CACf,2BACA,2BACA,4BACA,4BACA,yBACA,yBACA,yBACA,0BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,gBAAiB,CACf,2BACA,2BACA,0BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,gBAAiB,CACf,yBACA,4BACA,4BACA,6BACA,6BACA,0BACA,2BACA,2BACA,2BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,2BAEF,cAAe,CACb,4BACA,4BACA,2BACA,2BACA,2BACA,0BACA,2BACA,2BACA,2BACA,0BACA,0BACA,0BAEF,cAAe,CACb,0BACA,0BACA,2BACA,4BACA,4BACA,4BACA,2BACA,2BACA,0BACA,0BACA,0BACA,2BAEF,kBAAmB,CACjB,yBACA,2BACA,2BACA,2BACA,2BACA,yBACA,0BACA,0BACA,0BACA,2BACA,2BACA,yBACA,4BACA,0BACA,0BACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,yBACA,2BACA,2BACA,yBACA,0BACA,0BACA,yBACA,yBACA,0BACA,0BACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,2BACA,2BACA,2BACA,2BACA,2BACA,yBACA,wBACA,yBACA,yBACA,wBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,yBACA,2BACA,2BACA,yBACA,0BACA,0BACA,yBACA,yBACA,0BACA,0BACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,0BACA,0BACA,0BACA,yBACA,2BACA,2BACA,yBACA,0BACA,2BACA,yBACA,yBACA,0BACA,0BACA,wBACA,uBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,yBACA,2BACA,2BACA,2BACA,2BACA,0BACA,0BACA,yBACA,yBACA,0BACA,0BACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,0BACA,0BACA,2BACA,2BACA,2BACA,0BACA,0BACA,8BACA,8BACA,0BACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,0BAEF,kBAAmB,CACjB,wBACA,yBACA,2BACA,2BACA,2BACA,0BACA,0BACA,yBACA,yBACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,0BACA,6BACA,6BACA,6BACA,0BACA,0BACA,yBACA,yBACA,yBACA,yBACA,yBACA,4BC1gCOvF,EAAkB,CAC7B,iBAAkB,SAClB,iBAAkB,SAClB,iBAAkB,SAClB,iBAAkB,SAClB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,gBAAiB,SACjB,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,WAAY,SACZ,eAAgB,SAChB,eAAgB,SAChB,eAAgB,SAChB,eAAgB,SAChB,eAAgB,SAChB,eAAgB,SAChB,e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","file":"static/js/main.918fd14d.chunk.js","sourcesContent":["export const padsArray = ['Q','W','E','A','S','D','Z','X','C'];\n\nexport const resetDefaults = () => {\n initialSamples();\n initialPadVolumes();\n initialIsMetronome();\n initialMetronomeTempos();\n};\n\nexport const initialPadVolumes = () => {\n padsArray.forEach(pad => {\n if (!sessionStorage.hasOwnProperty(pad + \"volume\")) {\n sessionStorage.setItem(pad + \"volume\",\"+0\");\n }\n });\n};\n\nexport const initialIsMetronome = () => {\n padsArray.forEach(pad => {\n if (!sessionStorage.hasOwnProperty(pad + \"isMetronome\")) {\n sessionStorage.setItem(pad + \"isMetronome\",false);\n }\n });\n};\n\nexport const initialMetronomeTempos = () => {\n padsArray.forEach(pad => {\n if (!sessionStorage.hasOwnProperty(pad + \"metronomeTempo\")) {\n sessionStorage.setItem(pad + \"metronomeTempo\",652);\n }\n });\n};\n\nexport const initialSamples = () => {\n if (!sessionStorage.hasOwnProperty(padsArray[0])) {\n sessionStorage.setItem(padsArray[0],\"Assorted-Hits/Cymbals/CYCdh_Crash-01.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[1])) {\n sessionStorage.setItem(padsArray[1],\"Assorted-Hits/Cymbals/CYCdh_MultiCrash-01.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[2])) {\n sessionStorage.setItem(padsArray[2],\"Assorted-Hits/Cymbals/CYCdh_MultiCrashHi-01.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[3])) {\n sessionStorage.setItem(padsArray[3],\"Assorted-Hits/Cymbals/CYCdh_MultiCrashLo-01.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[4])) {\n sessionStorage.setItem(padsArray[4],\"Assorted-Hits/Snares/Ludwig-A/CYCdh_LudFlamA-05.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[5])) {\n sessionStorage.setItem(padsArray[5],\"Assorted-Hits/Snares/Ludwig-A/CYCdh_LudRimA-07.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[6])) {\n sessionStorage.setItem(padsArray[6],\"Assorted-Hits/Kicks/Loose-Kick/CYCdh_LooseKick-08.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[7])) {\n sessionStorage.setItem(padsArray[7],\"Assorted-Hits/Snares/Ludwig-A/CYCdh_LudSnrA-05.wav\");\n }\n if (!sessionStorage.hasOwnProperty(padsArray[8])) {\n sessionStorage.setItem(padsArray[8],\"Assorted-Hits/Snares/Ludwig-A/CYCdh_LudSnrOffA-08.wav\");\n }\n};\n","import { padsArray,initialSamples } from \"../Globals\";\nimport { SETSAMPLE } from \"../actions/setSampleAction.js\";\n\nconst getUrls = () => {\n const urls = {};\n padsArray.forEach(key => {\n urls[key] = sessionStorage.getItem(key);\n });\n return urls;\n}\n\nexport default (state, action) => {\n if (!state) {\n initialSamples();\n state = getUrls();\n }\n\n switch (action.type) {\n case SETSAMPLE:\n state[action.key] = action.sample;\n return state;\n default:\n state = getUrls();\n return state;\n }\n};\n","export const CHANGEVOLUME = \"CHANGEVOLUME\";\n\nexport const setVolumeAction = (volume) => {\n return {\n type: CHANGEVOLUME,\n volume: volume,\n };\n};\n","import { CHANGEVOLUME } from \"../actions/setVolumeAction.js\";\n\nlet DEFAULTVOLUME = 30;\n\nif (!sessionStorage.hasOwnProperty('volume')) {\n sessionStorage.setItem('volume','30');\n} else {\n DEFAULTVOLUME = sessionStorage.getItem('volume');\n}\n\nexport default (state = DEFAULTVOLUME, action) => {\n switch (action.type) {\n case CHANGEVOLUME:\n return action.volume;\n default:\n return state;\n }\n}\n","export const DRUMPADGRID = \"DRUMPADGRID\";\n\nexport const setDrumPadGridAction = (drumPadGrid) => {\n return {\n type: DRUMPADGRID,\n drumPadGrid: drumPadGrid,\n }\n}\n","export const SELECTIONMENU = \"SELECTIONMENU\";\n\nexport const setSelectionMenuAction = (selectionMenu) => {\n return {\n type: SELECTIONMENU,\n selectionMenu: selectionMenu,\n }\n}\n","export const TOGGLEMETRONOME = \"TOGGLEMETRONOME\";\n\nexport const toggleMetronomeIsPlayingAction = (key,metronomeIsPlaying) => {\n return {\n type: TOGGLEMETRONOME,\n key: key,\n metronomeIsPlaying: metronomeIsPlaying,\n };\n};\n","export const RESTARTMETRONOME = \"RESTARTMETRONOME\";\n\nexport const shouldMetronomeRestartAction = (key,restartMetronome) => {\n return {\n type: RESTARTMETRONOME,\n key: key,\n restartMetronome: restartMetronome,\n };\n};\n","import { combineReducers } from \"redux\";\nimport samplesReducer from \"./samplesReducer\";\nimport volumeOffSetsReducer from \"./volumeOffSetsReducer\";\nimport setVolumeReducer from \"./setVolumeReducer\";\nimport setDrumPadGridReducer from \"./setDrumPadGridReducer\";\nimport setSelectionMenuReducer from \"./setSelectionMenuReducer\";\nimport isMetronomeReducer from \"./isMetronomeReducer\";\nimport metronomeTemposReducer from \"./metronomeTemposReducer\";\nimport isMetronomePlayingReducer from \"./isMetronomePlayingReducer\";\nimport shouldMetronomeRestartReducer from \"./shouldMetronomeRestartReducer\";\n\nexport default combineReducers({\n samplesUrls: samplesReducer,\n volumeOffSets: volumeOffSetsReducer,\n volume: setVolumeReducer,\n drumPadGrid: setDrumPadGridReducer,\n selectionMenu: setSelectionMenuReducer,\n metronomeStatuses: isMetronomeReducer,\n metronomeTempos: metronomeTemposReducer,\n metronomePlayingStates: isMetronomePlayingReducer,\n shouldMetronomeRestart: shouldMetronomeRestartReducer,\n});\n","export const SETSAMPLE = \"SETSAMPLE\";\n\nexport const setSampleAction = (key,sample) => {\n return {\n type: SETSAMPLE,\n key: key,\n sample: sample,\n };\n};\n","import { padsArray,initialPadVolumes } from \"../Globals\";\n\nconst getVolumeOffSets = () => {\n const volumeOffSets = {};\n padsArray.forEach(key => {\n volumeOffSets[key + 'volume'] = sessionStorage.getItem(key + 'volume');\n });\n return volumeOffSets;\n}\n\nexport default (state, action) => {\n if (!state) {\n initialPadVolumes();\n state = getVolumeOffSets();\n }\n\n switch (action.type) {\n default:\n return state;\n }\n};\n","import { DRUMPADGRID } from \"../actions/setDrumPadGridAction.js\";\n\nexport default (state = 'drumPadGrid', action) => {\n switch(action.type) {\n case DRUMPADGRID:\n return action.drumPadGrid;\n default:\n return state;\n }\n}\n","import { SELECTIONMENU } from \"../actions/setSelectionMenuAction\";\n\nexport default (state = 'pads', action) => {\n switch(action.type) {\n case SELECTIONMENU:\n return action.selectionMenu;\n default:\n return state;\n }\n}\n","import { padsArray,initialIsMetronome } from \"../Globals\";\n\nconst getIsMetronomeStatuses = () => {\n const metronomeStatuses = {};\n padsArray.forEach(key => {\n metronomeStatuses[key + 'isMetronome'] = sessionStorage.getItem(key + 'isMetronome');\n });\n return metronomeStatuses;\n}\n\nexport default (state, action) => {\n initialIsMetronome();\n\n switch (action.type) {\n default:\n return getIsMetronomeStatuses();\n }\n};\n","import { SETMETRONOMETEMPO } from \"../actions/setMetronomeTempoAction.js\";\nimport { padsArray,initialMetronomeTempos } from \"../Globals\";\n\nconst getMetronomeTempos = () => {\n const metronomeTempos = {};\n padsArray.forEach(key => {\n metronomeTempos[key + 'metronomeTempo'] = parseInt(sessionStorage.getItem(key + 'metronomeTempo'));\n });\n return metronomeTempos;\n}\n\nexport default (state, action) => {\n if (!state) {\n initialMetronomeTempos();\n state = getMetronomeTempos();\n }\n\n switch (action.type) {\n case SETMETRONOMETEMPO:\n state[action.key + 'metronomeTempo'] = action.tempo;\n return state;\n default:\n return state;\n }\n};\n","export const SETMETRONOMETEMPO = \"SETMETRONOMETEMPO\";\n\nexport const setMetronomeTempoAction = (key,tempo) => {\n return {\n type: SETMETRONOMETEMPO,\n key: key,\n tempo: tempo,\n };\n};\n","import { padsArray } from \"../Globals\";\nimport { TOGGLEMETRONOME } from \"../actions/toggleMetronomeIsPlayingAction.js\";\n\nconst initMetronomeIsPlaying = () => {\n const metronomePlayingStates = {};\n padsArray.forEach(key => {\n metronomePlayingStates[key + 'metronomeIsPlaying'] = false;\n });\n return metronomePlayingStates;\n};\n\nexport default (state, action) => {\n if (!state) {\n state = initMetronomeIsPlaying();\n }\n\n switch (action.type) {\n case TOGGLEMETRONOME:\n state[action.key + 'metronomeIsPlaying'] = action.metronomeIsPlaying;\n return state;\n default:\n return state;\n }\n}\n","import { padsArray } from \"../Globals\";\nimport { RESTARTMETRONOME } from \"../actions/shouldMetronomeRestartAction.js\";\n\nconst initRestartMetronome = () => {\n const restartMetronomes = {};\n padsArray.forEach(key => {\n restartMetronomes[key + 'restartMetronome'] = false;\n });\n return restartMetronomes;\n};\n\nexport default (state, action) => {\n if (!state) {\n state = initRestartMetronome();\n }\n\n switch (action.type) {\n case RESTARTMETRONOME:\n state[action.key + 'restartMetronome'] = action.restartMetronome;\n return state;\n default:\n return state;\n }\n}\n","import { createStore } from \"redux\";\nimport rootReducer from \"./reducers/rootReducer\";\n\nconst store = createStore(rootReducer);\n\nexport default store;\n","import React from 'react';\nimport { connect } from \"react-redux\";\nimport { padsArray } from \"./Globals\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSyncAlt } from \"@fortawesome/free-solid-svg-icons\";\n\nimport './DrumPadGrid.css';\n\nimport { toggleMetronomeIsPlayingAction } from \"./actions/toggleMetronomeIsPlayingAction\";\nimport { shouldMetronomeRestartAction } from \"./actions/shouldMetronomeRestartAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n toggleMetronomeIsPlayingAction: (key,metronomeIsPlaying) => dispatch(toggleMetronomeIsPlayingAction(key,metronomeIsPlaying)),\n shouldMetronomeRestartAction: (key,restartMetronome) => dispatch(shouldMetronomeRestartAction(key,restartMetronome)),\n});\n\nclass DrumPadGrid extends React.Component {\n constructor(props) {\n super(props);\n this.playSample = this.playSample.bind(this);\n this.metronome = this.metronome.bind(this);\n this.getVolume = this.getVolume.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n };\n\n playSample(key) {\n if (this.props.metronomeStatuses[key + 'isMetronome'] === 'false') {\n const audioFileText = document.getElementById(key).src.slice(36);\n document.getElementById('display-top').innerHTML = \"

\" + key +\": \" + audioFileText.replace(/\\//g,\" \").replace(/-/g,\"‑\") + \"

\";\n const keyDuration = 1000;\n const sound = document.getElementById(key);\n const audioFile = this.props.samplesUrls[key];\n const thisVolume = this.getVolume(key);\n if (sound.currentTime === 0) {\n sound.volume = thisVolume;\n sound.play();\n setTimeout(function(){\n const soundDuration = Math.floor(sound.duration);\n if (soundDuration > (keyDuration / 1000)) {\n sound.currentTime = soundDuration;\n }\n }, keyDuration);\n } else {\n const newSound = new Audio('https://trentpalmer.org/drumsamples/' + audioFile);\n newSound.volume = thisVolume;\n newSound.play();\n setTimeout(function(){\n const newSoundDuration = Math.floor(newSound.duration);\n if (newSoundDuration > (keyDuration / 1000)) {\n newSound.currentTime = newSoundDuration;\n }\n }, keyDuration);\n }\n } else {\n if (this.props.metronomePlayingStates[key + 'metronomeIsPlaying'] === false) {\n this.props.toggleMetronomeIsPlayingAction(key,true);\n this.metronome(key);\n } else {\n this.props.toggleMetronomeIsPlayingAction(key,false);\n }\n }\n };\n\n handleKeyPress(e) {\n if ([81,87,69,65,83,68,90,88,67].includes(e.keyCode)) {\n this.playSample(String.fromCharCode(e.keyCode));\n } else if (e.keyCode === 86){\n document.getElementById('volume').focus();\n }\n };\n\n getVolume(key) {\n const machineVolume = parseInt(sessionStorage.getItem('volume'));\n const padVolumeOffSet = parseInt(sessionStorage.getItem(key + 'volume'));\n const thisVolume = (machineVolume + padVolumeOffSet) / 100;\n return thisVolume > 1 ? 1 : thisVolume < 0 ? 0 : thisVolume;\n };\n\n metronome(key) {\n const audioFileText = document.getElementById(key).src.slice(36);\n document.getElementById('display-top').innerHTML = \"

\" + key +\": \" + audioFileText.replace(/\\//g,\" \").replace(/-/g,\"‑\") + \"

\";\n const keyDuration = this.props.metronomeTempos[key+'metronomeTempo'];\n const sound = document.getElementById(key);\n sound.volume = this.getVolume(key);\n sound.play();\n const self = this;\n let refreshMetronome = setInterval(function(){\n sound.pause();\n sound.currentTime = 0;\n sound.volume = self.getVolume(key);\n sound.play();\n if (self.props.shouldMetronomeRestart[key + 'restartMetronome']) {\n self.props.shouldMetronomeRestartAction(key,false);\n clearInterval(refreshMetronome);\n self.metronome(key);\n }\n if (keyDuration !== self.props.metronomeTempos[key+'metronomeTempo']) {\n clearInterval(refreshMetronome);\n self.metronome(key);\n }\n if (self.props.metronomePlayingStates[key + 'metronomeIsPlaying'] === false) {\n clearInterval(refreshMetronome);\n }\n },keyDuration);\n };\n\n componentDidMount() {\n document.addEventListener(\"keydown\", this.handleKeyPress, false);\n };\n\n componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.handleKeyPress, false);\n };\n\n render() {\n const rowOfPads = (keys) => {\n return keys.map((item,index) => {\n return
this.playSample(item)}>\n \n {(() => {\n if (this.props.metronomeStatuses[item + 'isMetronome'] === 'false') {\n return

{item}

;\n } else if (this.props.metronomeStatuses[item + 'isMetronome'] === 'true' && this.props.metronomePlayingStates[item + 'metronomeIsPlaying'] === false) {\n return

{item + ' '}

\n } else if (this.props.metronomeStatuses[item + 'isMetronome'] === 'true' && this.props.metronomePlayingStates[item + 'metronomeIsPlaying'] === true) {\n const tempo = Math.round(60000 / this.props.metronomeTempos[item +'metronomeTempo']);\n return

{tempo + ' '}

\n }\n })()}\n
;\n });\n };\n return (\n
\n
\n {rowOfPads(padsArray.slice(0,3))}\n
\n
\n {rowOfPads(padsArray.slice(3,6))}\n
\n
\n {rowOfPads(padsArray.slice(6,))}\n
\n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DrumPadGrid);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './Selection.css';\n\nimport { setDrumPadGridAction } from \"./actions/setDrumPadGridAction\";\nimport { setSelectionMenuAction } from \"./actions/setSelectionMenuAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setDrumPadGridAction: (drumPadGrid) => dispatch(setDrumPadGridAction(drumPadGrid)),\n setSelectionMenuAction: (selectionMenu) => dispatch(setSelectionMenuAction(selectionMenu)),\n});\n\nclass Selection extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick() {\n this.props.setSelectionMenuAction('pads');\n this.props.setDrumPadGridAction('selectionMenu');\n }\n\n render() {\n return (\n
\n

select
a sound

\n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Selection);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './Selection.css';\n\nimport { setDrumPadGridAction } from \"./actions/setDrumPadGridAction\";\nimport { setSelectionMenuAction } from \"./actions/setSelectionMenuAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setDrumPadGridAction: (drumPadGrid) => dispatch(setDrumPadGridAction(drumPadGrid)),\n setSelectionMenuAction: (selectionMenu) => dispatch(setSelectionMenuAction(selectionMenu)),\n});\n\nclass SelectVolume extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick() {\n this.props.setSelectionMenuAction('pads');\n this.props.setDrumPadGridAction('volumeSelectionMenu');\n }\n\n render() {\n return (\n
\n

select
a volume

\n
\n );\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectVolume);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './Selection.css';\n\nimport { setDrumPadGridAction } from \"./actions/setDrumPadGridAction\";\nimport { setSelectionMenuAction } from \"./actions/setSelectionMenuAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setDrumPadGridAction: (drumPadGrid) => dispatch(setDrumPadGridAction(drumPadGrid)),\n setSelectionMenuAction: (selectionMenu) => dispatch(setSelectionMenuAction(selectionMenu)),\n});\n\nclass Metronome extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick() {\n this.props.setSelectionMenuAction('pads');\n this.props.setDrumPadGridAction('metronomeSelectionMenu');\n }\n\n render() {\n return (\n
\n

metronome

\n
\n );\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Metronome);\n","import React from 'react';\n\nimport Selection from \"./Selection\";\nimport SelectVolume from \"./SelectVolume\";\nimport Metronome from \"./Metronome\";\n\nconst SelectionLeft = () => {\n return (\n
\n \n \n \n
\n );\n}\n\nexport default SelectionLeft;\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './Selection.css';\n\nimport { resetDefaults,padsArray } from \"./Globals\";\nimport { setVolumeAction } from \"./actions/setVolumeAction\";\nimport { toggleMetronomeIsPlayingAction } from \"./actions/toggleMetronomeIsPlayingAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setVolumeAction: (volume) => dispatch(setVolumeAction(volume)),\n toggleMetronomeIsPlayingAction: (key,metronomeIsPlaying) => dispatch(toggleMetronomeIsPlayingAction(key,metronomeIsPlaying)),\n});\n\nclass Reset extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick() {\n sessionStorage.clear();\n resetDefaults();\n this.props.setVolumeAction(30);\n padsArray.forEach(pad => {\n if (this.props.metronomePlayingStates[pad + 'metronomeIsPlaying'] === true) {\n this.props.toggleMetronomeIsPlayingAction(pad,false);\n }\n });\n sessionStorage.setItem('volume',30);\n };\n\n render() {\n return (\n
\n

RESET

\n
\n );\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Reset);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './Selection.css';\nimport { toggleMetronomeIsPlayingAction } from \"./actions/toggleMetronomeIsPlayingAction\";\nimport { padsArray } from \"./Globals\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n toggleMetronomeIsPlayingAction: (key,metronomeIsPlaying) => dispatch(toggleMetronomeIsPlayingAction(key,metronomeIsPlaying)),\n});\n\nclass Stop extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick() {\n padsArray.forEach(pad => {\n if (this.props.metronomePlayingStates[pad + 'metronomeIsPlaying'] === true) {\n this.props.toggleMetronomeIsPlayingAction(pad,false);\n }\n });\n }\n\n render() {\n return (\n
\n

STOP

\n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Stop);\n","import React from 'react';\n\nimport Reset from \"./Reset\";\nimport Stop from \"./Stop\";\n\nconst SelectionRight = () => {\n return (\n
\n \n \n
\n );\n}\n\nexport default SelectionRight;\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faVolumeDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { faVolumeUp } from \"@fortawesome/free-solid-svg-icons\";\nimport './VolumeContainer.css';\n\nimport { setVolumeAction } from \"./actions/setVolumeAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setVolumeAction: (volume) => dispatch(setVolumeAction(volume)),\n});\n\nclass VolumeContainer extends React.Component {\n constructor(props) {\n super(props);\n this.handleVolumeChange = this.handleVolumeChange.bind(this);\n };\n\n handleVolumeChange(e) {\n this.props.setVolumeAction(e.target.value);\n sessionStorage.setItem('volume',e.target.value);\n };\n\n componentDidMount() {\n document.getElementById('display-top').innerHTML = '

press \"V\" to focus Volume so you can adjust with arrow keys

';\n };\n\n render() {\n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n );\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(VolumeContainer);\n","export const wavFiles = {\n \"Assorted-Hits\": {\n \"Kicks\": [\n {\n \"Loose-Kick\": [\n \"CYCdh_LooseKick-01.wav\",\n \"CYCdh_LooseKick-02.wav\",\n \"CYCdh_LooseKick-03.wav\",\n \"CYCdh_LooseKick-04.wav\",\n \"CYCdh_LooseKick-05.wav\",\n \"CYCdh_LooseKick-06.wav\",\n \"CYCdh_LooseKick-07.wav\",\n \"CYCdh_LooseKick-08.wav\"\n ],\n \"Acoustic\": [\n \"CYCdh_AcouKick-01.wav\",\n \"CYCdh_AcouKick-02.wav\",\n \"CYCdh_AcouKick-03.wav\",\n \"CYCdh_AcouKick-04.wav\",\n \"CYCdh_AcouKick-05.wav\",\n \"CYCdh_AcouKick-06.wav\",\n \"CYCdh_AcouKick-07.wav\",\n \"CYCdh_AcouKick-08.wav\",\n \"CYCdh_AcouKick-09.wav\",\n \"CYCdh_AcouKick-10.wav\",\n \"CYCdh_AcouKick-11.wav\",\n \"CYCdh_AcouKick-12.wav\",\n \"CYCdh_AcouKick-13.wav\",\n \"CYCdh_AcouKick-14.wav\",\n \"CYCdh_AcouKick-15.wav\",\n \"CYCdh_AcouKick-16.wav\",\n \"CYCdh_AcouKick-17.wav\",\n \"CYCdh_AcouKick-18.wav\",\n \"CYCdh_AcouKick-19.wav\",\n \"CYCdh_AcouKick-20.wav\"\n ],\n \"Kes-Kick\": [\n \"CYCdh_KesKick-01.wav\",\n \"CYCdh_KesKick-02.wav\",\n \"CYCdh_KesKick-03.wav\",\n \"CYCdh_KesKick-04.wav\",\n \"CYCdh_KesKick-05.wav\",\n \"CYCdh_KesKick-06.wav\",\n \"CYCdh_KesKick-07.wav\",\n \"CYCdh_KesKick-08.wav\"\n ]\n }\n ],\n \"Cymbals\": [\n {\n \"Trash-Crashes\": [\n \"CYCdh_TrashA-01.wav\",\n \"CYCdh_TrashA-02.wav\",\n \"CYCdh_TrashA-03.wav\",\n \"CYCdh_TrashA-04.wav\",\n \"CYCdh_TrashA-05.wav\",\n \"CYCdh_TrashA-06.wav\",\n \"CYCdh_TrashA-07.wav\",\n \"CYCdh_TrashA-08.wav\",\n \"CYCdh_TrashA-09.wav\",\n \"CYCdh_TrashB-01.wav\",\n \"CYCdh_TrashB-02.wav\",\n \"CYCdh_TrashB-03.wav\",\n \"CYCdh_TrashC-01.wav\",\n \"CYCdh_TrashC-02.wav\",\n \"CYCdh_TrashC-03.wav\",\n \"CYCdh_TrashC-04.wav\",\n \"CYCdh_TrashD-01.wav\",\n \"CYCdh_TrashD-02.wav\",\n \"CYCdh_TrashE-01.wav\",\n \"CYCdh_TrashE-02.wav\",\n \"CYCdh_TrashE-03.wav\",\n \"CYCdh_TrashE-04.wav\",\n \"CYCdh_TrashE-05.wav\",\n \"CYCdh_TrashF-01.wav\",\n \"CYCdh_TrashF-02.wav\",\n \"CYCdh_TrashF-03.wav\",\n \"CYCdh_TrashF-04.wav\"\n ]\n },\n \"CYCdh_Crash-01.wav\",\n \"CYCdh_Crash-02.wav\",\n \"CYCdh_Crash-03.wav\",\n \"CYCdh_MultiCrash-01.wav\",\n \"CYCdh_MultiCrash-02.wav\",\n \"CYCdh_MultiCrash-03.wav\",\n \"CYCdh_MultiCrashHi-01.wav\",\n \"CYCdh_MultiCrashHi-02.wav\",\n \"CYCdh_MultiCrashHi-03.wav\",\n \"CYCdh_MultiCrashLo-01.wav\",\n \"CYCdh_MultiCrashLo-02.wav\",\n \"CYCdh_MultiCrashLo-03.wav\"\n ],\n \"Hi-Hats\": [\n {\n \"Acoustic\": [\n \"Acoustic-Hat-01.wav\",\n \"Acoustic-Hat-02.wav\",\n \"Acoustic-Hat-03.wav\",\n \"Acoustic-Hat-04.wav\",\n \"Acoustic-Hat-05.wav\",\n \"Acoustic-Hat-06.wav\"\n ],\n \"Sabian-B8\": [\n \"CYCdh_Sab_ClHat-01.wav\",\n \"CYCdh_Sab_ClHat-02.wav\",\n \"CYCdh_Sab_ClHat-03.wav\",\n \"CYCdh_Sab_ClHat-04.wav\",\n \"CYCdh_Sab_ClHat-05.wav\",\n \"CYCdh_Sab_ClHat-06.wav\",\n \"CYCdh_Sab_ClHat-07.wav\",\n \"CYCdh_Sab_ClHat-08.wav\",\n \"CYCdh_Sab_ClHat-09.wav\",\n \"CYCdh_Sab_ClHat-10.wav\",\n \"CYCdh_Sab_ClHat-11.wav\",\n \"CYCdh_Sab_ClHat-12.wav\",\n \"CYCdh_Sab_ClHat-13.wav\",\n \"CYCdh_Sab_ClHat-14.wav\",\n \"CYCdh_Sab_HfHat-01.wav\",\n \"CYCdh_Sab_HfHat-02.wav\",\n \"CYCdh_Sab_HfHat-03.wav\",\n \"CYCdh_Sab_HfHat-04.wav\",\n \"CYCdh_Sab_OpHat-01.wav\",\n \"CYCdh_Sab_OpHat-02.wav\",\n \"CYCdh_Sab_OpHat-03.wav\",\n \"CYCdh_Sab_OpHat-04.wav\",\n \"CYCdh_Sab_OpHat-05.wav\",\n \"CYCdh_Sab_OpHat-06.wav\",\n \"CYCdh_Sab_OpHat-07.wav\",\n \"CYCdh_Sab_OpHat-08.wav\",\n \"CYCdh_Sab_OpHat-09.wav\",\n \"CYCdh_Sab_PdHat-01.wav\",\n \"CYCdh_Sab_PdHat-02.wav\"\n ],\n \"Zildjian-K-Hats\": [\n \"KHats-Clsd-01.wav\",\n \"KHats-Clsd-02.wav\",\n \"KHats-Clsd-03.wav\",\n \"KHats-Clsd-04.wav\",\n \"KHats-Clsd-05.wav\",\n \"KHats-Clsd-06.wav\",\n \"KHats-Clsd-07.wav\",\n \"KHats-Clsd-08.wav\",\n \"KHats-Clsd-09.wav\",\n \"KHats-Clsd-10.wav\",\n \"KHats-Clsd-11.wav\",\n \"KHats-HlfOp-01.wav\",\n \"KHats-HlfOp-02.wav\",\n \"KHats-HlfOp-03.wav\",\n \"KHats-Open-01.wav\",\n \"KHats-Open-02.wav\",\n \"KHats-Open-03.wav\",\n \"KHats-Open-04.wav\",\n \"KHats-Open-05.wav\",\n \"KHats-Open-06.wav\",\n \"KHats-Open-07.wav\",\n \"KHats-Open-08.wav\",\n \"KHats-Open-09.wav\",\n \"KHats-Pdl-01.wav\",\n \"KHats-Pdl-02.wav\",\n \"KHats-Pdl-03.wav\",\n \"KHats-Pdl-04.wav\"\n ]\n }\n ],\n \"Snares\": [\n {\n \"Acoustic\": [\n \"Acoustic-Snare-01.wav\",\n \"Acoustic-Snare-02.wav\",\n \"Acoustic-Snare-03.wav\",\n \"Acoustic-Snare-04.wav\"\n ],\n \"Ludwig-A\": [\n \"CYCdh_LudFlamA-01.wav\",\n \"CYCdh_LudFlamA-02.wav\",\n \"CYCdh_LudFlamA-03.wav\",\n \"CYCdh_LudFlamA-04.wav\",\n \"CYCdh_LudFlamA-05.wav\",\n \"CYCdh_LudRimA-01.wav\",\n \"CYCdh_LudRimA-02.wav\",\n \"CYCdh_LudRimA-03.wav\",\n \"CYCdh_LudRimA-04.wav\",\n \"CYCdh_LudRimA-05.wav\",\n \"CYCdh_LudRimA-06.wav\",\n \"CYCdh_LudRimA-07.wav\",\n \"CYCdh_LudSdStA-01.wav\",\n \"CYCdh_LudSdStA-02.wav\",\n \"CYCdh_LudSdStA-03.wav\",\n \"CYCdh_LudSdStA-04.wav\",\n \"CYCdh_LudSdStA-05.wav\",\n \"CYCdh_LudSdStA-06.wav\",\n \"CYCdh_LudSdStA-07.wav\",\n \"CYCdh_LudSnrA-01.wav\",\n \"CYCdh_LudSnrA-02.wav\",\n \"CYCdh_LudSnrA-03.wav\",\n \"CYCdh_LudSnrA-04.wav\",\n \"CYCdh_LudSnrA-05.wav\",\n \"CYCdh_LudSnrOffA-01.wav\",\n \"CYCdh_LudSnrOffA-02.wav\",\n \"CYCdh_LudSnrOffA-03.wav\",\n \"CYCdh_LudSnrOffA-04.wav\",\n \"CYCdh_LudSnrOffA-05.wav\",\n \"CYCdh_LudSnrOffA-06.wav\",\n \"CYCdh_LudSnrOffA-07.wav\",\n \"CYCdh_LudSnrOffA-08.wav\"\n ],\n \"Ludwig-B\": [\n \"CYCdh_LudFlamB-01.wav\",\n \"CYCdh_LudFlamB-02.wav\",\n \"CYCdh_LudFlamB-03.wav\",\n \"CYCdh_LudFlamB-04.wav\",\n \"CYCdh_LudFlamB-05.wav\",\n \"CYCdh_LudRimB-01.wav\",\n \"CYCdh_LudRimB-02.wav\",\n \"CYCdh_LudRimB-03.wav\",\n \"CYCdh_LudRimB-04.wav\",\n \"CYCdh_LudRimB-05.wav\",\n \"CYCdh_LudRimB-06.wav\",\n \"CYCdh_LudRimB-07.wav\",\n \"CYCdh_LudSdStB-01.wav\",\n \"CYCdh_LudSdStB-02.wav\",\n \"CYCdh_LudSdStB-03.wav\",\n \"CYCdh_LudSdStB-04.wav\",\n \"CYCdh_LudSdStB-05.wav\",\n \"CYCdh_LudSdStB-06.wav\",\n \"CYCdh_LudSdStB-07.wav\",\n \"CYCdh_LudSnrB-01.wav\",\n \"CYCdh_LudSnrB-02.wav\",\n \"CYCdh_LudSnrB-03.wav\",\n \"CYCdh_LudSnrB-04.wav\",\n \"CYCdh_LudSnrB-05.wav\",\n \"CYCdh_LudSnrOffB-01.wav\",\n \"CYCdh_LudSnrOffB-02.wav\",\n \"CYCdh_LudSnrOffB-03.wav\",\n \"CYCdh_LudSnrOffB-04.wav\",\n \"CYCdh_LudSnrOffB-05.wav\",\n \"CYCdh_LudSnrOffB-06.wav\",\n \"CYCdh_LudSnrOffB-07.wav\",\n \"CYCdh_LudSnrOffB-08.wav\"\n ],\n \"Ludwig-C\": [\n \"CYCdh_LudFlamC-01.wav\",\n \"CYCdh_LudFlamC-02.wav\",\n \"CYCdh_LudFlamC-03.wav\",\n \"CYCdh_LudFlamC-04.wav\",\n \"CYCdh_LudFlamC-05.wav\",\n \"CYCdh_LudRimC-01.wav\",\n \"CYCdh_LudRimC-02.wav\",\n \"CYCdh_LudRimC-03.wav\",\n \"CYCdh_LudRimC-04.wav\",\n \"CYCdh_LudRimC-05.wav\",\n \"CYCdh_LudRimC-06.wav\",\n \"CYCdh_LudRimC-07.wav\",\n \"CYCdh_LudSdStC-01.wav\",\n \"CYCdh_LudSdStC-02.wav\",\n \"CYCdh_LudSdStC-03.wav\",\n \"CYCdh_LudSdStC-04.wav\",\n \"CYCdh_LudSdStC-05.wav\",\n \"CYCdh_LudSdStC-06.wav\",\n \"CYCdh_LudSdStC-07.wav\",\n \"CYCdh_LudSnrC-01.wav\",\n \"CYCdh_LudSnrC-02.wav\",\n \"CYCdh_LudSnrC-03.wav\",\n \"CYCdh_LudSnrC-04.wav\",\n \"CYCdh_LudSnrC-05.wav\",\n \"CYCdh_LudSnrOffC-01.wav\",\n \"CYCdh_LudSnrOffC-02.wav\",\n \"CYCdh_LudSnrOffC-03.wav\",\n \"CYCdh_LudSnrOffC-04.wav\",\n \"CYCdh_LudSnrOffC-05.wav\",\n \"CYCdh_LudSnrOffC-06.wav\",\n \"CYCdh_LudSnrOffC-07.wav\",\n \"CYCdh_LudSnrOffC-08.wav\"\n ],\n \"Piccolo-Sidestick\": [\n \"PearlPiccolo-Side-SnrOff-01.wav\",\n \"PearlPiccolo-Side-SnrOff-02.wav\",\n \"PearlPiccolo-Side-SnrOff-03.wav\",\n \"PearlPiccolo-Side-SnrOff-04.wav\",\n \"PearlPiccolo-Side-SnrOff-05.wav\",\n \"PearlPiccolo-Side-SnrOn-01.wav\",\n \"PearlPiccolo-Side-SnrOn-02.wav\",\n \"PearlPiccolo-Side-SnrOn-03.wav\",\n \"PearlPiccolo-Side-SnrOn-04.wav\",\n \"PearlPiccolo-Side-SnrOn-05.wav\",\n \"PearlPiccolo-Side-SnrOn-06.wav\",\n \"PearlPiccolo-Side-SnrOn-07.wav\",\n \"PearlPiccolo-Side-SnrOn-08.wav\",\n \"PearlPiccolo-Side-SnrOn-09.wav\"\n ],\n \"Sonor-Force-3000\": [\n \"CYCdh_SonFlam-01.wav\",\n \"CYCdh_SonFlam-02.wav\",\n \"CYCdh_SonFlam-03.wav\",\n \"CYCdh_SonRim-01.wav\",\n \"CYCdh_SonRim-02.wav\",\n \"CYCdh_SonRim-03.wav\",\n \"CYCdh_SonRim-04.wav\",\n \"CYCdh_SonRim-05.wav\",\n \"CYCdh_SonRim-06.wav\",\n \"CYCdh_SonRim-07.wav\",\n \"CYCdh_SonRim-08.wav\",\n \"CYCdh_SonRim-09.wav\",\n \"CYCdh_SonRim-10.wav\",\n \"CYCdh_SonSdSt-01.wav\",\n \"CYCdh_SonSdSt-02.wav\",\n \"CYCdh_SonSdSt-03.wav\",\n \"CYCdh_SonSdSt-04.wav\",\n \"CYCdh_SonSdSt-05.wav\",\n \"CYCdh_SonSdSt-06.wav\",\n \"CYCdh_SonSdSt-07.wav\",\n \"CYCdh_SonSnr-01.wav\",\n \"CYCdh_SonSnr-02.wav\",\n \"CYCdh_SonSnr-03.wav\",\n \"CYCdh_SonSnr-04.wav\",\n \"CYCdh_SonSnr-05.wav\",\n \"CYCdh_SonSnr-06.wav\",\n \"CYCdh_SonSnrOff-01.wav\",\n \"CYCdh_SonSnrOff-02.wav\",\n \"CYCdh_SonSnrOff-03.wav\",\n \"CYCdh_SonSnrOff-04.wav\",\n \"CYCdh_SonSnrOff-05.wav\",\n \"CYCdh_SonSnrOff-06.wav\",\n \"CYCdh_SonUpsd-01.wav\",\n \"CYCdh_SonUpsd-02.wav\",\n \"CYCdh_SonUpsd-03.wav\",\n \"CYCdh_SonUpsd-04.wav\",\n \"CYCdh_SonUpsd-05.wav\",\n \"CYCdh_SonUpsd-06.wav\",\n \"CYCdh_SonUpsd-07.wav\",\n \"CYCdh_SonUpsd-08.wav\"\n ],\n \"Tama-Wood\": [\n \"CYCdh_TamFlam-01.wav\",\n \"CYCdh_TamFlam-02.wav\",\n \"CYCdh_TamFlam-03.wav\",\n \"CYCdh_TamRim-01.wav\",\n \"CYCdh_TamRim-02.wav\",\n \"CYCdh_TamRim-03.wav\",\n \"CYCdh_TamRim-04.wav\",\n \"CYCdh_TamRim-05.wav\",\n \"CYCdh_TamRim-06.wav\",\n \"CYCdh_TamRim-07.wav\",\n \"CYCdh_TamRim-08.wav\",\n \"CYCdh_TamRimTgt-01.wav\",\n \"CYCdh_TamRimTgt-02.wav\",\n \"CYCdh_TamRimTgt-03.wav\",\n \"CYCdh_TamRimTgt-04.wav\",\n \"CYCdh_TamRimTgt-05.wav\",\n \"CYCdh_TamSdSt-01.wav\",\n \"CYCdh_TamSdSt-02.wav\",\n \"CYCdh_TamSdSt-03.wav\",\n \"CYCdh_TamSdSt-04.wav\",\n \"CYCdh_TamSdSt-05.wav\",\n \"CYCdh_TamSdSt-06.wav\",\n \"CYCdh_TamSdSt-07.wav\",\n \"CYCdh_TamSdSt-08.wav\",\n \"CYCdh_TamSnr-01.wav\",\n \"CYCdh_TamSnr-02.wav\",\n \"CYCdh_TamSnr-03.wav\",\n \"CYCdh_TamSnr-04.wav\",\n \"CYCdh_TamSnr-05.wav\",\n \"CYCdh_TamSnr-06.wav\",\n \"CYCdh_TamSnr-07.wav\",\n \"CYCdh_TamSnr-08.wav\",\n \"CYCdh_TamSnrEd-01.wav\",\n \"CYCdh_TamSnrEd-02.wav\",\n \"CYCdh_TamSnrEd-03.wav\",\n \"CYCdh_TamSnrEd-04.wav\",\n \"CYCdh_TamSnrEd-05.wav\",\n \"CYCdh_TamSnrEd-06.wav\",\n \"CYCdh_TamSnrEd-07.wav\",\n \"CYCdh_TamSnrEd-08.wav\",\n \"CYCdh_TamSnrTgt-01.wav\",\n \"CYCdh_TamSnrTgt-02.wav\",\n \"CYCdh_TamSnrTgt-03.wav\",\n \"CYCdh_TamSnrTgt-04.wav\",\n \"CYCdh_TamSnrTgt-05.wav\",\n \"CYCdh_TamSnrTgt-06.wav\",\n \"CYCdh_TamSnrTgt-07.wav\",\n \"CYCdh_TamUpsd-01.wav\",\n \"CYCdh_TamUpsd-02.wav\",\n \"CYCdh_TamUpsd-03.wav\",\n \"CYCdh_TamUpsd-04.wav\",\n \"CYCdh_TamUpsd-05.wav\",\n \"CYCdh_TamUpsd-06.wav\",\n \"CYCdh_TamUpsd-07.wav\",\n \"CYCdh_TamUpsd-08.wav\",\n \"CYCdh_TamUpsd-09.wav\"\n ],\n \"Wooden-Piccolo\": [\n \"CYCdh_PiccoloA-01.wav\",\n \"CYCdh_PiccoloA-02.wav\",\n \"CYCdh_PiccoloA-03.wav\",\n \"CYCdh_PiccoloA-04.wav\",\n \"CYCdh_PiccoloB-01.wav\",\n \"CYCdh_PiccoloB-02.wav\",\n \"CYCdh_PiccoloB-03.wav\",\n \"CYCdh_PiccoloB-04.wav\",\n \"CYCdh_PiccoloC-01.wav\",\n \"CYCdh_PiccoloC-02.wav\",\n \"CYCdh_PiccoloC-03.wav\",\n \"CYCdh_PiccoloC-04.wav\",\n \"CYCdh_PiccoloD-01.wav\",\n \"CYCdh_PiccoloD-02.wav\",\n \"CYCdh_PiccoloD-03.wav\",\n \"CYCdh_PiccoloD-04.wav\",\n \"CYCdh_PiccoloE-01.wav\",\n \"CYCdh_PiccoloE-02.wav\",\n \"CYCdh_PiccoloE-03.wav\",\n \"CYCdh_PiccoloE-04.wav\"\n ]\n }\n ]\n },\n \"Drum-Kits\": {\n \"Kit-10-Vinyl\": [\n \"CYCdh_VinylK3-ClHat01.wav\",\n \"CYCdh_VinylK3-ClHat02.wav\",\n \"CYCdh_VinylK3-Kick01.wav\",\n \"CYCdh_VinylK3-Kick02.wav\",\n \"CYCdh_VinylK3-Kick03.wav\",\n \"CYCdh_VinylK3-Kick04.wav\",\n \"CYCdh_VinylK3-OpHat.wav\",\n \"CYCdh_VinylK3-Perc01.wav\",\n \"CYCdh_VinylK3-Perc02.wav\",\n \"CYCdh_VinylK3-Perc03.wav\",\n \"CYCdh_VinylK3-Perc04.wav\",\n \"CYCdh_VinylK3-Snr01.wav\",\n \"CYCdh_VinylK3-Snr02.wav\"\n ],\n \"Kit-11-Vinyl\": [\n \"CYCdh_VinylK4-China.wav\",\n \"CYCdh_VinylK4-ClHat01.wav\",\n \"CYCdh_VinylK4-ClHat02.wav\",\n \"CYCdh_VinylK4-ClHat03.wav\",\n \"CYCdh_VinylK4-ClHat04.wav\",\n \"CYCdh_VinylK4-ClHat05.wav\",\n \"CYCdh_VinylK4-Crash01.wav\",\n \"CYCdh_VinylK4-Crash02.wav\",\n \"CYCdh_VinylK4-Kick01.wav\",\n \"CYCdh_VinylK4-Kick02.wav\",\n \"CYCdh_VinylK4-OpHat01.wav\",\n \"CYCdh_VinylK4-OpHat02.wav\",\n \"CYCdh_VinylK4-Ride01.wav\",\n \"CYCdh_VinylK4-Ride02.wav\",\n \"CYCdh_VinylK4-Ride03.wav\",\n \"CYCdh_VinylK4-Ride04.wav\",\n \"CYCdh_VinylK4-Snr01.wav\",\n \"CYCdh_VinylK4-Snr02.wav\",\n \"CYCdh_VinylK4-Snr03.wav\",\n \"CYCdh_VinylK4-Snr04.wav\",\n \"CYCdh_VinylK4-Snr05.wav\",\n \"CYCdh_VinylK4-Snr06.wav\",\n \"CYCdh_VinylK4-Tom01.wav\",\n \"CYCdh_VinylK4-Tom02.wav\",\n \"CYCdh_VinylK4-Tom03.wav\"\n ],\n \"Kit-12-Vinyl\": [\n \"CYCdh_VinylK5-ClHat01.wav\",\n \"CYCdh_VinylK5-ClHat02.wav\",\n \"CYCdh_VinylK5-ClHat03.wav\",\n \"CYCdh_VinylK5-Kick01.wav\",\n \"CYCdh_VinylK5-Kick02.wav\",\n \"CYCdh_VinylK5-OpHat.wav\",\n \"CYCdh_VinylK5-Snr01.wav\",\n \"CYCdh_VinylK5-Snr02.wav\",\n \"CYCdh_VinylK5-Snr03.wav\",\n \"CYCdh_VinylK5-Snr04.wav\",\n \"CYCdh_VinylK5-Tom01.wav\",\n \"CYCdh_VinylK5-Tom02.wav\",\n \"CYCdh_VinylK5-Tom03.wav\"\n ],\n \"Kit-13-Acoustic\": [\n \"CYCdh_K4-4OpHat03.wav\",\n \"CYCdh_K4-ClHat01.wav\",\n \"CYCdh_K4-ClHat02.wav\",\n \"CYCdh_K4-ClHat03.wav\",\n \"CYCdh_K4-Kick01.wav\",\n \"CYCdh_K4-Kick02.wav\",\n \"CYCdh_K4-Kick03.wav\",\n \"CYCdh_K4-Kick04.wav\",\n \"CYCdh_K4-Kick05.wav\",\n \"CYCdh_K4-OpHat01.wav\",\n \"CYCdh_K4-OpHat02.wav\",\n \"CYCdh_K4-Snr01.wav\",\n \"CYCdh_K4-Snr02.wav\",\n \"CYCdh_K4-Snr03.wav\",\n \"CYCdh_K4-Snr04.wav\",\n \"CYCdh_K4-Snr05.wav\",\n \"CYCdh_K4-Snr06.wav\",\n \"CYCdh_K4-Snr07.wav\",\n \"CYCdh_K4-Snr08.wav\",\n \"CYCdh_K4-Snr09.wav\",\n \"CYCdh_K4-Snr10.wav\",\n \"CYCdh_K4-Snr11.wav\",\n \"CYCdh_K4-Trash01.wav\",\n \"CYCdh_K4-Trash02.wav\",\n \"CYCdh_K4-Trash03.wav\",\n \"CYCdh_K4-Trash04.wav\",\n \"CYCdh_K4-Trash05.wav\",\n \"CYCdh_K4-Trash06.wav\",\n \"CYCdh_K4-Trash07.wav\",\n \"CYCdh_K4-Trash08.wav\",\n \"CYCdh_K4-Trash09.wav\",\n \"CYCdh_K4-Trash10.wav\"\n ],\n \"Kit-14-Acoustic\": [\n \"CYCdh_K5-ClHat01.wav\",\n \"CYCdh_K5-ClHat02.wav\",\n \"CYCdh_K5-ClHat03.wav\",\n \"CYCdh_K5-Kick01.wav\",\n \"CYCdh_K5-Kick02.wav\",\n \"CYCdh_K5-Kick93.wav\",\n \"CYCdh_K5-OpHat01.wav\",\n \"CYCdh_K5-OpHat02.wav\",\n \"CYCdh_K5-PdHat.wav\",\n \"CYCdh_K5-Rim01.wav\",\n \"CYCdh_K5-Rim02.wav\",\n \"CYCdh_K5-Rim03.wav\",\n \"CYCdh_K5-SdSt01.wav\",\n \"CYCdh_K5-SdSt02.wav\",\n \"CYCdh_K5-SdSt03.wav\",\n \"CYCdh_K5-Snr01.wav\",\n \"CYCdh_K5-Snr02.wav\",\n \"CYCdh_K5-Snr03.wav\",\n \"CYCdh_K5-Snr04.wav\",\n \"CYCdh_K5-Tom01a.wav\",\n \"CYCdh_K5-Tom01b.wav\",\n \"CYCdh_K5-Tom01c.wav\",\n \"CYCdh_K5-Tom02a.wav\",\n \"CYCdh_K5-Tom02b.wav\",\n \"CYCdh_K5-Tom02c.wav\",\n \"CYCdh_K5-Tom03a.wav\",\n \"CYCdh_K5-Tom03b.wav\",\n \"CYCdh_K5-Tom03c.wav\"\n ],\n \"Kit-15-Electro\": [\n \"CYCdh_ElecK05-Clap01.wav\",\n \"CYCdh_ElecK05-Clap02.wav\",\n \"CYCdh_ElecK05-ClHat01.wav\",\n \"CYCdh_ElecK05-ClHat02.wav\",\n \"CYCdh_ElecK05-ClHat03.wav\",\n \"CYCdh_ElecK05-ClHat04.wav\",\n \"CYCdh_ElecK05-Kick01.wav\",\n \"CYCdh_ElecK05-Kick02.wav\",\n \"CYCdh_ElecK05-OpHat01.wav\",\n \"CYCdh_ElecK05-OpHat02.wav\",\n \"CYCdh_ElecK05-Snr01.wav\",\n \"CYCdh_ElecK05-Snr02.wav\",\n \"CYCdh_ElecK05-Snr03.wav\",\n \"CYCdh_ElecK05-Snr04.wav\"\n ],\n \"Kit-16-Electro\": [\n \"CYCdh_ElecK06-Clap01.wav\",\n \"CYCdh_ElecK06-Clap02.wav\",\n \"CYCdh_ElecK06-Clap03.wav\",\n \"CYCdh_ElecK06-ClHat01.wav\",\n \"CYCdh_ElecK06-ClHat02.wav\",\n \"CYCdh_ElecK06-Kick01.wav\",\n \"CYCdh_ElecK06-Kick02.wav\",\n \"CYCdh_ElecK06-OpHat.wav\",\n \"CYCdh_ElecK06-Snr01.wav\",\n \"CYCdh_ElecK06-Snr02.wav\",\n \"CYCdh_ElecK06-Snr03.wav\"\n ],\n \"Kit-17-Electro\": [\n \"CYCdh_ElecK07-ClHat01.wav\",\n \"CYCdh_ElecK07-ClHat02.wav\",\n \"CYCdh_ElecK07-Kick01.wav\",\n \"CYCdh_ElecK07-Kick02.wav\",\n \"CYCdh_ElecK07-OpHat.wav\",\n \"CYCdh_ElecK07-Snr01.wav\",\n \"CYCdh_ElecK07-Snr02.wav\",\n \"CYCdh_ElecK07-Snr03.wav\"\n ],\n \"Kit-18-Acoustic\": [\n \"CYCdh_K6-ClHat.wav\",\n \"CYCdh_K6-Kick01.wav\",\n \"CYCdh_K6-OpHat01.wav\",\n \"CYCdh_K6-OpHat02.wav\",\n \"CYCdh_K6-Snr01.wav\",\n \"CYCdh_K6-Snr02.wav\",\n \"CYCdh_K6-Snr03.wav\",\n \"CYCdh_K6-Snr04.wav\",\n \"CYCdh_K6-SnrBuzz.wav\"\n ],\n \"Kit-1-Acoustic-close\": [\n \"CYCdh_K1close_ClHat-01.wav\",\n \"CYCdh_K1close_ClHat-02.wav\",\n \"CYCdh_K1close_ClHat-03.wav\",\n \"CYCdh_K1close_ClHat-04.wav\",\n \"CYCdh_K1close_ClHat-05.wav\",\n \"CYCdh_K1close_ClHat-06.wav\",\n \"CYCdh_K1close_ClHat-07.wav\",\n \"CYCdh_K1close_ClHat-08.wav\",\n \"CYCdh_K1close_ClHat-09.wav\",\n \"CYCdh_K1close_Flam-01.wav\",\n \"CYCdh_K1close_Flam-02.wav\",\n \"CYCdh_K1close_Flam-03.wav\",\n \"CYCdh_K1close_Flam-04.wav\",\n \"CYCdh_K1close_Flam-05.wav\",\n \"CYCdh_K1close_Kick-01.wav\",\n \"CYCdh_K1close_Kick-02.wav\",\n \"CYCdh_K1close_Kick-03.wav\",\n \"CYCdh_K1close_Kick-04.wav\",\n \"CYCdh_K1close_Kick-05.wav\",\n \"CYCdh_K1close_Kick-06.wav\",\n \"CYCdh_K1close_Kick-07.wav\",\n \"CYCdh_K1close_Kick-08.wav\",\n \"CYCdh_K1close_OpHat-01.wav\",\n \"CYCdh_K1close_OpHat-02.wav\",\n \"CYCdh_K1close_OpHat-03.wav\",\n \"CYCdh_K1close_OpHat-04.wav\",\n \"CYCdh_K1close_OpHat-05.wav\",\n \"CYCdh_K1close_OpHat-06.wav\",\n \"CYCdh_K1close_OpHat-07.wav\",\n \"CYCdh_K1close_PdHat-01.wav\",\n \"CYCdh_K1close_PdHat-02.wav\",\n \"CYCdh_K1close_PdHat-03.wav\",\n \"CYCdh_K1close_PdHat-04.wav\",\n \"CYCdh_K1close_Rim-01.wav\",\n \"CYCdh_K1close_Rim-02.wav\",\n \"CYCdh_K1close_Rim-03.wav\",\n \"CYCdh_K1close_Rim-04.wav\",\n \"CYCdh_K1close_Rim-05.wav\",\n \"CYCdh_K1close_Rim-06.wav\",\n \"CYCdh_K1close_Rim-07.wav\",\n \"CYCdh_K1close_SdSt-01.wav\",\n \"CYCdh_K1close_SdSt-02.wav\",\n \"CYCdh_K1close_SdSt-03.wav\",\n \"CYCdh_K1close_SdSt-04.wav\",\n \"CYCdh_K1close_SdSt-05.wav\",\n \"CYCdh_K1close_SdSt-06.wav\",\n \"CYCdh_K1close_SdSt-07.wav\",\n \"CYCdh_K1close_Snr-01.wav\",\n \"CYCdh_K1close_Snr-02.wav\",\n \"CYCdh_K1close_Snr-03.wav\",\n \"CYCdh_K1close_Snr-04.wav\",\n \"CYCdh_K1close_Snr-05.wav\",\n \"CYCdh_K1close_SnrOff-01.wav\",\n \"CYCdh_K1close_SnrOff-02.wav\",\n \"CYCdh_K1close_SnrOff-03.wav\",\n \"CYCdh_K1close_SnrOff-04.wav\",\n \"CYCdh_K1close_SnrOff-05.wav\",\n \"CYCdh_K1close_SnrOff-06.wav\",\n \"CYCdh_K1close_SnrOff-07.wav\",\n \"CYCdh_K1close_SnrOff-08.wav\"\n ],\n \"Kit-2-Acoustic-room\": [\n \"CYCdh_K2room_ClHat-01.wav\",\n \"CYCdh_K2room_ClHat-02.wav\",\n \"CYCdh_K2room_ClHat-03.wav\",\n \"CYCdh_K2room_ClHat-04.wav\",\n \"CYCdh_K2room_ClHat-05.wav\",\n \"CYCdh_K2room_ClHat-06.wav\",\n \"CYCdh_K2room_ClHat-07.wav\",\n \"CYCdh_K2room_ClHat-08.wav\",\n \"CYCdh_K2room_ClHat-09.wav\",\n \"CYCdh_K2room_Flam-01.wav\",\n \"CYCdh_K2room_Flam-02.wav\",\n \"CYCdh_K2room_Flam-03.wav\",\n \"CYCdh_K2room_Flam-04.wav\",\n \"CYCdh_K2room_Flam-05.wav\",\n \"CYCdh_K2room_Kick-01.wav\",\n \"CYCdh_K2room_Kick-02.wav\",\n \"CYCdh_K2room_Kick-03.wav\",\n \"CYCdh_K2room_Kick-04.wav\",\n \"CYCdh_K2room_Kick-05.wav\",\n \"CYCdh_K2room_Kick-06.wav\",\n \"CYCdh_K2room_Kick-07.wav\",\n \"CYCdh_K2room_Kick-08.wav\",\n \"CYCdh_K2room_OpHat-01.wav\",\n \"CYCdh_K2room_OpHat-02.wav\",\n \"CYCdh_K2room_OpHat-03.wav\",\n \"CYCdh_K2room_OpHat-04.wav\",\n \"CYCdh_K2room_OpHat-05.wav\",\n \"CYCdh_K2room_OpHat-06.wav\",\n \"CYCdh_K2room_OpHat-07.wav\",\n \"CYCdh_K2room_PdHat-01.wav\",\n \"CYCdh_K2room_PdHat-02.wav\",\n \"CYCdh_K2room_PdHat-03.wav\",\n \"CYCdh_K2room_PdHat-04.wav\",\n \"CYCdh_K2room_Rim-01.wav\",\n \"CYCdh_K2room_Rim-02.wav\",\n \"CYCdh_K2room_Rim-03.wav\",\n \"CYCdh_K2room_Rim-04.wav\",\n \"CYCdh_K2room_Rim-05.wav\",\n \"CYCdh_K2room_Rim-06.wav\",\n \"CYCdh_K2room_Rim-07.wav\",\n \"CYCdh_K2room_SdSt-01.wav\",\n \"CYCdh_K2room_SdSt-02.wav\",\n \"CYCdh_K2room_SdSt-03.wav\",\n \"CYCdh_K2room_SdSt-04.wav\",\n \"CYCdh_K2room_SdSt-05.wav\",\n \"CYCdh_K2room_SdSt-06.wav\",\n \"CYCdh_K2room_SdSt-07.wav\",\n \"CYCdh_K2room_Snr-01.wav\",\n \"CYCdh_K2room_Snr-02.wav\",\n \"CYCdh_K2room_Snr-03.wav\",\n \"CYCdh_K2room_Snr-04.wav\",\n \"CYCdh_K2room_Snr-05.wav\",\n \"CYCdh_K2room_SnrOff-01.wav\",\n \"CYCdh_K2room_SnrOff-02.wav\",\n \"CYCdh_K2room_SnrOff-03.wav\",\n \"CYCdh_K2room_SnrOff-04.wav\",\n \"CYCdh_K2room_SnrOff-05.wav\",\n \"CYCdh_K2room_SnrOff-06.wav\",\n \"CYCdh_K2room_SnrOff-07.wav\",\n \"CYCdh_K2room_SnrOff-08.wav\"\n ],\n \"Kit-3-Acoustic\": [\n \"CyCdh_K3ClHat-01.wav\",\n \"CyCdh_K3ClHat-02.wav\",\n \"CyCdh_K3ClHat-03.wav\",\n \"CyCdh_K3ClHat-04.wav\",\n \"CyCdh_K3Crash-01.wav\",\n \"CyCdh_K3Crash-02.wav\",\n \"CyCdh_K3Crash-03.wav\",\n \"CyCdh_K3Crash-04.wav\",\n \"CyCdh_K3Crash-05.wav\",\n \"CyCdh_K3Crash-06.wav\",\n \"CyCdh_K3Crash-07.wav\",\n \"CyCdh_K3HfHat.wav\",\n \"CyCdh_K3Kick-01.wav\",\n \"CyCdh_K3Kick-02.wav\",\n \"CyCdh_K3Kick-03.wav\",\n \"CyCdh_K3OpHat-01.wav\",\n \"CyCdh_K3OpHat-02.wav\",\n \"CyCdh_K3OpHat-03.wav\",\n \"CyCdh_K3Rim-01.wav\",\n \"CyCdh_K3SdSt-01.wav\",\n \"CyCdh_K3SdSt-02.wav\",\n \"CyCdh_K3SdSt-03.wav\",\n \"CyCdh_K3SdSt-04.wav\",\n \"CyCdh_K3SdSt-05.wav\",\n \"CyCdh_K3SdSt-06.wav\",\n \"CyCdh_K3SdSt-07.wav\",\n \"CyCdh_K3Snr-01.wav\",\n \"CyCdh_K3Snr-02.wav\",\n \"CyCdh_K3Snr-03.wav\",\n \"CyCdh_K3Snr-04.wav\",\n \"CyCdh_K3Snr-05.wav\",\n \"CyCdh_K3Snr-06.wav\",\n \"CyCdh_K3Snr-07.wav\",\n \"CyCdh_K3Snr-08.wav\",\n \"CyCdh_K3Snr-09.wav\",\n \"CyCdh_K3Snr-10.wav\",\n \"CyCdh_K3Tom-01.wav\",\n \"CyCdh_K3Tom-04.wav\",\n \"CyCdh_K3Tom-05.wav\"\n ],\n \"Kit-4-Electro\": [\n \"CYCdh_ElecK01-ClHat01.wav\",\n \"CYCdh_ElecK01-ClHat02.wav\",\n \"CYCdh_ElecK01-ClHat03.wav\",\n \"CYCdh_ElecK01-Cymbal.wav\",\n \"CYCdh_ElecK01-Kick01.wav\",\n \"CYCdh_ElecK01-Kick02.wav\",\n \"CYCdh_ElecK01-OpHat01.wav\",\n \"CYCdh_ElecK01-OpHat02.wav\",\n \"CYCdh_ElecK01-Snr01.wav\",\n \"CYCdh_ElecK01-Snr02.wav\",\n \"CYCdh_ElecK01-Snr03.wav\",\n \"CYCdh_ElecK01-Tom01.wav\",\n \"CYCdh_ElecK01-Tom02.wav\",\n \"CYCdh_ElecK01-Tom03.wav\",\n \"CYCdh_ElecK01-Tom04.wav\"\n ],\n \"Kit-5-Electro\": [\n \"CYCdh_ElecK02-Clap01.wav\",\n \"CYCdh_ElecK02-Clap02.wav\",\n \"CYCdh_ElecK02-ClHat01.wav\",\n \"CYCdh_ElecK02-ClHat02.wav\",\n \"CYCdh_ElecK02-FX01.wav\",\n \"CYCdh_ElecK02-FX02.wav\",\n \"CYCdh_ElecK02-FX03.wav\",\n \"CYCdh_ElecK02-HfHat.wav\",\n \"CYCdh_ElecK02-Kick01.wav\",\n \"CYCdh_ElecK02-Kick02.wav\",\n \"CYCdh_ElecK02-Snr01.wav\",\n \"CYCdh_ElecK02-Snr02.wav\",\n \"CYCdh_ElecK02-Tom01.wav\",\n \"CYCdh_ElecK02-Tom02.wav\",\n \"CYCdh_ElecK02-Tom03.wav\"\n ],\n \"Kit-6-Electro\": [\n \"CYCdh_ElecK03-Clap01.wav\",\n \"CYCdh_ElecK03-Clap02.wav\",\n \"CYCdh_ElecK03-ClHat.wav\",\n \"CYCdh_ElecK03-Kick01.wav\",\n \"CYCdh_ElecK03-Kick02.wav\",\n \"CYCdh_ElecK03-OpHat.wav\",\n \"CYCdh_ElecK03-PdHat.wav\",\n \"CYCdh_ElecK03-Snr01.wav\",\n \"CYCdh_ElecK03-Snr02.wav\",\n \"CYCdh_ElecK03-Tom01.wav\",\n \"CYCdh_ElecK03-Tom02.wav\",\n \"CYCdh_ElecK03-Tom03.wav\",\n \"CYCdh_ElecK03-Tom04.wav\",\n \"CYCdh_ElecK03-Tom05.wav\"\n ],\n \"Kit-7-Electro\": [\n \"CYCdh_ElecK04-Clap.wav\",\n \"CYCdh_ElecK04-ClHat01.wav\",\n \"CYCdh_ElecK04-ClHat02.wav\",\n \"CYCdh_ElecK04-Cymbal01.wav\",\n \"CYCdh_ElecK04-Cymbal02.wav\",\n \"CYCdh_ElecK04-HfHat.wav\",\n \"CYCdh_ElecK04-Kick01.wav\",\n \"CYCdh_ElecK04-Kick02.wav\",\n \"CYCdh_ElecK04-Kick03.wav\",\n \"CYCdh_ElecK04-Snr01.wav\",\n \"CYCdh_ElecK04-Snr02.wav\",\n \"CYCdh_ElecK04-Snr03.wav\",\n \"CYCdh_ElecK04-Tom01.wav\",\n \"CYCdh_ElecK04-Tom02.wav\",\n \"CYCdh_ElecK04-Tom03.wav\",\n \"CYCdh_ElecK04-Tom04.wav\"\n ],\n \"Kit-8-Vinyl\": [\n \"CYCdh_VinylK1-ClHat01.wav\",\n \"CYCdh_VinylK1-ClHat02.wav\",\n \"CYCdh_VinylK1-Kick01.wav\",\n \"CYCdh_VinylK1-Kick02.wav\",\n \"CYCdh_VinylK1-Kick03.wav\",\n \"CYCdh_VinylK1-OpHat.wav\",\n \"CYCdh_VinylK1-Shkr01.wav\",\n \"CYCdh_VinylK1-Shkr02.wav\",\n \"CYCdh_VinylK1-Shkr03.wav\",\n \"CYCdh_VinylK1-Snr01.wav\",\n \"CYCdh_VinylK1-Snr02.wav\",\n \"CYCdh_VinylK1-Tamb.wav\"\n ],\n \"Kit-9-Vinyl\": [\n \"CYCdh_VinylK2-ClHat.wav\",\n \"CYCdh_VinylK2-HfHat.wav\",\n \"CYCdh_VinylK2-Kick02.wav\",\n \"CYCdh_VinylK2-Kicki01.wav\",\n \"CYCdh_VinylK2-OpHat01.wav\",\n \"CYCdh_VinylK2-OpHat02.wav\",\n \"CYCdh_VinylK2-Ride01.wav\",\n \"CYCdh_VinylK2-Ride02.wav\",\n \"CYCdh_VinylK2-Snr01.wav\",\n \"CYCdh_VinylK2-Snr02.wav\",\n \"CYCdh_VinylK2-Tom01.wav\",\n \"CYCdh_VinylK2-Tom02.wav\"\n ],\n \"Kurzweil-Kit-01\": [\n \"CYCdh_Kurz01-ClHat.wav\",\n \"CYCdh_Kurz01-Crash01.wav\",\n \"CYCdh_Kurz01-Crash02.wav\",\n \"CYCdh_Kurz01-Crash03.wav\",\n \"CYCdh_Kurz01-Crash04.wav\",\n \"CYCdh_Kurz01-HfHat.wav\",\n \"CYCdh_Kurz01-Kick01.wav\",\n \"CYCdh_Kurz01-Kick02.wav\",\n \"CYCdh_Kurz01-Kick03.wav\",\n \"CYCdh_Kurz01-OpHat01.wav\",\n \"CYCdh_Kurz01-OpHat02.wav\",\n \"CYCdh_Kurz01-PdHat.wav\",\n \"CYCdh_Kurz01-RevCrash.wav\",\n \"CYCdh_Kurz01-Ride01.wav\",\n \"CYCdh_Kurz01-Ride02.wav\",\n \"CYCdh_Kurz01-SdSt.wav\",\n \"CYCdh_Kurz01-Snr01.wav\",\n \"CYCdh_Kurz01-Snr02.wav\",\n \"CYCdh_Kurz01-Snr03.wav\",\n \"CYCdh_Kurz01-Tom01.wav\",\n \"CYCdh_Kurz01-Tom02.wav\",\n \"CYCdh_Kurz01-Tom03.wav\",\n \"CYCdh_Kurz01-Tom04.wav\"\n ],\n \"Kurzweil-Kit-02\": [\n \"CYCdh_Kurz02-ClHat.wav\",\n \"CYCdh_Kurz02-Crash01.wav\",\n \"CYCdh_Kurz02-Crash02.wav\",\n \"CYCdh_Kurz02-HfHat.wav\",\n \"CYCdh_Kurz02-Kick01.wav\",\n \"CYCdh_Kurz02-Kick02.wav\",\n \"CYCdh_Kurz02-OpHat.wav\",\n \"CYCdh_Kurz02-PdHat.wav\",\n \"CYCdh_Kurz02-Ride01.wav\",\n \"CYCdh_Kurz02-Ride02.wav\",\n \"CYCdh_Kurz02-SdSt.wav\",\n \"CYCdh_Kurz02-Snr01.wav\",\n \"CYCdh_Kurz02-Snr02.wav\",\n \"CYCdh_Kurz02-Tom01.wav\",\n \"CYCdh_Kurz02-Tom02.wav\",\n \"CYCdh_Kurz02-Tom03.wav\",\n \"CYCdh_Kurz02-Tom04.wav\"\n ],\n \"Kurzweil-Kit-03\": [\n \"CYCdh_Kurz03-ClHat01.wav\",\n \"CYCdh_Kurz03-ClHat02.wav\",\n \"CYCdh_Kurz03-Crash01.wav\",\n \"CYCdh_Kurz03-Crash02.wav\",\n \"CYCdh_Kurz03-Crash03.wav\",\n \"CYCdh_Kurz03-HfHat.wav\",\n \"CYCdh_Kurz03-Kick.wav\",\n \"CYCdh_Kurz03-OpHat.wav\",\n \"CYCdh_Kurz03-PdHat.wav\",\n \"CYCdh_Kurz03-Ride.wav\",\n \"CYCdh_Kurz03-SdSt.wav\",\n \"CYCdh_Kurz03-Snr01.wav\",\n \"CYCdh_Kurz03-Snr02.wav\",\n \"CYCdh_Kurz03-Tom01.wav\",\n \"CYCdh_Kurz03-Tom02.wav\",\n \"CYCdh_Kurz03-Tom03.wav\",\n \"CYCdh_Kurz03-Tom04.wav\"\n ],\n \"Kurzweil-Kit-04\": [\n \"CYCdh_Kurz04-ClHat.wav\",\n \"CYCdh_Kurz04-Crash01.wav\",\n \"CYCdh_Kurz04-Crash02.wav\",\n \"CYCdh_Kurz04-HfHat.wav\",\n \"CYCdh_Kurz04-Kick01.wav\",\n \"CYCdh_Kurz04-Kick02.wav\",\n \"CYCdh_Kurz04-OpHat.wav\",\n \"CYCdh_Kurz04-PdHat.wav\",\n \"CYCdh_Kurz04-Ride01.wav\",\n \"CYCdh_Kurz04-Ride02.wav\",\n \"CYCdh_Kurz04-SdSt.wav\",\n \"CYCdh_Kurz04-Snr01.wav\",\n \"CYCdh_Kurz04-Snr02.wav\",\n \"CYCdh_Kurz04-Snr03.wav\",\n \"CYCdh_Kurz04-Snr04.wav\",\n \"CYCdh_Kurz04-Tom01.wav\",\n \"CYCdh_Kurz04-Tom02.wav\",\n \"CYCdh_Kurz04-Tom03.wav\",\n \"CYCdh_Kurz04-Tom04.wav\",\n \"CYCdh_Kurz04-Tom05.wav\",\n \"CYCdh_Kurz04-Tom06.wav\"\n ],\n \"Kurzweil-Kit-05\": [\n \"CYCdh_Kurz05-Brsh01.wav\",\n \"CYCdh_Kurz05-Brsh02.wav\",\n \"CYCdh_Kurz05-Brsh03.wav\",\n \"CYCdh_Kurz05-ClHat.wav\",\n \"CYCdh_Kurz05-Crash01.wav\",\n \"CYCdh_Kurz05-Crash02.wav\",\n \"CYCdh_Kurz05-HfHat.wav\",\n \"CYCdh_Kurz05-Kick01.wav\",\n \"CYCdh_Kurz05-Kicki02.wav\",\n \"CYCdh_Kurz05-OpHat.wav\",\n \"CYCdh_Kurz05-PdHat.wav\",\n \"CYCdh_Kurz05-Ride01.wav\",\n \"CYCdh_Kurz05-Ride02.wav\",\n \"CYCdh_Kurz05-SdSt.wav\",\n \"CYCdh_Kurz05-Snr.wav\",\n \"CYCdh_Kurz05-Tom01.wav\",\n \"CYCdh_Kurz05-Tom02.wav\",\n \"CYCdh_Kurz05-Tom03.wav\",\n \"CYCdh_Kurz05-Tom04.wav\"\n ],\n \"Kurzweil-Kit-06\": [\n \"CYCdh_Kurz06-ClHat.wav\",\n \"CYCdh_Kurz06-Crash01.wav\",\n \"CYCdh_Kurz06-Crash02.wav\",\n \"CYCdh_Kurz06-HfHat01.wav\",\n \"CYCdh_Kurz06-HfHat02.wav\",\n \"CYCdh_Kurz06-Kick01.wav\",\n \"CYCdh_Kurz06-Kick02.wav\",\n \"CYCdh_Kurz06-OpHat.wav\",\n \"CYCdh_Kurz06-PdHat.wav\",\n \"CYCdh_Kurz06-Ride01.wav\",\n \"CYCdh_Kurz06-Ride02.wav\",\n \"CYCdh_Kurz06-SdSt.wav\",\n \"CYCdh_Kurz06-Snr01.wav\",\n \"CYCdh_Kurz06-Snr02.wav\",\n \"CYCdh_Kurz06-Snr03.wav\",\n \"CYCdh_Kurz06-Tom01.wav\",\n \"CYCdh_Kurz06-Tom02.wav\",\n \"CYCdh_Kurz06-Tom03.wav\",\n \"CYCdh_Kurz06-Tom04.wav\"\n ],\n \"Kurzweil-Kit-07\": [\n \"CYCdh_Kurz07-ClHat01.wav\",\n \"CYCdh_Kurz07-ClHat02.wav\",\n \"CYCdh_Kurz07-Crash01.wav\",\n \"CYCdh_Kurz07-Crash02.wav\",\n \"CYCdh_Kurz07-HfHat01.wav\",\n \"CYCdh_Kurz07-HfHat02.wav\",\n \"CYCdh_Kurz07-Kick02.wav\",\n \"CYCdh_Kurz07-Kick03.wav\",\n \"CYCdh_Kurz07-Kicki01.wav\",\n \"CYCdh_Kurz07-OpHat01.wav\",\n \"CYCdh_Kurz07-OpHat02.wav\",\n \"CYCdh_Kurz07-Perc01.wav\",\n \"CYCdh_Kurz07-Perc03.wav\",\n \"CYCdh_Kurz07-RevCrash01.wav\",\n \"CYCdh_Kurz07-RevCrash02.wav\",\n \"CYCdh_Kurz07-RevHat.wav\",\n \"CYCdh_Kurz07-SdSt.wav\",\n \"CYCdh_Kurz07-Snr01.wav\",\n \"CYCdh_Kurz07-Snr02.wav\",\n \"CYCdh_Kurz07-Snr03.wav\",\n \"CYCdh_Kurz07-Snr04.wav\",\n \"CYCdh_Kurz07-Tom01.wav\",\n \"CYCdh_Kurz07-Tom02.wav\",\n \"CYCdh_Kurz07-Tom03.wav\",\n \"CYCdh_Kurz07-Tom04.wav\",\n \"CYCdh_Kurz07-Tom05.wav\"\n ],\n \"Kurzweil-Kit-08\": [\n \"CYCdh_Kurz08-Clap.wav\",\n \"CYCdh_Kurz08-ClHat.wav\",\n \"CYCdh_Kurz08-Crash01.wav\",\n \"CYCdh_Kurz08-Crash02.wav\",\n \"CYCdh_Kurz08-Crash03.wav\",\n \"CYCdh_Kurz08-Kick01.wav\",\n \"CYCdh_Kurz08-Kick02.wav\",\n \"CYCdh_Kurz08-OpHat.wav\",\n \"CYCdh_Kurz08-PdHat.wav\",\n \"CYCdh_Kurz08-Perc01.wav\",\n \"CYCdh_Kurz08-Perc02.wav\",\n \"CYCdh_Kurz08-Perc03.wav\",\n \"CYCdh_Kurz08-Perc04.wav\",\n \"CYCdh_Kurz08-Perc05.wav\",\n \"CYCdh_Kurz08-Perc06.wav\",\n \"CYCdh_Kurz08-Perc07.wav\",\n \"CYCdh_Kurz08-Perc08.wav\",\n \"CYCdh_Kurz08-Perc09.wav\",\n \"CYCdh_Kurz08-Scratch01.wav\",\n \"CYCdh_Kurz08-Scratch02.wav\",\n \"CYCdh_Kurz08-Scratch03.wav\",\n \"CYCdh_Kurz08-SdSt01.wav\",\n \"CYCdh_Kurz08-SdSt02.wav\",\n \"CYCdh_Kurz08-Snr01.wav\",\n \"CYCdh_Kurz08-Snr02.wav\",\n \"CYCdh_Kurz08-Tom01.wav\",\n \"CYCdh_Kurz08-Tom02.wav\",\n \"CYCdh_Kurz08-Tom03.wav\",\n \"CYCdh_Kurz08-Tom04.wav\"\n ]\n }\n};\n","export const metronomeTempos = {\n 'Larghissimo 20': '20 bpm',\n 'Larghissimo 21': '21 bpm',\n 'Larghissimo 22': '22 bpm',\n 'Larghissimo 23': '23 bpm',\n 'Adagissimo 24': '24 bpm',\n 'Adagissimo 25': '25 bpm',\n 'Adagissimo 26': '26 bpm',\n 'Adagissimo 27': '27 bpm',\n 'Adagissimo 28': '28 bpm',\n 'Adagissimo 29': '29 bpm',\n 'Adagissimo 30': '30 bpm',\n 'Adagissimo 31': '31 bpm',\n 'Adagissimo 32': '32 bpm',\n 'Adagissimo 33': '33 bpm',\n 'Adagissimo 34': '34 bpm',\n 'Grave 35': '35 bpm',\n 'Grave 36': '36 bpm',\n 'Grave 37': '37 bpm',\n 'Grave 38': '38 bpm',\n 'Grave 39': '39 bpm',\n 'Grave 40': '40 bpm',\n 'Grave 41': '41 bpm',\n 'Grave 42': '42 bpm',\n 'Grave 43': '43 bpm',\n 'Grave 44': '44 bpm',\n 'Grave 45': '45 bpm',\n 'Grave 46': '46 bpm',\n 'Grave 47': '47 bpm',\n 'Grave 48': '48 bpm',\n 'Grave 49': '49 bpm',\n 'Largo 50': '50 bpm',\n 'Largo 51': '51 bpm',\n 'Largo 52': '52 bpm',\n 'Lento 53': '53 bpm',\n 'Lento 54': '54 bpm',\n 'Lento 55': '55 bpm',\n 'Lento 56': '56 bpm',\n 'Lento 57': '57 bpm',\n 'Lento 58': '58 bpm',\n 'Lento 59': '59 bpm',\n 'Lento 60': '60 bpm',\n 'Lento 61': '61 bpm',\n 'Lento 62': '62 bpm',\n 'Larghetto 63': '63 bpm',\n 'Larghetto 64': '64 bpm',\n 'Larghetto 65': '65 bpm',\n 'Larghetto 66': '66 bpm',\n 'Larghetto 67': '67 bpm',\n 'Larghetto 68': '68 bpm',\n 'Larghetto 69': '69 bpm',\n 'Larghetto 70': '70 bpm',\n 'Adagio 71': '71 bpm',\n 'Adagio 72': '72 bpm',\n 'Adagio 73': '73 bpm',\n 'Adagio 74': '74 bpm',\n 'Adagietto 75': '75 bpm',\n 'Adagietto 76': '76 bpm',\n 'Adagietto 77': '77 bpm',\n 'Adagietto 78': '78 bpm',\n 'Adagietto 79': '79 bpm',\n 'Adagietto 80': '80 bpm',\n 'Adagietto 81': '81 bpm',\n 'Adagietto 82': '82 bpm',\n 'Adagietto 83': '83 bpm',\n 'Marcia moderato 84': '84 bpm',\n 'Marcia moderato 85': '85 bpm',\n 'Marcia moderato 86': '86 bpm',\n 'Marcia moderato 87': '87 bpm',\n 'Marcia moderato 88': '88 bpm',\n 'Marcia moderato 89': '89 bpm',\n 'Marcia moderato 90': '90 bpm',\n 'Marcia moderato 91': '91 bpm',\n 'Andante 92': '92 bpm',\n 'Andante 93': '93 bpm',\n 'Andantino 94': '94 bpm',\n 'Andante moderato 95': '95 bpm',\n 'Andante moderato 96': '96 bpm',\n 'Andante moderato 97': '97 bpm',\n 'Andante moderato 98': '98 bpm',\n 'Andante moderato 99': '99 bpm',\n 'Andante moderato 100': '100 bpm',\n 'Andante moderato 101': '101 bpm',\n 'Andante moderato 102': '102 bpm',\n 'Andante moderato 103': '103 bpm',\n 'Andante moderato 104': '104 bpm',\n 'Moderato 105': '105 bpm',\n 'Allegretto 106': '106 bpm',\n 'Allegretto 107': '107 bpm',\n 'Allegretto 108': '108 bpm',\n 'Allegretto 109': '109 bpm',\n 'Allegretto 110': '110 bpm',\n 'Allegretto 111': '111 bpm',\n 'Allegretto 112': '112 bpm',\n 'Allegretto 113': '113 bpm',\n 'Allegretto 114': '114 bpm',\n 'Allegretto 115': '115 bpm',\n 'Allegretto 116': '116 bpm',\n 'Allegretto 117': '117 bpm',\n 'Allegro moderato 118': '118 bpm',\n 'Allegro moderato 119': '119 bpm',\n 'Allegro moderato 120': '120 bpm',\n 'Allegro moderato 121': '121 bpm',\n 'Allegro moderato 122': '122 bpm',\n 'Allegro moderato 123': '123 bpm',\n 'Allegro moderato 124': '124 bpm',\n 'Allegro moderato 125': '125 bpm',\n 'Allegro moderato 126': '126 bpm',\n 'Allegro moderato 127': '127 bpm',\n 'Allegro moderato 128': '128 bpm',\n 'Allegro moderato 129': '129 bpm',\n 'Allegro moderato 130': '130 bpm',\n 'Allegro moderato 131': '131 bpm',\n 'Allegro moderato 132': '132 bpm',\n 'Allegro moderato 133': '133 bpm',\n 'Allegro moderato 134': '134 bpm',\n 'Allegro moderato 135': '135 bpm',\n 'Allegro moderato 136': '136 bpm',\n 'Allegro moderato 137': '137 bpm',\n 'Allegro 138': '138 bpm',\n 'Allegro 139': '139 bpm',\n 'Allegro 140': '140 bpm',\n 'Allegro 141': '141 bpm',\n 'Allegro 142': '142 bpm',\n 'Allegro 143': '143 bpm',\n 'Allegro 144': '144 bpm',\n 'Allegro 145': '145 bpm',\n 'Allegro 146': '146 bpm',\n 'Allegro 147': '147 bpm',\n 'Allegro 148': '148 bpm',\n 'Allegro 149': '149 bpm',\n 'Allegro 150': '150 bpm',\n 'Allegro 151': '151 bpm',\n 'Allegro 152': '152 bpm',\n 'Allegro 153': '153 bpm',\n 'Allegro 154': '154 bpm',\n 'Allegro 155': '155 bpm',\n 'Allegro 156': '156 bpm',\n 'Allegro 157': '157 bpm',\n 'Allegro 158': '158 bpm',\n 'Allegro 159': '159 bpm',\n 'Allegro 160': '160 bpm',\n 'Allegro 161': '161 bpm',\n 'Allegro 162': '162 bpm',\n 'Allegro 163': '163 bpm',\n 'Allegro 164': '164 bpm',\n 'Allegro 165': '165 bpm',\n 'Vivace 166': '166 bpm',\n 'Vivace 167': '167 bpm',\n 'Vivace 168': '168 bpm',\n 'Vivace 169': '169 bpm',\n 'Vivace 170': '170 bpm',\n 'Vivace 171': '171 bpm',\n 'Vivace 172': '172 bpm',\n 'Vivace 173': '173 bpm',\n 'Vivacissimo 174': '174 bpm',\n 'Allegrissimo 174': '174 bpm',\n 'Allegro vivace 174': '174 bpm',\n 'Allegro vivace 175': '175 bpm',\n 'Allegro vivace 176': '176 bpm',\n 'Allegro vivace 177': '177 bpm',\n 'Allegro vivace 178': '178 bpm',\n 'Allegro vivace 179': '179 bpm',\n 'Allegro vivace 180': '180 bpm',\n 'Allegro vivace 181': '181 bpm',\n 'Allegro vivace 182': '182 bpm',\n 'Allegro vivace 183': '183 bpm',\n 'Presto 184': '184 bpm',\n 'Presto 185': '185 bpm',\n 'Presto 186': '186 bpm',\n 'Presto 187': '187 bpm',\n 'Presto 188': '188 bpm',\n 'Presto 189': '189 bpm',\n 'Presto 190': '190 bpm',\n 'Presto 191': '191 bpm',\n 'Presto 192': '192 bpm',\n 'Presto 193': '193 bpm',\n 'Presto 194': '194 bpm',\n 'Presto 195': '195 bpm',\n 'Presto 196': '196 bpm',\n 'Presto 197': '197 bpm',\n 'Presto 198': '198 bpm',\n 'Presto 199': '199 bpm',\n 'Presto 200': '200 bpm',\n 'Presto 201': '201 bpm',\n 'Presto 202': '202 bpm',\n 'Presto 203': '203 bpm',\n 'Presto 204': '204 bpm',\n 'Prestissimo 205': '205 bpm',\n};\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { padsArray } from \"./Globals\";\nimport { wavFiles } from \"./wavFiles\";\nimport { metronomeTempos } from \"./metronomeTempos\";\n\nimport { setDrumPadGridAction } from \"./actions/setDrumPadGridAction\";\nimport { setSelectionMenuAction } from \"./actions/setSelectionMenuAction\";\nimport { setMetronomeTempoAction } from \"./actions/setMetronomeTempoAction\";\nimport { toggleMetronomeIsPlayingAction } from \"./actions/toggleMetronomeIsPlayingAction\";\nimport { setSampleAction } from \"./actions/setSampleAction\";\nimport { shouldMetronomeRestartAction } from \"./actions/shouldMetronomeRestartAction\";\n\nconst volumeSelectionMenuItems = ['+30','+20','+10','+0','-10','-20','-30'];\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n setDrumPadGridAction: (drumPadGrid) => dispatch(setDrumPadGridAction(drumPadGrid)),\n setSelectionMenuAction: (selectionMenu) => dispatch(setSelectionMenuAction(selectionMenu)),\n setMetronomeTempoAction: (key,tempo) => dispatch(setMetronomeTempoAction(key,tempo)),\n toggleMetronomeIsPlayingAction: (key,metronomeIsPlaying) => dispatch(toggleMetronomeIsPlayingAction(key,metronomeIsPlaying)),\n setSampleAction: (key,sample) => dispatch(setSampleAction(key,sample)),\n shouldMetronomeRestartAction: (key,restartMetronome) => dispatch(shouldMetronomeRestartAction(key,restartMetronome)),\n});\n\nclass SelectionMenu extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n fileStringArray: [],\n padSelectingFor: '',\n };\n this.handleMouseOver = this.handleMouseOver.bind(this);\n this.handleMouseOut = this.handleMouseOut.bind(this);\n this.makeMenuToolTipText = this.makeMenuToolTipText.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleBackNav = this.handleBackNav.bind(this);\n this.backToDrumPad = this.backToDrumPad.bind(this);\n this.handleEscKey = this.handleEscKey.bind(this);\n };\n\n makeMenuToolTipText(item) {\n if (item === '( cancel -- back )') {\n return item;\n } else {\n if (this.props.drumPadGrid === 'selectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n return 'select for ' + item;\n } else if (this.props.selectionMenu === 'firstDirMenu') {\n return 'select for ' + this.state.padSelectingFor + ': ' + item;\n } else if (this.props.selectionMenu === 'secondDirMenu') {\n return 'select for ' + this.state.padSelectingFor + ': ' + this.state.fileStringArray[0] + '/' + item;\n } else {\n return 'select for ' + this.state.padSelectingFor + ': ' + this.state.fileStringArray.join('/') + '/' + item;\n }\n } else if (this.props.drumPadGrid === 'volumeSelectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n return 'volume offset for ' + item;\n } else if (this.props.selectionMenu === 'volumeSelectionMenuItems') {\n return 'set volume offset for ' + this.state.padSelectingFor + ' ' + item;\n }\n } else if (this.props.drumPadGrid === 'metronomeSelectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n return 'set metronome tempo for ' + item + ' (or disable)';\n } else if (this.props.selectionMenu === 'metronomeSelectionMenuItems') {\n if (item === 'Metronome Off') {\n return 'turn ' + item + ' for ' + this.state.padSelectingFor;\n } else {\n return 'set metronome tempo for ' + this.state.padSelectingFor + ':' + item.split(':')[1] + ' BPM';\n }\n }\n }\n }\n };\n\n handleBackNav() {\n if (this.props.selectionMenu === 'pads') {\n this.backToDrumPad();\n } else {\n if (this.props.drumPadGrid === 'selectionMenu') {\n if (this.props.selectionMenu === 'firstDirMenu') {\n this.props.setSelectionMenuAction('pads');\n } else if (this.props.selectionMenu === 'secondDirMenu') {\n this.props.setSelectionMenuAction('firstDirMenu');\n } else if (this.props.selectionMenu === 'thirdDirMenu') {\n this.props.setSelectionMenuAction('secondDirMenu');\n } else if (this.props.selectionMenu === 'thirdDirMenu') {\n this.props.setSelectionMenuAction('secondDirMenu');\n } else if (this.props.selectionMenu === 'fourthDirMenu') {\n this.props.setSelectionMenuAction('thirdDirMenu');\n }\n } else {\n this.props.setSelectionMenuAction('pads');\n this.setState({ padSelectingFor: '', });\n }\n }\n };\n\n backToDrumPad() {\n this.setState({\n fileStringArray: [],\n padSelectingFor: '',\n });\n this.props.setDrumPadGridAction('drumPadGrid');\n };\n\n handleEscKey(event) {\n if (event.keyCode === 27) {\n this.handleClick('( cancel -- back )');\n }\n };\n\n handleMouseOver(item) {\n let menuToolTip = document.createElement('div');\n menuToolTip.setAttribute('id','menuToolTip');\n menuToolTip.textContent = this.makeMenuToolTipText(item);\n document.getElementById('display-bottom').appendChild(menuToolTip);\n };\n\n handleMouseOut() {\n let menuToolTip = document.getElementById('menuToolTip');\n if (menuToolTip) {\n menuToolTip.parentNode.removeChild(menuToolTip);\n }\n };\n\n componentDidMount() {\n document.addEventListener(\"keyup\",this.handleEscKey,false);\n document.getElementById(this.props.drumPadGrid).tabIndex = '0';\n document.getElementById(this.props.drumPadGrid).focus();\n if (!document.getElementById('menuScrollTip')) {\n let menuScrollTip = document.createElement('p');\n menuScrollTip.setAttribute('id','menuScrollTip');\n menuScrollTip.textContent = ('scroll menu with arrow keys or PgUpDn, \"esc\" key to go back');\n document.getElementById('display-top').appendChild(menuScrollTip);\n }\n };\n\n componentWillUnmount() {\n document.removeEventListener(\"keyup\",this.handleEscKey,false);\n let menuScrollTip = document.getElementById('menuScrollTip');\n if (menuScrollTip) {\n menuScrollTip.parentNode.removeChild(menuScrollTip);\n }\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.drumPadGrid === 'selectionMenu') {\n if ((prevProps.selectionMenu === 'secondDirMenu') && (this.props.selectionMenu === 'firstDirMenu')) {\n this.setState({\n fileStringArray: [],\n });\n } else if ((prevProps.selectionMenu === 'thirdDirMenu') && (this.props.selectionMenu === 'secondDirMenu')) {\n this.setState(state => {\n return { fileStringArray: [state.fileStringArray[0],] }\n });\n } else if ((prevProps.selectionMenu === 'fourthDirMenu') && (this.props.selectionMenu === 'thirdDirMenu')) {\n this.setState(state => {\n return { fileStringArray: [state.fileStringArray[0],state.fileStringArray[1]] }\n });\n }\n }\n };\n\n handleClick(item) {\n if (item === '( cancel -- back )') {\n this.handleBackNav();\n } else {\n if (this.props.drumPadGrid === 'selectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n this.setState({\n fileStringArray: [],\n padSelectingFor: item,\n });\n this.props.setSelectionMenuAction('firstDirMenu');\n } else if (this.props.selectionMenu === 'firstDirMenu') {\n this.setState({\n fileStringArray: [item,],\n });\n this.props.setSelectionMenuAction('secondDirMenu');\n } else if (this.props.selectionMenu === 'secondDirMenu') {\n this.setState(state => {\n return { fileStringArray: [state.fileStringArray[0],item] }\n });\n this.props.setSelectionMenuAction('thirdDirMenu');\n } else if (this.props.selectionMenu === 'thirdDirMenu') {\n if (item.substring(item.length - 4) === '.wav') {\n const sample = this.state.fileStringArray.join('/') + '/' + item;\n sessionStorage.setItem(this.state.padSelectingFor,sample);\n this.props.shouldMetronomeRestartAction(this.state.padSelectingFor,true);\n this.backToDrumPad();\n } else {\n this.setState(state => {\n return { fileStringArray: [...state.fileStringArray,item] }\n });\n this.props.setSelectionMenuAction('fourthDirMenu');\n }\n } else if (this.props.selectionMenu === 'fourthDirMenu') {\n const sample = this.state.fileStringArray.join('/') + '/' + item;\n sessionStorage.setItem(this.state.padSelectingFor,sample);\n this.props.shouldMetronomeRestartAction(this.state.padSelectingFor,true);\n this.backToDrumPad();\n }\n } else if (this.props.drumPadGrid === 'volumeSelectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n this.setState({ padSelectingFor: item, });\n this.props.setSelectionMenuAction('volumeSelectionMenuItems');\n } else if (this.props.selectionMenu === 'volumeSelectionMenuItems') {\n sessionStorage.setItem(this.state.padSelectingFor + 'volume',item);\n this.backToDrumPad();\n } \n } else if (this.props.drumPadGrid === 'metronomeSelectionMenu') {\n if (this.props.selectionMenu === 'pads') {\n this.setState({ padSelectingFor: item, });\n this.props.setSelectionMenuAction('metronomeSelectionMenuItems');\n } else if (this.props.selectionMenu === 'metronomeSelectionMenuItems') {\n if (item === 'Metronome Off') {\n sessionStorage.setItem(this.state.padSelectingFor + 'isMetronome',false);\n this.props.toggleMetronomeIsPlayingAction(this.state.padSelectingFor,false);\n this.backToDrumPad();\n } else {\n sessionStorage.setItem(this.state.padSelectingFor + 'isMetronome',true);\n const tempo = Math.round(60000 / parseInt(item.split(': ')[1]));\n sessionStorage.setItem(this.state.padSelectingFor + 'metronomeTempo',tempo);\n this.props.setMetronomeTempoAction(this.state.padSelectingFor,tempo);\n this.backToDrumPad();\n }\n } \n }\n }\n this.handleMouseOut();\n };\n\n render() {\n const makeSelectionMenuItem = (item) => {\n return (\n this.handleMouseOver(item)}\n onMouseLeave={(event) => this.handleMouseOut()}\n onClick={() => this.handleClick(item)}\n >\n {item}\n \n );\n };\n\n const makeSelectionMenu = (menuItems) => {\n let resultItems = menuItems.map(item => item);\n resultItems.unshift('( cancel -- back )')\n return resultItems.map(item => makeSelectionMenuItem(item));\n };\n\n if (this.props.drumPadGrid === 'selectionMenu') {\n return(\n
\n { this.props.selectionMenu === 'pads' && makeSelectionMenu(padsArray) }\n { this.props.selectionMenu === 'firstDirMenu' && makeSelectionMenu(Object.keys(wavFiles)) }\n { this.props.selectionMenu === 'secondDirMenu' && makeSelectionMenu(Object.keys(wavFiles[this.state.fileStringArray[0]])) }\n { this.props.selectionMenu === 'thirdDirMenu' && makeSelectionMenu((() => {\n const menuItems = wavFiles[this.state.fileStringArray[0]][this.state.fileStringArray[1]]\n .filter(item => typeof item === 'string');\n if (!(typeof wavFiles[this.state.fileStringArray[0]][this.state.fileStringArray[1]][0] === 'string')) {\n const moreDirs = Object.keys(wavFiles[this.state.fileStringArray[0]][this.state.fileStringArray[1]][0]);\n moreDirs.forEach(item => menuItems.push(item));\n }\n return menuItems;\n })()) }\n { this.props.selectionMenu === 'fourthDirMenu' && makeSelectionMenu(wavFiles[this.state.fileStringArray[0]][this.state.fileStringArray[1]][0][this.state.fileStringArray[2]]) }\n
\n );\n } else if (this.props.drumPadGrid === 'volumeSelectionMenu') {\n return(\n
\n { this.props.selectionMenu === 'pads' && makeSelectionMenu(padsArray) }\n { this.props.selectionMenu === 'volumeSelectionMenuItems' && makeSelectionMenu(volumeSelectionMenuItems) }\n
\n );\n } else if (this.props.drumPadGrid === 'metronomeSelectionMenu') {\n return(\n
\n { this.props.selectionMenu === 'pads' && makeSelectionMenu(padsArray) }\n { this.props.selectionMenu === 'metronomeSelectionMenuItems' && makeSelectionMenu((() => {\n const tempos = Object.keys(metronomeTempos).map(item => {\n const keyItems = item.split(' ');\n if (keyItems.length === 3) {\n return keyItems[0] + ' ' + keyItems[1] + ': ' + metronomeTempos[item].slice(0,-4);\n } else {\n return keyItems[0] + ': ' + metronomeTempos[item].slice(0,-4);\n }\n });\n tempos.unshift('Metronome Off');\n return tempos;\n })()) }\n
\n );\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectionMenu);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport './DisplayMiddle.css';\nimport DrumPadGrid from \"./DrumPadGrid\";\nimport SelectionLeft from \"./SelectionLeft\";\nimport SelectionRight from \"./SelectionRight\";\nimport VolumeContainer from \"./VolumeContainer\";\nimport SelectionMenu from \"./SelectionMenu\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass DisplayMiddle extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showVolumeToolTip: false,\n };\n this.handleMouseOverOut = this.handleMouseOverOut.bind(this);\n };\n\n handleMouseOverOut(willShow) {\n if (willShow !== this.state.showVolumeToolTip) {\n this.setState({\n showVolumeToolTip: willShow,\n });\n }\n };\n\n render() {\n const selectionMenus = ['selectionMenu','volumeSelectionMenu','metronomeSelectionMenu'];\n return (\n
\n
\n
\n
\n
\n { this.props.drumPadGrid === 'drumPadGrid' && }\n { selectionMenus.includes(this.props.drumPadGrid) && }\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
this.handleMouseOverOut(true)} onMouseLeave={(event) => this.handleMouseOverOut(false)}>\n { \n this.state.showVolumeToolTip &&
\n
{this.props.volume}\n
\n
\n }\n \n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default connect(mapStateToProps)(DisplayMiddle);\n","import React from 'react';\n\nimport './DrumMachine.css';\nimport DisplayMiddle from \"./DisplayMiddle\";\n\nconst DrumMachine = () => {\n return (\n
\n
\n
\n
\n \n
\n
\n
\n
\n );\n}\n\nexport default DrumMachine;\n","import React from 'react';\n\nimport './App.css';\nimport DrumMachine from \"./DrumMachine\";\n\nclass App extends React.Component {\n render() {\n return (\n
\n \n \"Fork\n \n \n
\n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from \"react-redux\";\nimport store from \"./store\";\n\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}