Аудиорекордер на матлаб для Macintosh - PullRequest
2 голосов
/ 25 августа 2011

Большинство функций для аудиомагнитофона поддерживаются только для версии Windows.У меня есть массив с 4 микрофонами, и я хочу использовать каждый отдельно.Но я не могу указать deviceID, так как он не поддерживается в Mac.Он просто использует устройство по умолчанию.Отображается следующее предупреждение:

Warning: DeviceID parameter can only be set on Windows

Есть ли возможность сделать это?

1 Ответ

2 голосов
/ 26 августа 2011

Я работаю над аналогичной проблемой: хочу записать с 2-х микрофонов.

Прежде всего: в Mac OS X версии Matlab более ранние, чем r2011a, не поддерживают несколько устройств ввода.Таким образом, вы должны обновить до r2011a.Я обнаружил в примечаниях к выпуску Matlab r2011a (http://www.mathworks.com/help/pdf_doc/matlab/rn.pdf стр. 18)

Устройство поддержки аудиоплеера и аудиомагнитофона Выбор на всех платформах аудиоплеер и аудиорекордер теперь позволяют указывать входили устройство вывода на всех поддерживаемых платформах.В предыдущих выпусках вы могли указывать устройства только в системах Microsoft Windows.

Я сейчас тестирую его, но, похоже, он не работает должным образом (встроенный вход не может обрабатывать 44100 Гц, 16 бит,1 канал записи): - /

Обновитесь до версии r2011a, и мы попытаемся решить эту проблему вместе.

* Upadte ** Вот что я сделал: Список всех аудиоустройств:

>> audiodevinfo

ans = 

     input: [1x2 struct]
    output: [1x1 struct]

Список каждого устройства ввода:

>> audiodevinfo(1,0)

ans =

Built-in Microphone (Core Audio)

>> audiodevinfo(1,1)

ans =

Built-in Input (Core Audio)

Проверка нужного устройства (для меня это был штекер с микрофоном):

>> audiodevinfo(1,1, 44100, 16, 1)

ans =

     1

функция вернула 1, поэтому устройство МОЖЕТ записать аудиосигнал на частоте 44100 Гц, 16 бит, 1 канал.

Создать объект аудиорекордера, подключенный к требуемому устройству:

r = аудиорекордер (44100,16,1,1);

Запись звука с использованием функции блокировка записи (мне не нужно записывать асинхроннои предпочитаю блокировку записи вместо функции записи, потому что я вижу, когда закончится процесс записи).

Сыграйте.

play (r);

У меня все работает нормально:)

...