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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2011, 13:23   #1
mactepmac
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 31
По умолчанию Фоновый звук при выполнении

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MMSystem;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   PlaySound('wav\1.wav', 0, SND_ASYNC);

   PlaySound('wav\2.wav', 0, SND_ASYNC);


end;

end.

Проблема в следующем. Сначала начинает воспроизводится 1.wav. После того как программа начинает воспроизводить 2.wav воспроизведение 1.wav прекращается. Нужно чтобы 1.wav все время звучал и последующие воспроизведения звуков не прекращали воспроизведение 1.wav
mactepmac вне форума Ответить с цитированием
Старый 11.07.2011, 19:16   #2
mactepmac
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 31
По умолчанию

Неужели никто не знает как это сделать?
mactepmac вне форума Ответить с цитированием
Старый 11.07.2011, 20:39   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вам необходимо создать два (независимых) звуковых потока.
А, у Вас в коде один.
Поэтому все время будет звучать одна мелодия.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 11.07.2011, 22:02   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Проиграть 2 звука одновременно
Код:
uses
  MMSystem;

procedure SendMCICommand(Cmd: string);
var
  RetVal: Integer;
  ErrMsg: array[0..254] of char;
begin
  RetVal := mciSendString(PChar(Cmd), nil, 0, 0);
  if RetVal <> 0 then
  begin
    mciGetErrorString(RetVal, ErrMsg, 255);
    MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SendMCICommand('open waveaudio shareable');
  SendMCICommand('play "wav\1.wav"');
  SendMCICommand('play "wav\2.wav"');
  SendMCICommand('close waveaudio');
end;
Либо сделай на Bass.dll

Последний раз редактировалось Aliens_wolfs; 11.07.2011 в 22:17.
Aliens_wolfs вне форума Ответить с цитированием
Старый 11.07.2011, 22:55   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот приблизительно так :


В принципе мой вариант очень похож на вариант Aliens_wolfs.

Лучше все таки Bass.dll (преимущество возможность проигрывать mp3 они меньше места занимают)

Вот почитайте для общего развития
Вложения
Тип файла: rar Saun.rar (1.86 Мб, 12 просмотров)

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

Последний раз редактировалось volod3000; 11.07.2011 в 23:09.
volod3000 вне форума Ответить с цитированием
Старый 11.07.2011, 23:52   #6
antonn
Пользователь
 
Регистрация: 17.05.2011
Сообщений: 24
По умолчанию

Цитата:
Лучше все таки Bass.dll (преимущество возможность проигрывать mp3 они меньше места занимают)
куда большее преимущество его в том, что он может проиграть звук из Tstream, т.е. из памяти, а не с диска
antonn вне форума Ответить с цитированием
Старый 12.07.2011, 00:32   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Примеров по Bass в интернете много, да и на этом форуме тоже есть интересные примеры, воспользуйся поисковиком.
Aliens_wolfs вне форума Ответить с цитированием
Старый 12.07.2011, 05:50   #8
mactepmac
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 31
По умолчанию

ок спс за инфу. про bass.dll пока не в теме. буду рыть
mactepmac вне форума Ответить с цитированием
Старый 12.07.2011, 09:57   #9
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

глобальные переменные
Код:
var 
  Chan1: dword = 0; // первый поток (1.wav)
  Chan2: Dword = 0; // второй поток (2.wav)
При креате формы
Код:
if not BASS_Init(-1, 44100, BASS_DEVICE_SPEAKERS, Handle, nil) then
begin
  ShowMessage('Bass not Init');
  Halt;
end;
При дестрое формы
Код:
bass_free;
в обработчике каком нить
Код:

{если файлы будут меняться то, нужно завершать потоки}
bass_streamfree(chan1);
bass_streamfree(chan2);

chan1:=bass_streamcreatefile(false, pchar('wav\1.wav'), 0,0, {$ifdef unicode} bass_unicode {$else} 0 {$endif} or bass_sample_loop {этот флаг означает что файл будет играть вечно});

chan2:=bass_streamcreatefile(false, pchar('wav\2.wav'), 0,0, {$ifdef unicode} bass_unicode {$else} 0 {$endif});

bass_channelplay(false, chan1);
bass_channelplay(false, chan2);

{если нужно регулировать громкость}
bass_channelsetattrib(chan1, bass_attrib_volume, 0.5); // 50% громкости
вот и весь код.

P.S. писал на форуме, так что могут быть ошибки
ZuBy вне форума Ответить с цитированием
Старый 12.07.2011, 10:27   #10
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сам компонент Bass можно скачать от сюда
http://www.delphiexpert.ru/view_download.php?id=90

Последний раз редактировалось Aliens_wolfs; 12.07.2011 в 10:36.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении запроса dima_r SQL, базы данных 6 14.04.2011 17:47
Ошибка при выполнении 123cmp Помощь студентам 4 22.01.2011 23:45
Try и except при выполнении запроса с ошибкой Droid БД в Delphi 4 17.04.2010 19:10
Ошибка при Выполнении Insert nimf БД в Delphi 2 27.11.2007 18:16
при нажатии на кнопку менялся фоновый рисунок рабочего стола? shtuceron Win Api 6 03.11.2007 19:36