Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Thread [D5, Win95/98, WinME, NT4]


vidiv ©   (2002-10-22 07:05:00) 

Помогите мне с проблемой: Я хочу сделать программу кторая играет некотоую мелодию через Спикер, и выполнять некоторые видеэффекты (изменение гаммы). Где-то я видел пример функции на асме который делает BEEP с чистотой и задержкой. Но при выполнении этой функции моя прога временно(на время пищания) зависает. Я так подумал, что если сделать еще 1 Thread, и при его помощи проигрывать, то моя программа виснуть не будет, а поток все сделает и исчезнет в памяти. Может я что то не так думаю, поставте меня на путь истенный.


vidiv   (2002-10-23 02:26:00) [1]

извените... :/


vidiv   (2002-10-23 02:25:00) [2]

Всем огромное спасибо, за быструю помощь. Статья тоже в тему папала, то что я и искал.
Еще раз спасибо.


Девиз:<font color=blue> Сам живешь и другим жить давай</font>


beginer1   (2002-10-22 17:16:00) [3]

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Генерация звукого сигнала на встроенном динамике

Frequency - частота звука, Гц
Duration - длительность звучания, 1/1000 сек

Зависимости: Windows, SysUtils,
Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт- Петербург
Copyright: Dimka Maslov
Дата: 29 апреля 2002 г.
***************************************************** }

procedure Sound(Frequency, Duration: Integer);
asm
push edx
push eax
mov eax, Win32Platform
cmp eax, VER_PLATFORM_WIN32_NT
jne @@9X
call Windows.Beep
ret
@@9X:
pop eax
pop edx
push ebx
push edx
mov bx, ax
mov ax, 34DDh
mov dx, 0012h
cmp dx, bx
jnc @@2
div bx
mov bx, ax
in al, 61h
test al, 3
jnz @@1
or al, 3
out 61h, al
mov al, 0B6h
out 43h, al
@@1:
mov al, bl
out 42h, al
mov al, bh
out 42h, al
call Windows.Sleep
in al, 61h
and al, 0FCh
out 61h, al
jmp @@3
@@2:
pop edx
@@3:
pop ebx
end;


Алексей Ким   (2002-10-22 17:03:00) [4]

в статьях расписано на примерах как это сделать


Yegor Derevenets   (2002-10-22 16:28:00) [5]

Хм. Это, конечно, что-то умное ты/Вы (vidiv) задумал/а/и. Вообще могу подарить модуль для прогигрывания WAV с диким качествим (но с низким битрейтом справляется). Работал под DOS, под Delphi откомпилить не пробовал, если интересно - пиши. За результаты и качество не отвечаю :-)


Севостьянов Игорь   (2002-10-22 10:53:00) [6]

Все в общем верно. Дело в том что когда работает Beep у тебя прога естественно не будет ничего делать пока не завершит эту операцию (собственно какая разница вызвать Beep или же например свою процедуру). При создании дополнительного потока пищать будет "в фоне" а основной процесс не будет загружен. Только при обработке Beep в потоке, не делай синхронизацию, в твоем случае она не нужна...


Наверх

Титульная страница Поиск, карта сайта Написать письмо