gpt4 book ai didi

javascript - Logic Pro X Midi FX Javascript - 使用 GetTimingInfo() 导致 CPU 达到 100%

转载 作者:行者123 更新时间:2023-11-28 08:05:21 25 4
gpt4 key购买 nike

我在 MainStage 3 中使用 Scripter MidiFX(与 LogicPro X 相同)通过 javascript 创建自定义琶音器,因为我需要更多控制,因此使用 GetTimingInfo() 获取 ProcessMIDI 内的当前节拍似乎是合乎逻辑的() 函数来触发 MIDI 音符,正如我在他们的示例中看到的那样。不幸的是,即使在我的 Core i7 MacBook Pro 上,这也会影响 CPU,而我在实际展示中使用的是配备 Core 2 Duo 处理器的 MacMini。

我能够编写自己的代码来使用 new Date() 计算当前节拍,然后仅使用 GetTimingInfo() 在按下新音符时获取当前节奏,但即使这样也无法使 CPU 保持在原位我希望是这样。

当我不包含“NeedsTimingInfo=true”而只是对节奏进行硬编码时,一切都很好,但这是很多额外的代码,使用内置函数更有意义。

这是一个导致此问题的简单音序器示例...我做错了什么吗?即使我使用计数器仅在每 16 次调用时运行 ProcessMIDI(),也会发生这种情况!

NeedsTimingInfo = true;

var startBeat = -1;
var startPitch = 0;
var lastBeat = -1;
var currentStep = 0;

// melody test
var steps = [
0, 0, 0, 0, 0, 0, 0, 2,
0, 0, 0, 0, 0, 0, 2, 5
];

function HandleMIDI(e) {
if (e instanceof NoteOn) {
if (startBeat > 0) return;

currentStep = 0;
startPitch = e.pitch;
var info = GetTimingInfo();
lastBeat = startBeat = info.blockStartBeat;
doNote(e.pitch);
}
else if (e instanceof NoteOff) {
if (e.pitch == startPitch) {
startBeat = -1;
}
}
else {
e.send();
}
}

function doNote(pitch) {
var adjustment = 0;
if (currentStep < steps.length) {
adjustment = steps[currentStep];
}
var p = pitch + adjustment;

var on = new NoteOn;
on.pitch = p;
on.send();
var off = new NoteOff;
off.pitch = p;
off.sendAfterBeats(0.9);
}

function ProcessMIDI() {
var info = GetTimingInfo();
if (!info.playing) return;
if (startBeat < 0) return;
var beat = info.blockStartBeat;
if (beat - lastBeat >= 1) {
currentStep++;
doNote(startPitch);
lastBeat = beat;
}
}

最佳答案

您在“首选项”>“音频”>“高级设置”中设置的 I/O 缓冲区大小是多少?缓冲区大小越小,需要的 CPU 就越多。我假设由于您使用 MainStage 进行现场使用,因此您有一个非常低的设置来最大限度地减少延迟。

我尝试使用缓冲区大小 16 运行您的代码,但 MS 出现卡顿并耗尽了 CPU 资源。 64 处理得更好(CPU 指标飙升,但玩起来没有任何问题)。在 2009 年 MacBook Pro 3.06 Core 2 Duo 上进行测试。

为了让 Scripter 顺利运行,您可能需要忍受稍长的延迟。你的代码本身是可靠的。

关于javascript - Logic Pro X Midi FX Javascript - 使用 GetTimingInfo() 导致 CPU 达到 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com