Error penumerator getdefaultaudioendpoint

Fl studio asio error 2147023728 Данная статья является частью цикла статей «Fl Studio» FL Studio включает в себя установку стороннего ASIO драйвера ASIO4ALL. Есть два преимущества: Скорость: ASIO драйвера (в целом) позволяют уменьшить нагрузку на процессор и уменьшить значение буфера, больше чем стандартный драйвер Windows («первичный звуковой драйвер», WDM Driver). Если ваш аудио интерфейс […]

Содержание

  1. Fl studio asio error 2147023728
  2. Использование ASIO4ALL, расширенные настройки [ править ]
  3. Зависает FL Studio, появляется треск! ASIO4ALL и его настройка.
  4. Где скачать ASIO4ALL бесплатно русскую версию.
  5. Что такое ASIO4ALL.
  6. Настройка ASIO4ALL.
  7. 2 Answers
  8. Fl studio asio error penumerator
  9. Fl studio asio error penumerator
  10. Fl studio asio error penumerator
  11. Fl studio asio error penumerator

Fl studio asio error 2147023728

Данная статья является частью цикла статей «Fl Studio»

FL Studio включает в себя установку стороннего ASIO драйвера ASIO4ALL. Есть два преимущества:

  • Скорость: ASIO драйвера (в целом) позволяют уменьшить нагрузку на процессор и уменьшить значение буфера, больше чем стандартный драйвер Windows («первичный звуковой драйвер», WDM Driver). Если ваш аудио интерфейс имеет собственный ASIO драйвер, то мы рекомендуем вам использовать именно его.
  • Несколько звуковых устройств: ASIO4ALL уникальный, вы можете выбрать входы и выходы от отдельных звуковых карт/аудио-устройств, это не возможно со стандартными ASIO драйверами. Эта функция позволяет использовать для микрофона USB-вход и в то же время выход вашей обычной звуковой карты (см. пункт 7 ниже).

ASIO4ALL это универсальный ASIO драйвер, который работает с большинством звуковых карт, ваш опыт может быть другим, в том числе длительные периоды молчания и поцарапанная голова. Если ASIO4ALL не производит никакого звука, мы рекомендуем вам пройти через все шаги устранения неполадок (см. ниже).

Использование ASIO4ALL, расширенные настройки [ править ]

В этом разделе объясняется, как использовать настройки ASIO4ALL.

  1. Нажмите клавишу F10 на клавиатуре ПК и выберите Audio settings, нажав на значок динамика. Кроме этого можете выбрать Audio settings в меню Options.
  2. Выберите ASIO4ALL v2, как показано ниже.

Зависает FL Studio, появляется треск! ASIO4ALL и его настройка.

Если ты начинающий пользователь FL Studio и у тебя не с того, не с сего появился раздражающий треск при воспроизведении в проекте, зависает и тормозит FL Studio и написание музыки уже точно не приносит наслаждения, которого ты ожидал… Вероятнее всего ты еще не знаешь, что такое звуковой драйвер ASIO4ALL, который в принципе и есть тот спаситель, что избавит тебя от этого злостного треска и неадекватной работы секвенсора, пришло время узнать об этом универсальном оптимизаторе звуковых процессов, так как это, наверное, самая важная часть в оптимизации и настройке твоего секвенсора FL Studio.

Где скачать ASIO4ALL бесплатно русскую версию.

Если ты еще не скачал или как раз ищешь, где скачать бесплатно последнюю версию Asio4all для fl studio– то вот тебе прямая ссылка с официального сайта на последнюю русскую версию этого драйвера – СКАЧАТЬ ASIO4ALL Русская версия. И пока файл скачивается и ожидает тебя, я разъясню твои дальнейшие действия и погружу тебя немного в то для чего вообще нужны драйвера ASIO.

Что такое ASIO4ALL.

Драйверы Asio4All это программное обеспечение на твоем компьютере, которое оптимизирует звуковые потоки и направляет их самым коротким путем – от секвенсора (или другой программы работающий с аудио) сразу в звуковую карту, минуя твою операционную систему и все ее процессы. Понимаешь, наверное, от чего был треск в твоей FL Studio до этого и от чего FL Studio зависает, тормозит и трещит.

Сейчас, как ты понимаешь, самое время установить эту вещицу и навсегда забыть про трески и торможение секвенсора.

После установки, конечно же, стоит выбрать ASIO4ALL v2 драйвер в аудио настройках FL Studio, в строке Device:

Теперь все твои мучения должны закончиться, но должен предупредить тебя, что именно с драйверами ASIO4ALL будут конфликтовать все другие процессы операционной системы Windows (плееры аудио, видео, Skype, team speaker, интернет браузеры и все что может использовать звук) и поэтому будет работать либо FL Studio с выбранными драйверами ASIO либо процессы в операционной системе.

Сразу отмечу, что начиная в FL Studio 12, Image-Line интегрировала совместимые c FL Studio драйверы ASIO, которые уже есть в твоем секвенсоре (если ты не убрал галочку при установке секвенсора) называются они FL Studio ASIO и они уже здорово оптимизируют звуковые процессы и, конечно, не конфликтуют с процессами операционной системы, но даже с ними, иногда, есть смысл ставить ASIO4ALL, так как задержка в звуке, небольшая, но все же остается, при выбранных драйверах FL Studio ASIO.

Если у тебя есть синтезатор, MIDI клавиатура, Drum Pad или какое-то другое MIDI устройство, с помощью которого ты воспроизводишь инструменты или управляешь параметрами в секвенсоре (о подключении и оптимизации работы которых, ты можешь узнать все ЗДЕСЬ) – то драйвера ASIO так же оптимизируют работы этих устройств и ускоряют работу их команд. Иными словами уменьшают задержку между нажатием на клавишу MIDI клавиатуры и результатом этого нажатия в FL Studio – звуком.

Настройка ASIO4ALL.

И после выбора драйвера ASIO4ALL щелкни кнопку Show ASIO panel и приступим к настройке необходимых тебе параметров работы драйверов ASIO:

Тебе нужна как раз вот эта настройка ASIO Buffer Size. И это и есть настройка задержки. Но она выставляется для каждого устройства своя (это я к тем гражданам у кого возможно 2 или более аудио интерфейса, звуковой карты, но я думаю мало среди начинающих таких уникальных лиц). ASIO Buffer Size это размер буфера выставляемый ASIO для определенного аудио устройства (устройства перечислены в этом же окне, как WDM Device List) – в твоем случае какой-то звуковой карты. Чем больше размер, тем больше задержка между командой (воспроизведение внутри FL Studio или командой с MIDI устройства) и реакцией на эту команду. Ставим мы это значение в сэмплах, результат – длительность задержки можно увидеть в тексте под выбором устройства Deviceв настройках аудио, под заголовком Status:

Для меня, приемлемая задержки находиться в диапазон буфера 128 – 480 сэмплов. Этот параметр может меняться в зависимости от загруженности проекта, так как в уже весомых проектах (с массой плагинов, эффектов обработки и различных процессов) случается, что достигается предел буфера и появляется тот самый треск и «лаги» в проекте. Поэтому прибегать к увеличению задержки (компенсированию производительности за счет увеличения буфера) все таки придется, как быстро – зависит от твоего железа. Выставь то, что приемлемо для тебя сейчас и едем дальше. Все остальные настройки (те, что справа, а если их нет и там изображение клавиш Piano – то щелкни по гаечному ключу в правом нижнем углу) выставлять нужно только в крайних каких-то специфичных случаях:

Latency Compensation (In and Out) – Компенсация дополнительной задержки (если вдруг она по какой-то непонятной причине появилась) на определенном устройстве воспроизведения или записи (In и Out).

Hardsware Buffer (Работает не всегда!) – дополнительное форсированное улучшение связи со звуковым устройством. Разница мало когда будет заметна.

Регулятор Kernel Buffers– дополнительное улучшение производительности и увеличение за счет этого задержки звука.

Always Resample 44.1 kHz – 48. kHz– если у тебя встроенная звуковая карта в материнской плате или очень бюджетная внутренняя – то стоит выставить этот параметр, он разрешает программному обеспечению ASIO производить конвертацию частот дискретизации, так как некоторые аудио устройства это делают гораздо хуже.

Force WDM Driver to 16 bit– если активировать эту опцию, то она будет решать ошибки тех карт которые не поддерживают размер битности свыше 20 bit.

Вот тебе полная инструкция и пояснение что такое ASIO для чего нужны эти драйвера и как с ними работать и настраивать.

Надеюсь, что статья помогла, удачи в твоем творчестве!

2 Answers

  • Login to reply the answers Post

Correct the issue as follows:

1. Dismiss the error by selecting ‘OK’ or closing the prompt.

2. From FL Studio navigate to ‘Options > Audio Settings’.

3. Ensure that FL Studio ASIO is selected as your Audio device.

4. Select the ‘Show ASIO Panel’ button to launch the FL Studio ASIO Control Panel.

5. Change the selected ‘Output device’ to an available output audio device on your computer.

Источник

Fl studio asio error penumerator

Forum rules
POSTS HERE ARE PRIVATE. INSTRUCTIONS BELOW:

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them. If you don’t want your post made public let the team know.

We know it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

Источник

Fl studio asio error penumerator

Forum rules
POSTS HERE ARE PRIVATE. INSTRUCTIONS BELOW:

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them. If you don’t want your post made public let the team know.

We know it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

Источник

Fl studio asio error penumerator

Forum rules
POSTS HERE ARE PRIVATE. INSTRUCTIONS BELOW:

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them. If you don’t want your post made public let the team know.

We know it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

Источник

Fl studio asio error penumerator

Forum rules
POSTS HERE ARE PRIVATE. INSTRUCTIONS BELOW:

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them. If you don’t want your post made public let the team know.

We know it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

Источник

Содержание

  1. Использование ASIO4ALL, расширенные настройки [ править ]
  2. Зависает FL Studio, появляется треск! ASIO4ALL и его настройка.
  3. Где скачать ASIO4ALL бесплатно русскую версию.
  4. Что такое ASIO4ALL.
  5. Настройка ASIO4ALL.
  6. 2 Answers

Данная статья является частью цикла статей «Fl Studio»

FL Studio включает в себя установку стороннего ASIO драйвера ASIO4ALL. Есть два преимущества:

  • Скорость: ASIO драйвера (в целом) позволяют уменьшить нагрузку на процессор и уменьшить значение буфера, больше чем стандартный драйвер Windows («первичный звуковой драйвер», WDM Driver). Если ваш аудио интерфейс имеет собственный ASIO драйвер, то мы рекомендуем вам использовать именно его.
  • Несколько звуковых устройств: ASIO4ALL уникальный, вы можете выбрать входы и выходы от отдельных звуковых карт/аудио-устройств, это не возможно со стандартными ASIO драйверами. Эта функция позволяет использовать для микрофона USB-вход и в то же время выход вашей обычной звуковой карты (см. пункт 7 ниже).

ASIO4ALL это универсальный ASIO драйвер, который работает с большинством звуковых карт, ваш опыт может быть другим, в том числе длительные периоды молчания и поцарапанная голова. Если ASIO4ALL не производит никакого звука, мы рекомендуем вам пройти через все шаги устранения неполадок (см. ниже).

Использование ASIO4ALL, расширенные настройки [ править ]

В этом разделе объясняется, как использовать настройки ASIO4ALL.

  1. Нажмите клавишу F10 на клавиатуре ПК и выберите Audio settings, нажав на значок динамика. Кроме этого можете выбрать Audio settings в меню Options.
  2. Выберите ASIO4ALL v2, как показано ниже.

Зависает FL Studio, появляется треск! ASIO4ALL и его настройка.

Если ты начинающий пользователь FL Studio и у тебя не с того, не с сего появился раздражающий треск при воспроизведении в проекте, зависает и тормозит FL Studio и написание музыки уже точно не приносит наслаждения, которого ты ожидал… Вероятнее всего ты еще не знаешь, что такое звуковой драйвер ASIO4ALL, который в принципе и есть тот спаситель, что избавит тебя от этого злостного треска и неадекватной работы секвенсора, пришло время узнать об этом универсальном оптимизаторе звуковых процессов, так как это, наверное, самая важная часть в оптимизации и настройке твоего секвенсора FL Studio.

Где скачать ASIO4ALL бесплатно русскую версию.

Если ты еще не скачал или как раз ищешь, где скачать бесплатно последнюю версию Asio4all для fl studio– то вот тебе прямая ссылка с официального сайта на последнюю русскую версию этого драйвера – СКАЧАТЬ ASIO4ALL Русская версия. И пока файл скачивается и ожидает тебя, я разъясню твои дальнейшие действия и погружу тебя немного в то для чего вообще нужны драйвера ASIO.

Что такое ASIO4ALL.

Драйверы Asio4All это программное обеспечение на твоем компьютере, которое оптимизирует звуковые потоки и направляет их самым коротким путем – от секвенсора (или другой программы работающий с аудио) сразу в звуковую карту, минуя твою операционную систему и все ее процессы. Понимаешь, наверное, от чего был треск в твоей FL Studio до этого и от чего FL Studio зависает, тормозит и трещит.

Сейчас, как ты понимаешь, самое время установить эту вещицу и навсегда забыть про трески и торможение секвенсора.

После установки, конечно же, стоит выбрать ASIO4ALL v2 драйвер в аудио настройках FL Studio, в строке Device:

Теперь все твои мучения должны закончиться, но должен предупредить тебя, что именно с драйверами ASIO4ALL будут конфликтовать все другие процессы операционной системы Windows (плееры аудио, видео, Skype, team speaker, интернет браузеры и все что может использовать звук) и поэтому будет работать либо FL Studio с выбранными драйверами ASIO либо процессы в операционной системе.

Сразу отмечу, что начиная в FL Studio 12, Image-Line интегрировала совместимые c FL Studio драйверы ASIO, которые уже есть в твоем секвенсоре (если ты не убрал галочку при установке секвенсора) называются они FL Studio ASIO и они уже здорово оптимизируют звуковые процессы и, конечно, не конфликтуют с процессами операционной системы, но даже с ними, иногда, есть смысл ставить ASIO4ALL, так как задержка в звуке, небольшая, но все же остается, при выбранных драйверах FL Studio ASIO.

Если у тебя есть синтезатор, MIDI клавиатура, Drum Pad или какое-то другое MIDI устройство, с помощью которого ты воспроизводишь инструменты или управляешь параметрами в секвенсоре (о подключении и оптимизации работы которых, ты можешь узнать все ЗДЕСЬ) – то драйвера ASIO так же оптимизируют работы этих устройств и ускоряют работу их команд. Иными словами уменьшают задержку между нажатием на клавишу MIDI клавиатуры и результатом этого нажатия в FL Studio – звуком.

Настройка ASIO4ALL.

И после выбора драйвера ASIO4ALL щелкни кнопку Show ASIO panel и приступим к настройке необходимых тебе параметров работы драйверов ASIO:

Тебе нужна как раз вот эта настройка ASIO Buffer Size. И это и есть настройка задержки. Но она выставляется для каждого устройства своя (это я к тем гражданам у кого возможно 2 или более аудио интерфейса, звуковой карты, но я думаю мало среди начинающих таких уникальных лиц). ASIO Buffer Size это размер буфера выставляемый ASIO для определенного аудио устройства (устройства перечислены в этом же окне, как WDM Device List) – в твоем случае какой-то звуковой карты. Чем больше размер, тем больше задержка между командой (воспроизведение внутри FL Studio или командой с MIDI устройства) и реакцией на эту команду. Ставим мы это значение в сэмплах, результат – длительность задержки можно увидеть в тексте под выбором устройства Deviceв настройках аудио, под заголовком Status:

Для меня, приемлемая задержки находиться в диапазон буфера 128 – 480 сэмплов. Этот параметр может меняться в зависимости от загруженности проекта, так как в уже весомых проектах (с массой плагинов, эффектов обработки и различных процессов) случается, что достигается предел буфера и появляется тот самый треск и «лаги» в проекте. Поэтому прибегать к увеличению задержки (компенсированию производительности за счет увеличения буфера) все таки придется, как быстро – зависит от твоего железа. Выставь то, что приемлемо для тебя сейчас и едем дальше. Все остальные настройки (те, что справа, а если их нет и там изображение клавиш Piano – то щелкни по гаечному ключу в правом нижнем углу) выставлять нужно только в крайних каких-то специфичных случаях:

Latency Compensation (In and Out) – Компенсация дополнительной задержки (если вдруг она по какой-то непонятной причине появилась) на определенном устройстве воспроизведения или записи (In и Out).

Hardsware Buffer (Работает не всегда!) – дополнительное форсированное улучшение связи со звуковым устройством. Разница мало когда будет заметна.

Регулятор Kernel Buffers– дополнительное улучшение производительности и увеличение за счет этого задержки звука.

Always Resample 44.1 kHz – 48. kHz– если у тебя встроенная звуковая карта в материнской плате или очень бюджетная внутренняя – то стоит выставить этот параметр, он разрешает программному обеспечению ASIO производить конвертацию частот дискретизации, так как некоторые аудио устройства это делают гораздо хуже.

Force WDM Driver to 16 bit– если активировать эту опцию, то она будет решать ошибки тех карт которые не поддерживают размер битности свыше 20 bit.

Вот тебе полная инструкция и пояснение что такое ASIO для чего нужны эти драйвера и как с ними работать и настраивать.

Надеюсь, что статья помогла, удачи в твоем творчестве!

2 Answers

  • Login to reply the answers Post

Correct the issue as follows:

1. Dismiss the error by selecting ‘OK’ or closing the prompt.

2. From FL Studio navigate to ‘Options > Audio Settings’.

3. Ensure that FL Studio ASIO is selected as your Audio device.

4. Select the ‘Show ASIO Panel’ button to launch the FL Studio ASIO Control Panel.

5. Change the selected ‘Output device’ to an available output audio device on your computer.

Hi, I am experimenting with loopback recording using WASAPI. I have been using the MSDN to get me going, but am getting some odd results…

I have use the example given at Capturing a stream and modified it in accordance with the notes given at

Loopback Recording. I used that as my staring point, assuming that an MSDN article should be a good basis to build on. (My full code is given below — for reference just in case I made an error when incorporating the code).

The problem I am getting is that sometimes the played output sound gets corrupted, and sometimes the output gets set into an endless loop (even though no such looped sound is being played). This can be easily demonstrated, if the code given below is built
and run, then in a DOS command window repeatedly run the command «echo ^G» (control G — should result in a «bell»). On my machine it does not take long before really horrible sounds start to be emitted from the sound device.

// WasapiExperiments.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>
#include <mmsystem.h>
#include <mmdeviceapi.h>
#include <audioclient.h>
#include <avrt.h>
#include <functiondiscoverykeys_devpkey.h>
#include <time.h>
#include <iostream>

using namespace std;


const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
const IID IID_IAudioClient = __uuidof(IAudioClient);
const IID IID_IAudioCaptureClient = __uuidof(IAudioCaptureClient);



class MyAudioSink
{
public:
	HRESULT SetFormat( WAVEFORMATEX *pWF) ;
	HRESULT CopyData( BYTE* pData, UINT32 NumFrames, BOOL *pDone) ;
};


HRESULT MyAudioSink::SetFormat(WAVEFORMATEX * pWF)
{
	// For the time being, just return OK.
	return ( S_OK ) ;
}

HRESULT MyAudioSink::CopyData(BYTE * pData, UINT32 NumFrames, BOOL * pDone)
{
	static int CallCount = 0 ;
	//cout << "CallCount = " << CallCount++ << endl ;
	// For the time being, just pretend to record for 15 seconds.
	if ( clock() > 15 * CLOCKS_PER_SEC ) *pDone = true ;
	else *pDone = false ;
	return S_OK ;
}





//-----------------------------------------------------------
// Record an audio stream from the default audio capture
// device. The RecordAudioStream function allocates a shared
// buffer big enough to hold one second of PCM audio data.
// The function uses this buffer to stream data from the
// capture device. The main loop runs every 1/2 second.
//-----------------------------------------------------------

// REFERENCE_TIME time units per second and per millisecond
#define REFTIMES_PER_SEC  10000000
#define REFTIMES_PER_MILLISEC  10000

#define EXIT_ON_ERROR(hres)  
              if (FAILED(hres)) { goto Exit; }
#define SAFE_RELEASE(punk)  
              if ((punk) != NULL)  
                { (punk)->Release(); (punk) = NULL; }


HRESULT RecordAudioStream(MyAudioSink *pMySink)
{
	HRESULT hr;
	REFERENCE_TIME hnsRequestedDuration = REFTIMES_PER_SEC;
	REFERENCE_TIME hnsActualDuration;
	UINT32 bufferFrameCount;
	UINT32 numFramesAvailable;
	IMMDeviceEnumerator *pEnumerator = NULL;
	IMMDevice *pDevice = NULL;
	IAudioClient *pAudioClient = NULL;
	IAudioCaptureClient *pCaptureClient = NULL;
	WAVEFORMATEX *pwfx = NULL;
	UINT32 packetLength = 0;
	BOOL bDone = FALSE;
	BYTE *pData;
	DWORD flags;

	hr = CoCreateInstance(
		CLSID_MMDeviceEnumerator, NULL,
		CLSCTX_ALL, IID_IMMDeviceEnumerator,
		(void**)&pEnumerator);
	EXIT_ON_ERROR(hr)

		hr = pEnumerator->GetDefaultAudioEndpoint(
			eRender, eConsole, &pDevice);
	EXIT_ON_ERROR(hr)

		hr = pDevice->Activate(
			IID_IAudioClient, CLSCTX_ALL,
			NULL, (void**)&pAudioClient);
	EXIT_ON_ERROR(hr)

		hr = pAudioClient->GetMixFormat(&pwfx);
	EXIT_ON_ERROR(hr)

		hr = pAudioClient->Initialize(
			AUDCLNT_SHAREMODE_SHARED,
			AUDCLNT_STREAMFLAGS_LOOPBACK,
			hnsRequestedDuration,
			0,
			pwfx,
			NULL);
	EXIT_ON_ERROR(hr)

		// Get the size of the allocated buffer.
		hr = pAudioClient->GetBufferSize(&bufferFrameCount);
	EXIT_ON_ERROR(hr)

		hr = pAudioClient->GetService(
			IID_IAudioCaptureClient,
			(void**)&pCaptureClient);
	EXIT_ON_ERROR(hr)

		// Notify the audio sink which format to use.
		hr = pMySink->SetFormat(pwfx);
	EXIT_ON_ERROR(hr)

		// Calculate the actual duration of the allocated buffer.
		hnsActualDuration = (double)REFTIMES_PER_SEC *
		bufferFrameCount / pwfx->nSamplesPerSec;

	hr = pAudioClient->Start();  // Start recording.
	EXIT_ON_ERROR(hr)

		// Each loop fills about half of the shared buffer.
		while (bDone == FALSE)
		{
			// Sleep for half the buffer duration.
			Sleep(hnsActualDuration / REFTIMES_PER_MILLISEC / 2);

			hr = pCaptureClient->GetNextPacketSize(&packetLength);
			EXIT_ON_ERROR(hr)

				while (packetLength != 0)
				{
					// Get the available data in the shared buffer.
					hr = pCaptureClient->GetBuffer(
						&pData,
						&numFramesAvailable,
						&flags, NULL, NULL);
					EXIT_ON_ERROR(hr)

						if (flags & AUDCLNT_BUFFERFLAGS_SILENT)
						{
							pData = NULL;  // Tell CopyData to write silence.
						}

					// Copy the available capture data to the audio sink.
					hr = pMySink->CopyData(
						pData, numFramesAvailable, &bDone);
					EXIT_ON_ERROR(hr)

						hr = pCaptureClient->ReleaseBuffer(numFramesAvailable);
					EXIT_ON_ERROR(hr)

						hr = pCaptureClient->GetNextPacketSize(&packetLength);
					EXIT_ON_ERROR(hr)
				}
		}

	hr = pAudioClient->Stop();  // Stop recording.
	EXIT_ON_ERROR(hr)

		Exit:
	CoTaskMemFree(pwfx);
	SAFE_RELEASE(pEnumerator)
		SAFE_RELEASE(pDevice)
		SAFE_RELEASE(pAudioClient)
		SAFE_RELEASE(pCaptureClient)

		return hr;
}




int main()
{
	HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);

	MyAudioSink AudioSink ;
	RecordAudioStream( &AudioSink ) ;


	CoUninitialize();
    return 0;
}

Please note the following:

  • I do not actually record anything at the moment. I have minimised the MyAudioSink class to the minimum.
  • The application is set to (pretend) to record for 15 seconds and then terminate
  • Rather oddly, when nothing is being played (i.e. silence) CopyData does not get called. Looking at the code I do not believe that was the intention of the original author of the MSDN article. I am not too bothered about that at the moment, let’s solve one
    problem at a time!

Please can someone help me understand why the output is being corrupted and what I need to do to prevent the problem.

Many thanks, Andrew Ch.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <audioclient.h>
#include <audiopolicy.h>
#include <mmdeviceapi.h>
#include <Functiondiscoverykeys.h>
 
using namespace std;
 
void getError(HRESULT hr) {
    switch (hr) {
    case E_POINTER:
        cout << "E_POINTER" << endl;
        break;
    case E_NOINTERFACE:
        cout << "E_NOINTERFACE" << endl;
        break;
    case AUDCLNT_E_NOT_INITIALIZED:
        cout << "AUDCLNT_E_NOT_INITIALIZED" << endl;
        break;
    case AUDCLNT_E_WRONG_ENDPOINT_TYPE:
        cout << "AUDCLNT_E_WRONG_ENDPOINT_TYPE" << endl;
        break;
    case AUDCLNT_E_DEVICE_INVALIDATED:
        cout << "AUDCLNT_E_DEVICE_INVALIDATED" << endl;
        break;
    case AUDCLNT_E_SERVICE_NOT_RUNNING:
        cout << "AUDCLNT_E_SERVICE_NOT_RUNNING" << endl;
        break;
    case S_OK:
        cout << "S_OK" << endl;
        break;
    default:
        cout << "UNKNOWN" << endl;
    }
}
 
IMMDeviceEnumerator* pEnumerator;
IMMDevice* pDevice;
IPropertyStore* pStore;
PROPVARIANT              PV;
IAudioSessionManager2* pManager;
IAudioSessionEnumerator* psEnumerator;
IAudioClient* pClient;
 
HRESULT                  hr;
 
int main()
{
    SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);
 
    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); // Инициализирует библиотеку COM
    if (FAILED(hr))
    {
        printf("CoInitializeEx: %xn", hr);
        return -1;
    }
 
    hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pEnumerator)); // Получаем IMMDeviceEnumerator
    if (FAILED(hr))
    {
        printf("CoCreateInstance: %xn", hr);
        return -1;
    }
 
    pEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &pDevice); // Извлекает конечное устройство по умолчанию (eRender - динамики)
 
    pDevice->OpenPropertyStore(STGM_READ, &pStore);  // Получаем
    pStore->GetValue(PKEY_Device_FriendlyName, &PV); // имя устройства
 
    if (PV.vt != VT_LPWSTR) {
        cout << "Error get device friendly name" << endl; 
        return -1;
    }
    wprintf(L"Device name: %snn", PV.pwszVal);
 
    PropVariantClear(&PV);
 
    pDevice->Activate(__uuidof(IAudioSessionManager2), CLSCTX_INPROC_SERVER, NULL, (void**)&pManager); // Получаем
    pManager->GetSessionEnumerator(&psEnumerator);                                                     // список сессий
 
    int sCount;
    psEnumerator->GetCount(&sCount); // Кол-во сессий
 
    for (int i = 0; i < sCount; i++) {
        IAudioSessionControl* psControl;
        AudioSessionState sState;
        LPWSTR psName;
 
        psEnumerator->GetSession(i, &psControl); // Получаем интерфейс IAudioSessionControl для i-той сессии
 
        psControl->GetDisplayName(&psName); // Получаем имя сессии
 
        psControl->GetState(&sState); // Состояние сессии
 
        wprintf(L"%d. %s ", i + 1, psName);
 
        if (sState == AudioSessionStateActive) {
            cout << "(active)" << endl;
        }
        if (sState == AudioSessionStateInactive) {
            cout << "(inactive)" << endl;
        }
        if (sState == AudioSessionStateExpired) {
            cout << "(expired)" << endl;
        }
 
        if (wcscmp(psName, L"Mozilla Firefox")) // Мне нужна сессия Mozill'ы
            continue;
 
        GUID sGUID;
        WAVEFORMATEX* pwfx;
        IAudioCaptureClient* pCapClient;
        REFERENCE_TIME hnsDuration;
 
        psControl->GetGroupingParam(&sGUID); // Получаем GUID
 
        pDevice->Activate(__uuidof(IAudioClient), CLSCTX_ALL, NULL, (void**)&pClient); // Получаем IAudioClient
 
        pClient->GetMixFormat(&pwfx);                 // Получаем
        pClient->GetDevicePeriod(NULL, &hnsDuration); // "формат данных"
        //continue;
        hr = pClient->Initialize(AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_CROSSPROCESS, hnsDuration, hnsDuration, pwfx, &sGUID); // Инициализируем IAudioClient с нужным GUID
        if (FAILED(hr)) {
            cout << "Error initialize IAudioClient" << endl;
            continue;
        }
        
        hr = pClient->GetService(__uuidof(IAudioCaptureClient), (void**)&pCapClient); // Получаем IAudioCaptureClient
        if (FAILED(hr)) {
            getError(hr); // Выдаёт ошибку "AUDCLNT_E_WRONG_ENDPOINT_TYPE", т.к. в строке 70 указан параметр eRender
            continue;
        }
    }
    return 0;
}

Понравилась статья? Поделить с друзьями:
  • Error output processing capture one
  • Error out of video memory trying to allocate a texture pubg
  • Error out of video memory trying to allocate a rendering resource
  • Error pe077 this declaration has no storage class or type specifier
  • Error pe070 incomplete type is not allowed