├── .eslintignore ├── .gitignore ├── .babelrc ├── assets ├── images │ └── dark-wood.png ├── js │ ├── samples.js │ ├── position.js │ ├── demo_track.js │ ├── null_track.js │ └── patterns.js └── style │ └── style.css ├── dist ├── assets │ └── samples │ │ ├── Clap.wav │ │ ├── Clave.wav │ │ ├── Kick.wav │ │ ├── Snare.wav │ │ ├── HighTom.wav │ │ ├── LowTom.wav │ │ ├── OpenHat.wav │ │ └── ClosedHat.wav ├── e3577ddd019c610cedbeb38ebff4e2ef.png ├── index.html ├── manifest.9b0443ed5b4bcfffb491.js ├── style.css └── bundle.be9505c48da7088d1b85.js ├── src ├── components │ ├── assets │ │ └── samples │ │ │ ├── Clap.wav │ │ │ ├── Clave.wav │ │ │ ├── Kick.wav │ │ │ ├── Snare.wav │ │ │ ├── HighTom.wav │ │ │ ├── LowTom.wav │ │ │ ├── OpenHat.wav │ │ │ └── ClosedHat.wav │ ├── screws.js │ ├── progress_bar.js │ ├── channel_row.js │ ├── playbar.js │ ├── toggle.js │ ├── knob.js │ └── drum_machine.js └── index.js ├── .eslintrc.json ├── index.html ├── README.md ├── package.json └── webpack.config.js /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .DS_STORE -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-env", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /assets/images/dark-wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/assets/images/dark-wood.png -------------------------------------------------------------------------------- /dist/assets/samples/Clap.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/Clap.wav -------------------------------------------------------------------------------- /dist/assets/samples/Clave.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/Clave.wav -------------------------------------------------------------------------------- /dist/assets/samples/Kick.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/Kick.wav -------------------------------------------------------------------------------- /dist/assets/samples/Snare.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/Snare.wav -------------------------------------------------------------------------------- /dist/assets/samples/HighTom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/HighTom.wav -------------------------------------------------------------------------------- /dist/assets/samples/LowTom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/LowTom.wav -------------------------------------------------------------------------------- /dist/assets/samples/OpenHat.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/OpenHat.wav -------------------------------------------------------------------------------- /dist/assets/samples/ClosedHat.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/assets/samples/ClosedHat.wav -------------------------------------------------------------------------------- /src/components/assets/samples/Clap.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/Clap.wav -------------------------------------------------------------------------------- /src/components/assets/samples/Clave.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/Clave.wav -------------------------------------------------------------------------------- /src/components/assets/samples/Kick.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/Kick.wav -------------------------------------------------------------------------------- /src/components/assets/samples/Snare.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/Snare.wav -------------------------------------------------------------------------------- /dist/e3577ddd019c610cedbeb38ebff4e2ef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/dist/e3577ddd019c610cedbeb38ebff4e2ef.png -------------------------------------------------------------------------------- /src/components/assets/samples/HighTom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/HighTom.wav -------------------------------------------------------------------------------- /src/components/assets/samples/LowTom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/LowTom.wav -------------------------------------------------------------------------------- /src/components/assets/samples/OpenHat.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/OpenHat.wav -------------------------------------------------------------------------------- /src/components/assets/samples/ClosedHat.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirie/StepSequencer/HEAD/src/components/assets/samples/ClosedHat.wav -------------------------------------------------------------------------------- /src/components/screws.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default () =>
; 4 | -------------------------------------------------------------------------------- /assets/js/samples.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | "../assets/samples/BD.WAV", 3 | "../assets/samples/SD.WAV", 4 | "../assets/samples/CH.WAV", 5 | "../assets/samples/CP.WAV", 6 | "../assets/samples/CB.WAV", 7 | "../assets/samples/CL.wav", 8 | "../assets/samples/HC.wav", 9 | "../assets/samples/LC.wav" 10 | ]; 11 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import DrumMachine from './components/drum_machine'; 4 | import '../assets/style/style.css'; 5 | 6 | const App = () => { 7 | return ( 8 | 9 | ); 10 | }; 11 | 12 | ReactDOM.render(, document.getElementById('root')); -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "airbnb", 3 | "installedESLint": true, 4 | "plugins": [ 5 | "react", 6 | "jsx-a11y", 7 | "import" 8 | ], 9 | "rules": { 10 | "brace-style": [2, "stroustrup", {"allowSingleLine": false}], 11 | "comma-dangle": [2, "never"], 12 | "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }] 13 | } 14 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | SEQUENCE 10 | 11 | 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/components/progress_bar.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const progressBar = (props) => { 4 | const temp = Array(16).fill(1); 5 | const temp2 = temp.map((v, i) => { 6 | if (i === props.prog) { 7 | return (
); 11 | } 12 | return (
); 13 | }); 14 | return ( 15 |
{temp2}
16 | ); 17 | }; 18 | 19 | progressBar.propTypes = { 20 | prog: PropTypes.number.isRequired 21 | }; 22 | 23 | 24 | export default progressBar; 25 | -------------------------------------------------------------------------------- /assets/js/position.js: -------------------------------------------------------------------------------- 1 | export default { 2 | '0:0:0': 0, 3 | '0:0:1': 1, 4 | '0:0:2': 2, 5 | '0:0:3': 3, 6 | '0:1:0': 4, 7 | '0:1:1': 5, 8 | '0:1:2': 6, 9 | '0:1:3': 7, 10 | '0:2:0': 8, 11 | '0:2:1': 9, 12 | '0:2:2': 10, 13 | '0:2:3': 11, 14 | '0:3:0': 12, 15 | '0:3:1': 13, 16 | '0:3:2': 14, 17 | '0:3:3': 15, 18 | '1:0:0': 0, 19 | '1:0:1': 1, 20 | '1:0:2': 2, 21 | '1:0:3': 3, 22 | '1:1:0': 4, 23 | '1:1:1': 5, 24 | '1:1:2': 6, 25 | '1:1:3': 7, 26 | '1:2:0': 8, 27 | '1:2:1': 9, 28 | '1:2:2': 10, 29 | '1:2:3': 11, 30 | '1:3:0': 12, 31 | '1:3:1': 13, 32 | '1:3:2': 14, 33 | '1:3:3': 15 34 | }; 35 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | SEQUENCE 10 | 11 | 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/components/channel_row.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const channelRow = (props) => { 4 | function makeRow(v, i) { 5 | const channelClasses = v ? 'lighton' : 'lightoff'; 6 | return ( 7 |
14 | ); 15 | } 16 | 17 | return ( 18 |
19 | {props.channel.map(makeRow, this)} 20 |
21 | ); 22 | }; 23 | 24 | channelRow.propTypes = { 25 | channelNum: PropTypes.number.isRequired, 26 | bside: PropTypes.bool.isRequired, 27 | updateSeq: PropTypes.func.isRequired, 28 | channel: PropTypes.array.isRequired 29 | }; 30 | 31 | export default channelRow; 32 | -------------------------------------------------------------------------------- /src/components/playbar.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | import Toggle from './toggle'; 3 | 4 | const playBar = (props) => { 5 | return ( 6 |
7 |
SEQUENCE
8 | 9 |
10 | 11 |
12 |
13 |