首先,这是我正在研究的实时应用程序:turbo_synth
我正在使用 VueJS 制作它,但是,我相信这个问题与 Vue 无关。
问题: 除了尝试弹奏某些音符组合(例如,尝试弹奏 Q、W 和 2 键)之外,一切都很好,而且很花哨。你会注意到最后一个音符没有被弹奏,甚至没有显示为按下,而您可以同时播放 Q、W、E、R 和 Y。所以它似乎没有限制,就像我之前想的那样?
代码:我正在使用 vue-keypress 来轻松处理全局的关键事件。
模板部分
<template>
<div id="app">
<h1>Basic oscillator test</h1>
<label for="waveType">Choose a wave type:</label>
<select
name="waveType"
id="waveType"
v-model="wave"
>
<option value="sine">sine</option>
<option value="square">square</option>
<option value="triangle">triangle</option>
<option value="sawtooth">sawtooth</option>
</select>
<hr>
<ul class="keyboard">
<li
v-for="note in testBoard"
:key="note.id"
:class="[note.class, getKeyByValue(testBoard, note).charAt(0), {'pressed': pressedNotes.includes(note.freq)}]"
@mousedown="playSound(note.freq, 1)"
>
<p>{{getKeyByValue(testBoard, note).replace('s', '#')}}</p>
<p>{{String.fromCharCode(note.keycode)}}</p>
</li>
</ul>
<Keypress
v-for="note in testBoard"
:key="note.id"
key-event="keydown"
:key-code="note.keycode"
@success="playSound(note.freq)"
/>
<Keypress
v-for="note in testBoard"
:key="note.id"
key-event="keyup"
:key-code="note.keycode"
@success="removeNote(note.freq)"
/>
</div>
</template>
脚本部分:
<script>
import { noteValues, testBoard } from './assets/notevalues.js';
export default { name: 'App',
data() {
return {
noteValues,
testBoard,
selectedNote: null,
wave: 'sine',
pressedNotes: [],
}
},
慕后森
相关分类