【发布时间】:2019-10-21 17:55:18
【问题描述】:
我正在构建一个由 Tone.js 提供支持的小型 Web 应用程序来训练自己弹奏钢琴键(可能还有其他一些练习)。到目前为止,您可以选择根音和音阶类型,然后单击播放,它将循环播放该音阶。还有一个键盘/合成器是我从其中一个tone.js 示例中提取的,您可以单击钢琴键,使用您的 querty 键盘上的键,或者选择一个连接到您的计算机的 midi 键盘来使用和播放声音。
我要做的下一步是创建一个条,当演奏音阶中的音符时亮绿色,演奏音阶外的音符时亮红色,并且可能记录一行中有多少音符播放正确或类似的东西。我遇到的问题是似乎没有办法直接从tone.js 获取用户正在播放的音符。我可以将键盘上的按键转换为音符,仅此而已。我无法捕捉到有人点击键盘的任何事件。我也无法从tone.js 获取选定的midi 输入设备,以便能够解释与tone.js 合成器一起演奏的钢琴键。
我尝试使用 jquery 附加事件侦听器,因为虚拟钢琴键只是按钮,但它们在 shadow DOM 中无法访问。
有没有人使用过tone.js 和tonejs/ui 并且知道这是否可行,或者我是否必须以某种方式在code.js 之外编写代码?任何解决方法的想法?
编辑:我已经完成了我的 v1.0.0。我能够在 Tone.js 旁边收听 midi 设备,并将它们转换为正在播放的音符。这是一个不错的解决方案,但正如我所提到的,最好直接从 Tone.js 合成器中播放音符以简化代码,允许训练栏处理用鼠标单击的音符,等等正在播放的音符可以在教练栏上显示其八度音阶数。
【问题讨论】:
-
如果不向我们展示您遇到问题的相关代码,将很难为您提供帮助。
-
您应该只将代码 sn-p(最好是工作代码)中的相关代码添加到您的问题中。人们不太可能在您的 github 存储库中进行代码潜水来帮助您。
-
我不确定要包含哪些代码 sn-p,因为我的问题围绕如何在框架 (tone.js) 中做某事而不是“为什么我的代码不起作用”。你可以用谷歌tone.js找到他们的API,如果你去我的github.com链接,你会看到现在有一个自述文件,里面有一个可以通过github页面查看它的链接,所以你可以检查页面来查看发生了什么事。
标签: javascript shadow-dom web-midi tone.js