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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 16:29   #1
Cepreu^
 
Регистрация: 17.01.2013
Сообщений: 7
Вопрос Работа со звуком

Доброго времени суток !

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

Подобрал WAV файл. Я назвал его Sound01. Создал в директории своего проекта текстовый файл со следующим содержанием:
Sound01 RCDATA LOADONCALL Sound01.wav

Переименовал текстовый файл в "Sound.rc".
Скомпилировал через BRCC32.exe, выполнив строку:
C:\-директория Delphi-\BIN\BRCC32.EXE C:\-директория проекта-\Sound.rc
Появился файл "Sound.res".
В проекте после строки {$R *.dfm} добавил строку {$R Sound.res} .
Добавил в раздел uses ещё один модуль MMSystem,
для воспроизведения WAV-файлов.
Написал процедуру воспроизведения файла из ресурсов. У меня она получилась вот такой :
Код:
 procedure PlayWAVfromRES(name:PAnsiChar); 
  var 
   hResource: THandle; 
   pData: Pointer;                // указатель на ресурс 
 begin 
   hResource:= LoadResource( hInstance, FindResource( hInstance, name,    
                                                                                   RT_RCDATA ) ); 
   pData:= LockResource( hResource ); 
   SndPlaySound( pData, SND_MEMORY ); 
   FreeResource( hResource ); 
 end;
Добавил к форме кнопочку и создал обработчик нажатия этой кнопки:

PlayWAVfromRES('Sound01');


И блин , после нажатия кнопки ничего не слышно !

Помогите плuз !

Последний раз редактировалось Stilet; 01.06.2013 в 20:23.
Cepreu^ вне форума Ответить с цитированием
Старый 31.05.2013, 18:15   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Наверное SndPlaySound подходит для Windows 95/98/2000/Xp
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.05.2013, 18:51   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Это все очень здорово, но чтобы понять, в чем проблема, нужно проверять значения, возвращаемые: FindResource, LoadResource, pData, и, если возникают проблемы, запросить у системы код ошибки.
Да и длину ресурса неплохо было бы выяснить.
s-andriano вне форума Ответить с цитированием
Старый 31.05.2013, 19:58   #4
Cepreu^
 
Регистрация: 17.01.2013
Сообщений: 7
По умолчанию

Да, применил просто SndPlaySound( 'Sound01', SND_ASYNC + SND_NODEFAULT ) вместо своей процедуры PlayWAVfromRES и зазвучало . Кстати ещё раньше применял вместо PlayWAVfromRES и PlaySond и PlaySoundW тоже не работало.
В обчем спасибо. А знаете как сделать так , чтобы после создания формы начиналась фоновая музыка и крутилась до закрытия формы ? При этом по ходу работы была возможность проигрывать параллельно ещё один короткий звук ( например при нажатии кнопки ) не прерывая фоновой музыки.

Спасибо , но вроде проще решение нашёл ( для короткого звука ). И кстати до сих пор не играет длинная фоновая музыка ( в ресурсе она занимает больше 30 метров ), может подскажете как с этим бороться ? И ещё , если не трудно подскажите как сделать так , чтобы после создания формы начиналась фоновая музыка и крутилась до закрытия формы ? При этом по ходу работы была возможность проигрывать параллельно ещё один короткий звук ( например при нажатии кнопки ) не прерывая фоновой музыки.

Последний раз редактировалось Stilet; 01.06.2013 в 20:23.
Cepreu^ вне форума Ответить с цитированием
Старый 31.05.2013, 21:16   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Cepreu^ Посмотреть сообщение
При этом по ходу работы была возможность проигрывать параллельно ещё один короткий звук ( например при нажатии кнопки ) не прерывая фоновой музыки.
Мне кажется, что это делается либо путем низкоуровневой работы с буферами в mmsystem, либо средствами DirectSound (для чего он, собственно, и создавался).
Но с последним я не разбирался.
s-andriano вне форума Ответить с цитированием
Старый 31.05.2013, 21:41   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Cepreu^ Посмотреть сообщение
Спасибо , но вроде проще решение нашёл ( для короткого звука ). И кстати до сих пор не играет длинная фоновая музыка ( в ресурсе она занимает больше 30 метров ), может подскажете как с этим бороться ? И ещё , если не трудно подскажите как сделать так , чтобы после создания формы начиналась фоновая музыка и крутилась до закрытия формы ? При этом по ходу работы была возможность проигрывать параллельно ещё один короткий звук ( например при нажатии кнопки ) не прерывая фоновой музыки.
аудиобиблиотек и готового кода масса.
тот же BASS как пример.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.06.2013, 20:16   #7
Cepreu^
 
Регистрация: 17.01.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Мне кажется, что это делается либо путем низкоуровневой работы с буферами в mmsystem, либо средствами DirectSound (для чего он, собственно, и создавался).
Но с последним я не разбирался.
Попробую разобраться с DirectSound , спасибо !
Cepreu^ вне форума Ответить с цитированием
Старый 01.06.2013, 20:55   #8
Cepreu^
 
Регистрация: 17.01.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
аудиобиблиотек и готового кода масса.
тот же BASS как пример.
Пробую разобраться с BASS , спасибо.
Cepreu^ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со звуком bonjovi Паскаль, Turbo Pascal, PascalABC.NET 14 12.02.2012 19:04
Работа со звуком ддимочка C++ Builder 0 09.12.2011 21:31
Работа со звуком в с++ INK0 Общие вопросы C/C++ 0 14.11.2011 21:01
Работа со звуком Drulya C# (си шарп) 4 12.09.2011 11:58
работа со звуком Garic_ Помощь студентам 19 15.12.2009 19:39