我使用Juce,尝试从demo runner创建一个简单的录音机。 我提取了AudioRecordingDemo来创建一个基于简单音频项目的录音机。
当我单击“开始录制”按钮时,sampleRate仍具有默认值:
void startRecording(const File& file)
{
stop();
if (sampleRate > 0)
{
// Create an OutputStream to write to our destination file...
sampleRate = 0.0
在AudioRecordingDemo中,audioDeviceAboutToStart增加采样率。但是我的主要组件中没有任何AudioIODevice。
void audioDeviceAboutToStart(AudioIODevice* device) override
{
sampleRate = device->getCurrentSampleRate();
}
设置输入和输出的AudioIODeviceCallback也从未在我的代码中调用。我试图在MainComponent类中使用它,但没有成功。
我还试图使MainComponent类继承自AudioIODeviceCallback:
class MainComponent : public Component,
private AudioIODeviceCallback,
private MidiInputCallback
{
public:
//...
我在Build a multi-polyphonic synthesiser tutorial中找到了这种方法。
但是当我尝试这样做时,我在主类中遇到了覆盖错误。
所以这是我的问题,如何使用我项目中AudioRecordingDemo类中定义的AudioIODeviceCallback,audioDeviceAboutToStart和audioDeviceStopped?
您可以找到源代码here。
答案 0 :(得分:0)
我通过在我的MainComponent类中添加audioDeviceIOCallback来解决我的问题:
void audioDeviceIOCallback (const float** /*inputChannelData*/, int /*numInputChannels*/,
float** outputChannelData, int numOutputChannels,
int numSamples) override
{
// make buffer
AudioBuffer<float> buffer (outputChannelData, numOutputChannels, numSamples);
// clear it to silence
buffer.clear();
}
最新的源代码:SimpleAudioRecorder