Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2010, 11:45   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию Воспроизведение звука, не DirectSound.

в общем интересует как воспроизвести правильно звук на API.
через функции waveOut я полагаю или через mixer?
(я пытался но не хочет, правда я помоему еще и указатель спутал где-то))
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.09.2010, 17:33   #2
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

А есть несколько вариантов. Надо выбирать в зависимости от задачи.

1. Если что-то совсем простое, то SndPlaySound - функция может играть WAV как из файла так и из памяти.

Цитата:
А есть ли простой способ проигрывания произвольного wav-файла?

Есть, и он действительно прост. Этот способ основан на использовании функции sndPlaySound , которая находится в библиотеке mmsystem.dll. Ее прототип определен в файле mmsystem.h:
BOOL sndPlaySound(LPCSTR lpszSoundFile, UINT wFlags);

Через параметр lpszSoundFile этой функции можно передать путь к wav-файлу, идентификатор ресурса, содержащего звуковой фрагмент (вы можете записать звуковой фрагмент в ресурсы приложения)
2. Вариант посложнее, но более мощный и гибкий - высокоуровневый интерфейс MCI.
Цитата:
MCI представляет собой универсальный, независимый от особенностей аппаратного обеспечения интерфейс, предназначенный для управления устройствами мультимедиа, такими как звуковые и видеоадаптеры, устройства чтения (проигрывания) звуковых компакт-дисков и лазерных видеодисков. В большинстве случаев возможности, предоставляемые этим интерфейсом, удовлетворят потребности любого приложения мультимедиа, предназначенного для записи и воспроизведения звуковой или видеоинформации.
3. Ну и совсем низкоуровневые.

Цитата:
При необходимости иметь непосредственный доступ к буферам, содержащим звуковые данные, приложение должно использовать интерфейс низкого уровня, обеспечиваемый несколькими функциями с префиксом имени wave, например, waveInOpen, waveOutOpen, waveOutWrite, waveAddBuffer и т. д.

Общая методика использования интерфейса низкого уровня для воспроизведения wav-файлов такова. Сначала выполняется чтение и проверка формата заголовка wav-файла, открытие устройства вывода с указанием конкретного формата звуковых данных. Затем звуковые данные читаются блоками непосредственно из wav-файла, подготавливаются специальной функцией для вывода и затем передаются драйверу устройства вывода. Драйвер выводит их в звуковой адаптер. Приложение имеет полный контроль над процессом воспроизведения, так как оно само должно подготовить блоки данных в оперативной памяти.

Аналогично выполняется запись звуковых данных. Вначале требуется открыть устройство ввода, указав ему формат звуковых данных. Затем нужно заказать один или несколько блоков памяти и подготовить их для ввода, вызвав специальную функцию. После этого подготовленные блоки нужно по мере необходимости передавать драйверу устройства ввода, который заполнит их записанными звуковыми данными. Для сохранения записанных данных в wav-файле приложение должно сформировать и записать в файл заголовок wav-файла и звуковые данные из подготовленных и заполненных драйвером устройства ввода блоков памяти.

В отличие от интерфейса MCI, где многие параметры принимаются по умолчанию, интерфейс низкого уровня требует внимательного и тщательного учета всех деталей процесса записи и воспроизведения. В качестве компенсации за дополнительно затраченные усилия вы получаете большую гибкость и возможность работать со звуковыми данными в реальном времени.
Не помню уже чем закончилась моя эпопея с этими функциями - вроде ничем хорошим, поэтому примеров привести не смогу.

4. к стыду своему не знаю что такое mixer?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 28.09.2010, 19:04   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1и2 не подходит.(мне не только wav надо воспроизводить)
3)подробнее можно?
пытался я сделать, но у меня даже не пикает

http://sources.codenet.ru/file/3471/play-wave.zip
вот пример нашел, перепишу на С++, проверю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 28.09.2010 в 19:54.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.09.2010, 20:12   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
2 не подходит.(мне не только wav надо воспроизводить)
mci не только wav воспроизводит.

...как насчет directshow? да, таскать, зато всё на что есть кодек.

p.s.: mixer есть то что и написано - миксер, это к регуляторам, не к воспроизведению.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 28.09.2010, 20:15   #5
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Сейчас проверил, лично у меня MCI играет как минимум mp3 и wma.
ogg не играет.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 28.09.2010, 20:21   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

насчет миксеров, понял свою ошибку
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 28.09.2010 в 20:26.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.09.2010, 21:36   #7
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Пепел Феникса, вот писал передачу звука по сети. Может быть вам чем-нибудь поможет мой проект
Вложения
Тип файла: zip Диплом.zip (441.1 Кб, 74 просмотров)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение звука Патрон Общие вопросы Delphi 21 15.07.2008 20:08
Воспроизведение звука Djaconda Общие вопросы C/C++ 14 09.06.2008 00:19
воспроизведение звука.. Kaktys v tymane Помощь студентам 1 01.05.2008 20:55
Воспроизведение звука John_chek Общие вопросы Delphi 5 05.06.2007 15:18