Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

как вывести данные, когда играет музыка [D1, WinXP]


leon2009sp   (13.03.23 19:23

Здравствуйте! вывожу данные так:
procedure TForm1.OpenMedia(WaveFile: string);
var
MyOpenParms: TMCI_Open_Parms;
begin
with MyOpenParms do
begin
 dwCallback := Handle; // TForm1.Handle
 lpstrDeviceType := PChar('WaveAudio');
 lpstrElementName := PChar(WaveFile);
end; {with MyOpenParms}
dwFlags := MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_TYPE;
MyError := mciSendCommand(0, MCI_OPEN, dwFlags, Longint(@MyOpenParms));
// one could use mciSendCommand(DevId, here to specify a particular device
if MyError = 0 then
 FDeviceID := MyOpenParms.wDeviceID
else
 raise Exception.Create('Open Failed');
end;

function TForm1.GetStatus(StatusRequested: DWORD): Longint;
var
MyStatusParms: TMCI_Status_Parms;
begin
dwFlags := MCI_WAIT or MCI_STATUS_ITEM;
with MyStatusParms do
begin
 dwCallback := Handle;
 dwItem := StatusRequested;
end;
MyError := mciSendCommand(FDeviceID, MCI_STATUS, MCI_WAIT or MCI_STATUS_ITEM, Longint(@MyStatusParms));
if MyError = 0 then
 Result := MyStatusParms.dwReturn
else
 raise Exception.Create('Status call to get status of ' +  IntToStr(StatusRequested) + ' Failed');
end;

procedure TForm1.CloseMedia;
var
MyGenParms: TMCI_Generic_Parms;
begin
if FDeviceID > 0 then
begin
 dwFlags := 0;
 MyGenParms.dwCallback := Handle; // TForm1.Handle
 MyError := mciSendCommand(FDeviceID, MCI_CLOSE, dwFlags, Longint(@MyGenParms));
 if MyError = 0 then
 FDeviceID := 0
 else
 begin
 raise Exception.Create('Close Failed');
 end;
end;
end;

получаю:
OpenMedia('000.wav');
SampleCount:=(GetStatus(MCI_WAVE_STATUS_AVGBYTESPERSEC));
BitsPerSample:=(GetStatus(MCI_WAVE_STATUS_BITSPERSAMPLE));
SamplesPerSec:=(GetStatus(MCI_WAVE_STATUS_SAMPLESPERSEC));
Channeles:=(GetStatus(MCI_WAVE_STATUS_CHANNELS));
CloseMedia;
memo1.Lines.Add(inttostr(SampleCount));
memo1.Lines.Add(inttostr(BitsPerSample));
memo1.Lines.Add(inttostr(SamplesPerSec));
memo1.Lines.Add(inttostr(Channeles));

как получить данные когда играет звук, а не сразу.
т.к. хочу разделить: если играет скрипка то в мемо(скрипка), если барабан, то мемо(барабан).
я хотя бы возможные вещи прошу? D11


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо