Как использовать audioDeviceIOCallback, audioDeviceAboutToStart и audioDeviceStopped в простой программе записи звука - PullRequest
0 голосов
/ 03 декабря 2018

Используя Juce, я попытался создать простой аудио-рекордер из демонстрационного ролика .Я извлек 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учебник по полифоническому синтезатору .

Но когда я попробовал это, я получил ошибку перезаписи в главном классе.

Итак, вот моя проблема, как использовать AudioIODeviceCallback,audioDeviceAboutToStart и audioDeviceStopped, которые определены в классе AudioRecordingDemo в моем проекте?

Исходный код можно найти здесь .

1 Ответ

0 голосов
/ 31 декабря 2018

Я исправил свою проблему, добавив audioDeviceIOCallback в свой класс MainComponent:

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

...