- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Tone.js 的新手,并且对 Gain 对象有疑问。我在 html 中设置了一个音量 slider ,如下所示:
<button class="play">Play</button>
<button class="stop">Stop</button>
<div>
Vol:
<input type="range" class="vol-slider slider" min="0" max="10" value="4">
<div class="vol-text">4</div>
</div>
单击“播放”时,我创建了一个 Tone.PolySynth 和一个 Tone.Gain,然后使用 .chain() 函数将增益连接到 PolySynth。增益值取自音量 slider 。使用 Tone.Part 函数(下面的 js 代码)播放音符。
$('.stop').on('click', function(e){
Tone.Transport.stop();
}) // .stop
$(".vol-slider").on('input', function(e){
let val = $(this).val()
$(".vol-text").text(val)
}) // .vol-slider
$('.play').on('click', function(e){
console.clear()
testnotes = [ {time: "0:0:0", note: "D3", duration: "8n"},
{time: "0:0:0", note: "D3", duration: "16n"},
{time: "0:0:1", note: "E3", duration: "16n"},
{time: "0:0:2", note: "F3", duration: "16n"},
{time: "0:0:3", note: "G3", duration: "16n"},
{time: "0:1:0", note: "A3", duration: "16n"},
{time: "0:1:1", note: "B3", duration: "16n"},
{time: "0:1:2", note: "C4", duration: "16n"},
{time: "0:1:3", note: "D4", duration: "16n"},
{time: "0:2:0", note: "E4", duration: "16n"},
{time: "0:2:1", note: "F4", duration: "8n"},
{time: "0:2:2", note: "G4", duration: "8n"},
{time: "0:2:3", note: "A4", duration: "8n"},
{time: "0:3:0", note: "B4", duration: "8n"},
{time: "0:3:1", note: "C5", duration: "4n"},
]
Tone.Transport.stop()
const synth = new Tone.PolySynth( )
let vol = parseFloat( $(".vol-slider").val() ) / 10
console.log("vol: " + vol)
const gain = new Tone.Gain(vol).toDestination()
synth.chain( gain);
const part = new Tone.Part(function(time, note) {
synth.triggerAttackRelease(note.note, note.duration, time);
}, testnotes).start(0);
Tone.Transport.start()
}) // .play
最佳答案
每次单击“播放”时,您似乎都在创建一个新的增益节点。您只需要创建一次这些 Tone 对象。
此外,$(".vol-slider").on('input'
代码不会修改增益节点本身。您可以使用 gain.rampTo()
在 Tone 发挥作用时修改增益。
这应该有效:
$(".stop").on("click", function (e) {
Tone.Transport.stop();
}); // .stop
// Create Tone objects here.
const synth = new Tone.PolySynth();
let vol = 1;
const gain = new Tone.Gain(vol).toDestination();
synth.chain(gain);
let testnotes = [
{ time: "0:0:0", note: "D3", duration: "8n" },
{ time: "0:0:0", note: "D3", duration: "16n" },
{ time: "0:0:1", note: "E3", duration: "16n" },
{ time: "0:0:2", note: "F3", duration: "16n" },
{ time: "0:0:3", note: "G3", duration: "16n" },
{ time: "0:1:0", note: "A3", duration: "16n" },
{ time: "0:1:1", note: "B3", duration: "16n" },
{ time: "0:1:2", note: "C4", duration: "16n" },
{ time: "0:1:3", note: "D4", duration: "16n" },
{ time: "0:2:0", note: "E4", duration: "16n" },
{ time: "0:2:1", note: "F4", duration: "8n" },
{ time: "0:2:2", note: "G4", duration: "8n" },
{ time: "0:2:3", note: "A4", duration: "8n" },
{ time: "0:3:0", note: "B4", duration: "8n" },
{ time: "0:3:1", note: "C5", duration: "4n" }
];
const part = new Tone.Part(function (time, note) {
synth.triggerAttackRelease(note.note, note.duration, time);
}, testnotes);
$(".play").on("click", function (e) {
console.clear();
Tone.start();
Tone.Transport.stop();
part.start(0);
Tone.Transport.start();
}); // .play
$(".vol-slider").on("input", function (e) {
let val = $(this).val(); // This is a string at this point ...
let valFloat = parseFloat(val);
$(".vol-text").text(val);
gain.gain.rampTo(valFloat, 0.1);
}); // .vol-slider
这是一个将所有内容放在一起的代码笔:
关于javascript - 附加到合成器的增益的 Tone.js 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67827373/
我试过了 alBufferf (myChannelId, AL_MAX_GAIN (and AL_GAIN), volumeValue); 并收到错误0xA002。 最佳答案 0xA002是Linux
我正在使用 Matlab 从 2 点灰度相机 (Flea2) 捕捉图像,我想更改相机的一些参数,例如自动曝光、增益和快门速度。到目前为止,我已经使用了这些命令: %Creating the two v
我正在尝试调整网络摄像头的亮度。我需要 3 张不同亮度设置的不同照片。我不想让它成为手动的,所以如果想在程序中包含设置。 下面是我正在使用的代码。使用方法 GetFrame() 可以从网络摄像头获取下
我想问一个我试图自己回答但无法想出任何解决方案的问题。 我想知道任何具有这些属性的算法(或者是否有可能至少证明一个算法是否存在) +-----------+ status_
我有一个OSX应用程序,该应用程序使用音频单元记录音频数据。可以将音频单元的输入设置为任何可用的输入源,包括内置输入。问题是,我从内置输入获得的音频经常被剪切,而在诸如Audacity(甚至Quick
我是一名优秀的程序员,十分优秀!