react实现一个音序器Sequencer代码
代码语言:html
所属分类:其他
代码描述:react实现一个音序器Sequencer代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { background: #1e1e21; } .flex { display: flex; flex-direction: row; } .Sequencer { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -55%); padding: 1em; background: #28282c; border-radius: 4px; } .notes { list-style-type: none; position: absolute; left: -100px; top: 75px; text-align: right; color: white; line-height: 60px; opacity: 0.3; } .buttons { display: flex; padding: 0.35em 0 0.5em; } .buttons button, .buttons select { margin: 5px; outline: none; background: #36363c; color: white; padding: 1em; font-size: 12px; letter-spacing: 1px; border-radius: 4px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2); cursor: pointer; border: 2px solid transparent; } .buttons button.active, .buttons select.active { color: #0087ff; border: 2px solid #0087ff; } .buttons .select-wrapper { position: relative; } .buttons .select-wrapper span { position: absolute; color: white; top: -10px; left: 8px; font-size: 9px; letter-spacing: 1px; opacity: 0.3; } .buttons select { position: relative; height: 42px; min-width: 50px; } .pads { box-sizing: border-radius; display: flex; flex-direction: column-reverse; flex-wrap: wrap; } .pads .pad { background: #36363c; border-radius: 4px; cursor: pointer; width: calc(600px / 10 - 10px); height: calc(600px / 10 - 10px); margin: 5px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3); transition: background 100ms ease; } .pads .pad:hover { background: #42424a; } .pads .pad.active { background: #42424a; } .pads .pad.on { background: #0087ff !important; box-shadow: 0 0 12px 0 rgba(0, 135, 255, 0.8); } @-webkit-keyframes colorize { from { background: red; } to { background: #55ff00; } } @keyframes colorize { from { background: red; } to { background: #55ff00; } } </style> </head> <body translate="no"> <div id='sequencer'></div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/babel.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/react.15.4.2.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/react-dom.15.4.2.js"></script> <script type="text/babel"> const NOTES = { "C0": 16.35,"C#0": 17.32,"D0": 18.35,"D#0": 19.45,"E0": 20.6,"F0": 21.83,"F#0": 23.12,"G0": 24.5,"G#0": 25.96,"A0": 27.5,"A#0": 29.14,"B0": 30.87,"C1": 32.7,"C#1": 34.65,"D1": 36.71,"D#1": 38.89,"E1": 41.2,"F1": 43.65,"F#1": 46.25,"G1": 49,"G#1": 51.91,"A1": 55,"A#1": 58.27,"B1": 61.74,"C2": 65.41,"C#2": 69.3,"D2": 73.42,"D#2": 77.78,"E2": 82.41,"F2": 87.31,"F#2": 92.5,"G2": 98,"G#2": 103.83,"A2": 110,"A#2": 116.54,"B2": 123.47,"C3": 130.81,"C#3": 138.59,"D3": 146.83,"D#3": 155.56,"E3": 164.81,"F3": 174.61,"F#3": 185,"G3": 196,"G#3": 207.65,"A3": 220,"A#3": 233.08,"B3": 246.94,"C4": 261.63,"C#4": 277.18,"D4": 293.66,"D#4": 311.13,"E4": 329.63,"F4": 349.23,"F#4": 369.99,"G4": 392,"G#4": 415.3,"A4": 440,"A#4": 466.16,"B4": 493.88,"C5": 523.25,"C#5": 554.37,"D5": 587.33,"D#5": 622.25,"E5": 659.26,"F5": 698.46,"F#5": 739.99,"G5": 783.99,"G#5": 830.61,"A5": 880,"A#5": 932.33,"B5": 987.77,"C6": 1046.5,"C#6": 1108.73,"D6": 1174.66,"D#6": 1244.51,"E6": 1318.51,"F6": 1396.91,"F#6": 1479.98,"G6": 1567.98,"G#6": 1661.22,"A6": 1760,"A#6": 1864.66,"B6": 1975.53,"C7": 2093,"C#7": 2217.46,"D7": 2349.32,"D#7": 2489.02,"E7": 2637.02,"F7": 2793.83,"F#7": 2959.96,"G7": 3135.96,"G#7": 3322.44,"A7": 3520,"A#7": 3729.31,"B7": 3951.07,"C8": 4186.01,"C#8": 4434.92,"D8": 4698.64,"D#8": 4978.03}; var getNotesForOctave = function(octave) { return Object.keys(NOTES).reduce((obj, note) => { if (note.split('').pop() == +octave) obj[note] = NOTES[note]; return obj; }, {}); }; class Synth { constructor() { this.ctx = new (window.AudioContext || window.webkitAudioContext)(); } playNotes(notes = [], wave = 'sine') { // for(let i = 0; i < notes.length; i++) { var vco = this.ctx.createOscillator(); vco.type = wave; vco.frequency.value = n.........完整代码请登录后点击上方下载按钮下载查看
网友评论0