![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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', получишь именно то, что ищешь.
|
|
#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 удобнее. Хотя для мелочи и команды Внды подойдут.
|
|
#11
|
|||
|
|||
|
Да ну как для мелочи...
- Нужно включить воспроизведение фоновой музыки под циклом. - Воспроизводить короткие звуковые сигналы под видом когда наводишь курсор на кнопку, убираешь курсор, нажимаешь на кнопку. Загрузку CPU он грузит с BASS кода, да? Label1.Caption := 'CPU% ' + FloatToStrF(BASS_GetCPU, ffFixed, 4, 2); |
|
#12
|
||||
|
||||
|
Попробуй этот файл, только дополнительно требуется bass.dll
Этот файл грузит проц на 0.5% при 2 песнях. 4 песни загрузили на 1% Последний раз редактировалось 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;не забывая разрушать объекты. |