|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Воспроизведение звука
Интересует возможность воспроизведения звука, причем с возможностью его отключения и конечно при параллельном воспроизведении.
Как я заприметил начинаем с подключения модуля MMSystem. Далее есть парочка команд. Код:
sndPlaySound('C:\Sound.wav', SND_ASYNC); // Обычное воспроизведение sndPlaySound('C:\Sound.wav', SND_ASYNC + SND_LOOP); // Зацикленное воспроизведение sndPlaySound(nil, SND_ASYNC); // Остановка воспроизведения mciSendString(PChar('Play "C:\Sound.wav"'),nil,0,0); // Воспроизведение mciSendString(PChar('close waveaudio'),nil,0,0); // Остановка, только как-то она у меня некорректно работает |
#3
|
||||
|
||||
вариантов много. к примеру:
Код:
uses MCIPlayer, MCIPlayer.Open('d:\Музыка\Ennio Morricone\Chi Mai.mp3'); MCIPlayer.Play; MCIPlayer.Stop; MCIPlayer.Close; MCIPlayer.Pause; MCIPlayer.Resume; MCIPlayer.TriggerPause; procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption:=IntToStr(GetLength); Label2.Caption:=IntToStr(GetPosition); Label3.Caption:=IntToStr(Integer(GetMode)); end; http://data.cod.ru/139012 Пишу программы за еду. __________________ |
#5
|
||||
|
||||
http://data.cod.ru/139024
-жми Open Пишу программы за еду. __________________ |
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
я тебе по секрету скажу: скопируй exe и mp3 в какую-нибудь папку и замени "я узнал что у меня.mp3" на другой mp3, но с тем же именем, проще говоря подмени mp3. теперь запусти exe из 1 и 2 папки.
Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Если скачаешь библиотеку bass, ссылку на которую тебе уже указывали, то там имеются примеры. Заходишь в каталог дельфи и смотришь пример 'basstest', получишь именно то, что ищешь.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
|||
|
|||
Цитата:
И таких программок штук десять и каждую запускать Вот кое что нарыл, но все же маловато. Цикла нету, да и почему-то воспроизводит только MP3, WAV и MIDI не читает. Код:
Пример кода mciSendString(PChar('Play "C:\Sound.wav"'),nil,0,0); Команды Воспроизвести - Play "C:\Sound.wav" Остановить - Stop "C:\Sound.wav" Приостановить - Pause "C:\Sound.wav" Ожидание - Play "C:\Sound.wav" Wait Закрыть звук - Close WaveAudio |
#10
|
||||
|
||||
Приведённый NumLock-ом код может читать и WAV и MIDI, только нужно внести небольшое изменение. Но по мне так, так bass удобнее. Хотя для мелочи и команды Внды подойдут.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
|||
|
|||
Да ну как для мелочи...
- Нужно включить воспроизведение фоновой музыки под циклом. - Воспроизводить короткие звуковые сигналы под видом когда наводишь курсор на кнопку, убираешь курсор, нажимаешь на кнопку. Загрузку CPU он грузит с BASS кода, да? Label1.Caption := 'CPU% ' + FloatToStrF(BASS_GetCPU, ffFixed, 4, 2); |
#12
|
||||
|
||||
Попробуй этот файл, только дополнительно требуется bass.dll
Этот файл грузит проц на 0.5% при 2 песнях. 4 песни загрузили на 1% Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 14.01.2012 в 22:03. |
#13
|
|||
|
|||
Цитата:
|
#14
|
||||
|
||||
Цитата:
Код:
uses MMSystem, type TMCIPlayer = class private FDeviceID: Cardinal; public constructor Create(FileName: String); destructor Destroy; override; procedure Play; procedure Stop; end; { TMCIPlayer } constructor TMCIPlayer.Create(FileName: String); var OpenParms: TMCI_Open_Parms; FFlags: Longint; FError: Longint; Buffer: array [0..$ff] of Char; begin inherited Create; OpenParms.dwCallback:=0; OpenParms.wDeviceID:=0; OpenParms.lpstrDeviceType:=''; OpenParms.lpstrElementName:=PChar(FileName); OpenParms.lpstrAlias:=PChar(IntToStr(GetTickCount)+#0); FFlags:=MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_ALIAS; FError:=mciSendCommand(0, MCI_OPEN, FFlags, Longint(@OpenParms)); if FError=0 then FDeviceID:=OpenParms.wDeviceID else begin FDeviceID:=0; mciGetErrorString(FError, @Buffer[0], Length(Buffer)); ShowMessage(StrPas(@Buffer[0])); end; end; destructor TMCIPlayer.Destroy; var GenericParms: TMCI_Generic_Parms; FFlags: Longint; begin if FDeviceID<>0 then begin GenericParms.dwCallback:=0; FFlags:=MCI_WAIT; if mciSendCommand(FDeviceID, MCI_CLOSE, FFlags, Longint(@GenericParms))=0 then FDeviceID:=0; end; inherited Destroy; end; procedure TMCIPlayer.Play; var PlayParms: TMCI_Play_Parms; FFlags: Longint; begin if FDeviceID<>0 then begin FFlags:=MCI_NOTIFY; PlayParms.dwCallback:=0; PlayParms.dwFrom:=0; PlayParms.dwTo:=0; mciSendCommand(FDeviceID, MCI_PLAY, FFlags, Longint(@PlayParms)); end; end; procedure TMCIPlayer.Stop; var GenericParms: TMCI_Generic_Parms; FFlags: Longint; begin if FDeviceID<>0 then begin FFlags:=MCI_WAIT; GenericParms.dwCallback:=0; mciSendCommand(FDeviceID, MCI_STOP, FFlags, Longint(@GenericParms)); end; end; ну и дальше: Код:
TMCIPlayer.Create('c:\Windows\Media\flourish.mid').Play; .. TMCIPlayer.Create('c:\Windows\Media\Windows Ringin.wav').Play; не забывая разрушать объекты. Пишу программы за еду. __________________ |