· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› PlaySound

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Авг 31, 2003 09:50:22

Здравствуйте, любители MASM32.
При изучении “Урок 16: Объект события” столкнулся с такой проблемой:
Решил использовать объект события для проигрывания фоновой музыки (начинает играть с запуска проги, есть возможность остановить, есть возможность возобновить). Использую функцию PlaySound. Внимание вопрос: 1) почему фоновая музыка не останавливается сразу, а только по окончанию проигрывания.
Есть предположение, что это из-за использования SND_SYNC при проигрывании музыки, но если ставить SND_ASYNC то глючит ;-(
Посоветуйте способы проигрывания фоновой музыки и использование альтернативных wav форматов (примеры и описания на русском приветствуются). Использование альтернативных wav форматов – тема уже была зыыы, но может уже кто эти вопросы задавал, ответит мне и поделится наработками. А если бы появилась статья на эту тему, то было бы замечательно.
Код:
SoundResource db "1.wav",0

.IF uMsg==WM_CREATE
invoke CreateEvent,NULL,TRUE,TRUE,NULL
mov hEventStart,eax
mov eax,OFFSET ThreadProc
invoke CreateThread,NULL,NULL,eax,\
NULL,NORMAL_PRIORITY_CLASS,\
ADDR ThreadID
mov hThread,eax

.ELSEIF uMsg==WM_COMMAND
mov eax,wParam
.if lParam==0
.if ax==IDM_START_THREAD
invoke SetEvent,hEventStart
.elseif ax==IDM_STOP_THREAD
mov EventStop,TRUE
invoke EnableMenuItem,hMenu,IDM_START_THREAD,MF_ENABLED
invoke PlaySound,NULL,NULL,SND_PURGE
;Прекратить воспроизводить звук немедленно – НЕ РАБОТАЕТ
invoke ResetEvent,hEventStart
.else
invoke DestroyWindow,hWnd
.endif
.endif

ThreadProc PROC USES ecx Param:DWORD
invoke WaitForSingleObject,hEventStart,INFINITE
mov ecx,1
.WHILE ecx!=0
.if EventStop==FALSE
invoke PlaySound, addr SoundResource,NULL,SND_SYNC
;Если SND_ASYNC глючит
.else
invoke MessageBox,hwnd,ADDR StopString,ADDR AppName,MB_OK
mov EventStop,FALSE
jmp ThreadProc
.endif
.ENDW
ThreadProc ENDP


Дата: Авг 31, 2003 11:45:52

Не знаю что там у тя не получается, посмотри аттач-может поможет,
для компиляции запустить bat файл в отдельной папке, файл с музыкой sound.wav
сам добавь.

118875855__Sound.zip


Дата: Авг 31, 2003 19:30:13

Это не совсем то, что я спрашивал!
Файл играется превосходно, НО я его остановить не могу во время проигрывания!
А при SND_ASYNC глючит!


Дата: Авг 31, 2003 19:45:02

Я тут когда-то писал о том, что Win2000 иногда (у меня - всегда) тормозит при запуске приложений которые используют библиотеку WinMM (ваш PlaySound к ней тоже относится). Создаётся впечатление, что MS постепенно сворачивает поддержку WinMM. Я рекомендую вам использовать Bass, FMOD или подобную библиотеку. Там даже есть примеры для MASM32. Для OGG Vorbis, MP3 и т.д. тоже есть библиотеки.


Дата: Авг 31, 2003 19:56:49

А если сначала отключить звук, а потом отрубить воспроизведение...


Дата: Авг 31, 2003 23:04:57

Ответ profi_r
***А если сначала отключить звук, а потом отрубить воспроизведение...***
По мне, так это изврат.

---------------------------------
Ответ Quantum
Спасибо за толковый ответ.
Я новичок в win32 и многого не знаю! (изучаю с июля 2003)
Делайте скидку на это при изъяснении своих мыслей, пожалуйста.

***Библиотека WinMM (ваш PlaySound к ней тоже относится)***
Я догадался об этом по строкам includelib \masm32\lib\winmm.lib

***Я рекомендую вам использовать Bass, FMOD или подобную библиотеку.***
Скачал Bass там нашёл пример на masm!
В примере не было bass.lib, но я его нашёл в каталоге с примерами для С. Могу ли я его использовать?

Cкачал FMOD + sdk к нему + player. Но не нашёл на сайте (и в доках) примеры для masm, где мне поискать fmod.lib и fmod.inc. Этих 2-х файлов + fmod.dll мне хватит или ещё, что надо?


Дата: Авг 31, 2003 23:52:56 · Поправил: Quantum

stres
В примере не было bass.lib, но я его нашёл в каталоге с примерами для С. Могу ли я его использовать?
Конечно, но это только статический переходник к BASS.DLL, т.е. DLL вам всё равно будет нужна.

Cкачал FMOD [...] Но не нашёл на сайте (и в доках) примеры для masm, где мне поискать fmod.lib и fmod.inc.
:-) Я ждал этого вопроса. Мы с Asterix'ом когда-то копались с этим FMOD. В общем, есть LIB (причём не переходник ;-), есть INC и есть пример на MASM32. Наверное Asterix будет не против если я поделюсь этим добром (молчание - знак согласия). Если нужно, оставьте мыло.


Дата: Сен 1, 2003 00:35:19

Скачал Bass там нашёл пример на masm!

А вот я в своё время что-то не нашёл этого примера, можно ссылочку
какой точно файл(пакет) для этого качать..


Дата: Сен 1, 2003 03:39:22

Asterix
У меня тоже есть этот пример. Не помню откуда слил. Могу намылить.


Дата: Сен 1, 2003 03:51:35

Давай, только шли обязательно с русского домена, а то у меня там фильтры.


Дата: Сен 1, 2003 06:14:50 · Поправил: Quantum

Asterix
Намёк понял :)

ЗЫ: Отправил на ********@pisem.net, т.к. новый (?) адрес не нашёл... долго искал.


Дата: Сен 1, 2003 13:28:40

Ответ Asterix
http://www.un4seen.com/files/bass18.zip весит 550,5 кб

Ответ Quantum
***Конечно, но это только статический переходник к BASS.DLL, т.е. DLL вам всё равно будет нужна.***
Что такое СТАТИЧЕСКИЙ переходник? Чем отличается от нестатического?

***Мы с Asterix'ом когда-то копались с этим FMOD. В общем, есть LIB (причём не переходник ;-), есть INC и есть пример на MASM32.***
Что значит не переходник чем отличается от переходника?
Всё интересует: LIB, INC, пример и т.д. Если не сложно пришлите на stres9@rambler.ru.


Дата: Сен 1, 2003 16:50:58

Quantum

Спасибо! Получил.
На этом mail как раз фильтров ... ;-)


Дата: Сен 1, 2003 18:50:12

stres
Что такое СТАТИЧЕСКИЙ переходник? Чем отличается от нестатического?
Ээээ... Моя терминология, так сказать. В общем, когда вы подключаете к проекту статический переходник (вроде user32.lib, gdi32.lib, winmm.lib и т.д. и т.п.) ваше приложение статически подключается к соответствующей библиотеке (user32.dll, gdi32.dll, winmm.dll и т.д. и т.п.) Фактически эти либы не содержат в себе кода, только имена (символы) ф-ций API. В случае с bass.lib наблюдается такая же картина. Об этом свидетельствует даже малый размер LIB. Но есть и другие либы, объектный код содержащие: masm32.lib и иже с ним. Такие либы сами с усами и в DLL не нуждаются. Иногда имеет смысл ограничивать использование DLL в своих приложениях, что бы дистрибутив содержал всего лишь один большой EXE и больше ничего. Таким образом всякие кряки проигрывают фоновый музон без внешних DLL.

В вышесказанном есть некоторые неточности, сознательно допущенные дабы упростить суть высказывания.

ЗЫ: Отправил большой RAR


Дата: Сен 1, 2003 22:06:34

Ответ Quantum
Большое спасибо!!!
Решил остановиться на FMOD, но осталось несколько вопросов:
1) Со статическими и не статическим разобрался, но как мне прикрепить этот fmod чтобы размер остался не большим (когда я сделал EXE файл из того, что Вы мне прислали у меня получилось 560 кб)
2) msvcrt.lib зачем этот переходник подключать?
3) Где я могу взять описание (где применяются) всех *.lib? Возможно, это многим бы пригодилось.
4) Почему Вы Quantum и Вы Asterix не напишете статью по данной тематике – она бы сняла много вопросов! В данной статье можно было бы сделать ссылки на библиотеки, исходники с пояснениями и т.д. было бы супер.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.070