На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Работа с звуковой картой с помощью ASIO и Windows MME
    Хотел бы научиться работать с звуковой картой (запись звука с микрофона в файл на ПК, воспроизведение файлов). Почитал некоторые материалы по работе с звуковой картой. Как я понял, в Windows можно работать с звуковой картой через ASIO и MME, причем меньшие задержки при работе с звуковой картой дает драйвер ASIO.

    Возникли вопросы по ASIO и Windows MME:
    - как узнать, поддерживает ли ASIO звуковая карта? Есть ли программы, которые это определяют?
    - из статей я сделал вывод, что если звуковая карта не поддерживает ASIO, то нужно использовать ASIO4ALL. Установил ASIO4ALL_2_12_Russian на свой нетбук, в директории c:\Program Files\ASIO4ALL v2\ обнаружил файлы asio4all.dll и asio4all64.dll. Действительно ли можно научиться работать с ASIO на любой звуковой карте с помощью ASIO4All или я понял неправильно? Если можно, то что нужно включить в проект (работаю в Visual C++ 2013, Windows 8.1);
    - какие функции входят в состав Windows MME? В Platform SDK по MME ничего не нашел, есть разные мультимедийные Win32 API, но какие из них относятся к MME я не понял;
    - хотелось бы найти примеры работы с звуковой картой на С++ через ASIO и Windows MME. По ASIO нашел только для NET (http://www.codeproject.com/Articles/24536/...-Drivers-in-NET), а какие функции Windows MME искать, я не знаю.

    Не судите строго, только начинаю пытаться осваивать непростые задачи работы со звуком.
      Цитата
      как узнать, поддерживает ли ASIO звуковая карта?

      Производитель явно указывает поддержку ASIO и поставляет вместе с картой драйвер.
      Как проверить наличие установленных драйверов ASIO:
      ASIO драйвера
      Цитата
      Действительно ли можно научиться работать с ASIO на любой звуковой карте с помощью ASIO4All или я понял неправильно?

      Полагаю, можно. ASIO4All эмулирует функции ASIO интерфейса для софта, юзающего ASIO. Если софт заточен под ASIO, а железяка ASIO не поддерживает, то и соответствующего драйвера не имеет. Значит, софт её не увидит. ASIO4All создаёт видимость наличия такой железяки с системе. Как фактически он взаимодействует с устройством...предположу, что обращается к его родному драйверу, юзая, например, интерфейс DirectSound...
      Цитата
      Если можно, то что нужно включить в проект

      Без понятия.
      Цитата
      Хотел бы научиться работать с звуковой картой (запись звука с микрофона в файл на ПК, воспроизведение файлов). Почитал некоторые материалы по работе с звуковой картой. Как я понял, в Windows можно работать с звуковой картой через ASIO и MME, причем меньшие задержки при работе с звуковой картой дает драйвер ASIO.

      Можно использовать интерфейсы_функции MME(winmm.dll), DirectSound, Сore Audio в win7 и выше, и пр., а также билиотеки-обёртки над этими интерфейсами, типа BASS, PortAudio,...
      ASIO вообще-то довольно специфический "зверь". Он не дань моде.
      Если вы не пишете софт для студии звукозаписи, не используете многоканальные АЦП, и вы не аудиофил, скорее всего, ASIO вам в ближайшее время не понадобится. А пресловутые задержки никак не скажутся на работе программ.
      Цитата
      какие функции входят в состав Windows MME? В Platform SDK по MME ничего не нашел, есть разные мультимедийные Win32 API, но какие из них относятся к MME я не понял;

      Ньюансы терминологии. Нужно вникать в историю появления и развития мультимедийных функций в семействе ОС Windows. Например, Евгений Музыченко, говоря о функциях из winmm.dll, называет их мультимедия екстеншн(MME), утверждая, что и майкрософт их так обзывал некогда.
      Цитата
      Первоначально интерфейс со звуковыми устройствами был введен в Windows 3.x под названием MME (MultiMedia Extension - мультимедийное расширение). При переносе на платформу Win32 он практически не претерпел изменений,...

      https://rsdn.ru/article/multimedia/winsnd.xml
      По мере выхода новых версий виндовс, майкрософт постоянно что-то меняет в структуре msdn, создаёт новые разделы, меняет старые, объявляет какие-то функции/интерфейсы устаревшими, рекомендует новые...с абревиатурой MME можно не заморачиваться, просто понимать о чём речь. Речь о функциях multimedia из winmm.dll.
      winmm и DirectSound - в 7-ке уже являются "устаревшими", и если не ошибаюсь, эмулируются штатными семёрочными интерфейсами в составе Сore Audio. В последнем не уверен, не могу утверждать.
      Т.е., они "устаревшие", но поддерживаются, для совместимости с "устаревшим" софтом для XP и пр.
      Цитата
      какие функции Windows MME искать, я не знаю.

      Часть описаны в статье по ссылке выше, весь список - https://msdn.microsoft.com/en-us/library/dd...6(v=vs.85).aspx
      Сообщение отредактировано: Prince -
        Спасибо за ответы и ссылки.
          Цитата
          mmsystemGetVersion function

          This function may be altered or unavailable in future versions of the Windows operating system.

          The mmsystemGetVersion function is deprecated. Applications should not use this function.

          This function returns the current version number of the Windows Multimedia Extensions software.

          The original purpose of this function was to test whether the Windows Multimedia Extensions software was present on computers with Windows 3.1 installed.

          Эта функция может быть изменена или недоступна в будущих версиях windows.
          Функция mmsystemGetVersion устарела. Приложения не должны использовать эту функцию.
          Эта функция возвращает текущую версию програмного обеспечения Windows Multimedia Extensions.
          Первоначальным назначением функции была проверка наличия програмного обеспечения Windows Multimedia Extensions на компьютерах с Windows 3.1.
          https://msdn.microsoft.com/en-us/library/dd...2(v=vs.85).aspx
            Правильно ли я понял, что для наиболее эффективной работы в Windows выше 7 версии нужно использовать Core API, которое вряд ли устареет в ближайшее время?

            Добавлено
            Я попробовал в справке к Visual Studio 2013 найти Core API, ничего не нашел. Что нужно установить, чтобы в справке была информация, идентичная информации на сайте?

            Добавлено
            По Core Audio APIs тоже ничего не нашлось.
              Цитата
              Правильно ли я понял, что для наиболее эффективной работы в Windows выше 7 версии нужно использовать Core API, которое вряд ли устареет в ближайшее время?

              И да, и нет. Не совсем.
              Цитата
              This documentation describes the Core Audio APIs. These APIs serve as the foundation for the following higher-level APIs:
              DirectSound
              DirectMusic
              Windows multimedia waveXxx and mixerXxx functions
              Media Foundation

              https://msdn.microsoft.com/en-us/library/wi...4(v=vs.85).aspx
              Документация описывает Core Audio API. Эти API используются в качестве основы для следующих API более высокого уровня:
              DirectSound
              DirectMusic
              Windows multimedia waveXxx and mixerXxx functions
              Media Foundation

              Там же:
              Цитата
              Direct communication with the Core Audio APIs might not be suitable for many general-purpose audio applications. For example, the Core Audio APIs require audio streams to use an audio device's native data formats. However, third-party software developers who are developing the following types of products might require the special capabilities of the Core Audio APIs:
              Professional audio ("pro audio") applications
              Real-time communication (RTC) applications
              Third-party audio APIs

              Для многих приложений общего назначения, прямое обращение к Core Audio может не требоваться(прямое обращение к Core Audio может быть неудобным)...однако, разработчику могут понадобиться специальные возможности Core Audio, если он разрабатывает, например, такие типы програмных продуктов:
              проф. софт для аудио, софт для связи в реальном времени, разработка сторонних аудио API(если я правильно понимаю, речь о драйверах)

              Там же:
              Цитата
              An application that uses a legacy audio API to play or record audio might require additional capabilities that are not supported by the legacy audio API, but that are supported by the Core Audio APIs. In many cases, the application can access these capabilities directly through the Core Audio APIs, which can be used in conjunction with the legacy audio API.

              Приложению, использующему старые интерфейсы, могут понадобиться дополнительные возможности, поддерживаемые только Core Audio. Во многих случаях, приложение может получить к ним доступ через Core Audio API, параллельно с юзанием MME, DirectSound.
              Цитата
              Я попробовал в справке к Visual Studio 2013 найти Core API, ничего не нашел.

              Там же:
              The Core Audio APIs are:
              Multimedia Device (MMDevice) API. Clients use this API to enumerate the audio endpoint devices in the system.
              Windows Audio Session API (WASAPI). Clients use this API to create and manage audio streams to and from audio endpoint devices.
              DeviceTopology API. Clients use this API to directly access the topological features (for example, volume controls and multiplexers) that lie along the data paths inside hardware devices in audio adapters.
              EndpointVolume API. Clients use this API to directly access the volume controls on audio endpoint devices. This API is primarily used by applications that manage exclusive-mode audio streams.
              Цитата
              Что нужно установить, чтобы в справке была информация, идентичная информации на сайте?

              Низнаю.

              Цитата
              в Windows выше 7 версии нужно использовать Core API

              Я бы сказал, что майкрософт всё-же делает акцент на можно использовать, по необходимости.
              Сообщение отредактировано: Prince -
                Спасибо большое за подробные объяснения!
                  В статье Музыченко "Низкоуровневое программирование звука в Windows", на которую Вы дали ссылку, прочел следующее: "К сожалению, Microsoft разработала спецификацию расширения DirectSound для звуковых VxD только в части воспроизведения звука, преследуя прежде всего интересы производителей игр. Запись звука через DirectSound до сих пор ведется путем эмуляции поверх MME". Это справедливо для Windows 7 и 8?
                    Цитата
                    Это справедливо для Windows 7 и 8?

                    Ихмо, нет. Но обосновать и аргументировать не могу.
                    VxD в прошлом. Возможно, Е. Музыченко говорил о win98, или вообще 95...я ооочень давно статью читал.
                    Ещё, в дополнение:
                    Программирование звука в DirectSound
                    Программирование объемного звука в DirectSound3D

                    В общем и целом, любой поддерживаемый виндой интерфейс может быть использован для записи/воспроизведения.

                    Известная бибилотека bass использует под виндой DS; там же, в дополнениях, есть отдельные билиотеки для ASIO и WASAPI(Сore Audio); относительно старенький, но не потерявший полезности звуковой редактор Сool Edit использовал MME; его преемник Adobe Audition умел/умеет обращаться с DS, ASIO(что там в последних версиях, я не в курсе); плеер AIMP позволяет выбирать DS, ASIO, WASAPI; k-лайтовский Media Player Classic (на XP) - MME, DS.

                    Не пропустите книги
                    Обработка звука на PC. Наиболее полное руководство
                    Н. Секунов
                    Руководство программиста по работе со звуком
                    Тим Кинтцел
                    В FAQ тоже загляните.

                    Цитата
                    Ихмо, нет.

                    на всякий пожарный, относится к "эмуляции поверх MME".
                    Сообщение отредактировано: Prince -
                      Спасибо за помощь! Пора начать программировать. Начну, пожалуй, с MME. А потом попробую то же самое с DirectSound.
                        Подскажите, пожалуйста, где можно почитать подробнее о звуковой системе Windows, о взаимодействии железа и драйверов и т.д. Что-то типа Соломона и Руссиновича, но для звуковой системы.
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0374 ]   [ 15 queries used ]   [ Generated: 19.03.24, 02:55 GMT ]