js+css实现支持Synthesizer调节浏览器可弹奏并输出声音的钢琴代码
代码语言:html
所属分类:多媒体
代码描述:js+css实现支持Synthesizer调节浏览器可弹奏并输出声音的钢琴代码,通过webkitAudioContext这个api来输出声音。
代码标签: js css 支持 Synthesizer 调节 浏览器 弹奏 输出 声音 钢琴 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @import url(https://fonts.googleapis.com/css?family=Roboto:400,100,300,300italic,400italic,500,500italic,700,700italic,900,900italic,100italic); * { -webkit-appearance: none; } body { margin: 0px; padding: 0px; background-color: #333; font-family: "Roboto", sans-serif; } h1 { font-size: 3em; line-height: 0.8em; font-weight: 100; } input:focus { outline: none; } .container { width: 100%; height: 100%; display: block; position: absolute; left: 0px; bottom: 0px; top: 0px; color: #fff; text-align: center; } .container .parts { text-align: left; padding: 20px; } .synth { width: 1010px; height: 450px; padding: 0px; margin: 0px; background-color: #ED5565; font-weight: 300; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; box-shadow: 6px 10px 3px -4px #2f090d; } .synth .touch-move-scroll-blocker { top: 0px; left: 0px; bottom: 0px; right: 0px; position: absolute; } .synth .modules { margin-left: 27px; margin-top: 40px; } .synth .modules .module { float: left; text-transform: uppercase; height: 100%; margin: auto; } .synth .modules .module .module-label { float: left; clear: both; width: 100%; font-weight: 600; color: #FFF; padding: 3px 0; text-align: center; font-size: 12px; } .synth .modules .module .slider { padding: 10px 30px 0 0; float: left; height: 100%; text-align: center; position: relative; } .synth .modules .module .slider .label { position: absolute; width: 100px; top: 200px; font-size: 10px; color: #fceef0; text-transform: uppercase; } .synth .modules .module .slider input[type="range"] { background-color: #af2331; -webkit-appearance: none; -webkit-transform: rotate(270deg); width: 180px; margin: 80px -100px 0px -40px; border-radius: 25px; } .synth .modules .module .slider input[type='range']::-webkit-slider-thumb { height: 20px; width: 50px; border: 1px solid #ddd; background-color: #ffeac8; } #piano-keys { width: 1000px; height: 180px; margin-left: 60px; margin-top: 275px; } #piano-keys .key { display: inline-block; width: 6%; height: 100%; float: left; position: relative; margin-right: 4px; background-color: #fff; -webkit-transition: background-color ease-out .25s; border-radius: 0px 0px 2px 2px; -moz-border-radius: 0px 0px 0px 2px; -webkit-border-radius: 0px 0px 10px 10px; } #piano-keys #sharp { background-color: #6f161f; height: 66.6%; width: 66.6%; margin-right: 50%; position: absolute; left: 66.6%; z-index: 100; -webkit-border-radius: 3px 3px 3px 3px; -webkit-border-radius: 0px 0px 10px 10px; } /*#piano-keys .key.held { background-color: $color4; height: 96%; }*/ #natural:hover { background-color: #de5967; height: 99%; } #piano-keys #sharp:hover { background-color: #9a1e2b; } input[type=range] { -webkit-appearance: none; background-color: LightGray; height: 10px; width: 200px; border-radius: 5px; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; background-color: gray; width: 50px; height: 20px; border-radius: 3px; } input:focus { outline: none; } </style> </head> <body> <div class="container"> <h1>Synth</h1> <div class="synth"> <div class="touch-move-scroll-blocker"></div> <div class="modules"> <div class="module osc"> <div class="slider waveform"> <span class="label">Osc</span> <input type="range" id="osc-shape" min="0" max="3" step="1" value="4" /> </div> </div> <div class="module lpf"> <div class="slider"> <span class="label">Freq</span> <input type="range" id="lpf-freq" min="0" max="1" step=".05" value=".7" /> </div> <div class="slider"> <span class="label">Resolution</span> <input type="range" id="lpf-res" min="0" max="1" step=".01" value=".4" /> </div> </div> <div class="module env"> <div class="slider"> <span class="label">Attack</span> <input type="range" id="env-attack" min="0.0" max="3.0" step=".01" value="0.2" /> </div> <div class="slider"> <span class="label">Decay</span> <input type="range" id="env-decay" min="0.0" max="3.0" step=".01" value="3.0" /> </div> <div class="slider"> <span class="label">Sustain</span> <input type="range" id="env-sustain" min="0.0" max="1.0" step=".01" value="1.0" /> </div> <div class="slider"> <span class="label">Release</span> <input type="range" id="env-release" min="0.0" max="3.0" step=".01" value="1.0" /> </div> <div class="slider"> <span class="label">Octave</span> <input type="range" id="osc-octave" min="0" max="6" step="1" value="3" /> </div> <div class="slider"> <span class="label">Glide</span> <input type="range" id="osc-portamento" min="0" max="1" step="0.1" value="1" /> </div> </div> </div> <div id="piano-keys"> <!--OCTAVE 1--> <!--<div class="octave1">--> <div class="key" id="natural" data-note="C" data-octaveSet="0"> <div class="key" id="sharp" data-note="C#" data-octaveSet="0"></div> </div> <div class="key" id="natural" data-note="D"> <div class="key" id="sharp" data-note="D#"></div> </div> <div class="key" id="natural" data-note="E"></div> <div class="key" id="natural" data-note="F"> <div class="key" id="sharp" data-note="F#"></div> </div> <div class="key" id="natural" data-note="G"> <div class="key" id="sharp" data-note="G#"></div> </div> <div class="key" id="natural" data-note="A"> <div class="key" id="sharp" data-note="A#"></div> </div> <div class="key" id="natural" data-note="B"></div> <!--</div>--> <!--OCTAVE 2--> <!--<div class="octave2">--> <div class="key" id="natural" data-note="Cb" data-octave="1"> <div class="key" id="sharp".........完整代码请登录后点击上方下载按钮下载查看
网友评论0