我已经构建了一个项目的独立应用程序版本,到目前为止只是一个VST/audiounit.我通过rtaudio提供音频支持.
我想使用rtmidi添加MIDI支持,但我不清楚如何同步音频和MIDI部分.
在VST/audiounit land中,我习惯于具有时间戳的MIDI事件,该时间戳指示从音频块的开始处的样本中的偏移.
rtmidi提供了自上次事件以来以秒为单位的增量时间,但我不确定如何抓住这些事件以及如何计算与音频线程中当前样本相关的时间.
插件主机如何做到这一点?
我可以理解事件在回放时的样本是如何准确的,但是在使用实时输入时它们是如何准确地采样的还不清楚.
rtaudio给了我一个回调函数.我将以低块大小运行(32个样本).我想我会将指向rtmidi实例的指针作为回调的userdata部分传递,然后调用midiin-> getMessage(&message); 在音频回调中,但我不确定这是否是线程敏感的.
非常感谢您给我的任何提示
我正在尝试制作一些适用于MSVC的SIMD代码与Xcode 6上的Clang一起编译.不幸的是,我得到一个错误,其中数组访问运算符已经在我无法修复的自定义向量类中重载.向量模板具有使用SIMD内在函数的长度为4和8的数组的特化,但是数组访问运算符返回对向量元素的引用(用于更新该元素)在clang上给出了一个错误"非const引用不能绑定到向量元素".
重载运算符:
#ifdef _MSC_VER
float operator[](int idx) const { return v.m256_f32[idx]; } // m256_f32 MSVC only
float& operator[](int idx) { return v.m256_f32[idx]; }
#else
float operator[](int idx) const { return v[idx]; }
float& operator[](int idx) { return v[idx]; }
#endif
Run Code Online (Sandbox Code Playgroud)
来自Clang的错误:
non-const reference cannot bind to vector element
float& operator[](int idx) { return v[idx]; }
^~~~~~
Run Code Online (Sandbox Code Playgroud) 我在Bash脚本中使用它来获取我运行脚本的路径.在OS X中双击.command文件是必要的.
#!/bin/bash
BASEDIR=$(dirname $0)
cd $BASEDIR
Run Code Online (Sandbox Code Playgroud)
问题是当路径有空格时它不起作用.你怎么能解决这个问题?
我试图得到一个500x520像素的Win32对话框,但在我的.rc文件中,这些设置让我的窗口比我预期的要大.
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 500, 520
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
Run Code Online (Sandbox Code Playgroud)
在某处有缩放因子吗?
我制作了一个 SwiftUI DocumentApp,它可以读取大型媒体文件,但不需要写入它们。在我的文档中,我只想存储文件的 URL,以便我可以使用例如 AVAudioFile 加载它。我无法弄清楚如何在不创建文件临时副本的情况下执行此操作,正如作者在此处所做的那样,因为无法从 fileWrapper 访问文件 URL
我尝试使用configuration.file.regularFileContents(数据)创建一个管道,但到目前为止我没有成功从该管道读取数据。
init(configuration: ReadConfiguration) throws {
let tempURL = makeTemporaryFileURL()
FileManager.default.createFile(atPath: tempURL.path, contents: configuration.file.regularFileContents, attributes: nil)
audioFileUrl = tempURL
}
Run Code Online (Sandbox Code Playgroud)