Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: медиа плеер  (Прочитано 14663 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Весёлый
Гость
« : 27-02-2007 16:44 » 

помагите пожалуйста
както можно в медиа плеере регулировать громкость и положение воспроизведения не могу ни как найти
в книгах только обшие свединья. Для глухих
Записан
DemonicAlligator
Гость
« Ответ #1 : 01-03-2007 07:45 » 

в каком именно медиа плеере? их туева хуча Улыбаюсь
Записан
Весёлый
Гость
« Ответ #2 : 01-03-2007 12:58 » 

TMediaPlayer
Записан
DemonicAlligator
Гость
« Ответ #3 : 02-03-2007 11:09 » 

Код:
Unit MPVolume;
Interface
uses
  MPlayer;

function GetMPVolume(MP: TMediaPlayer): Integer;
procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);

Implementation
uses
  MMSystem;

const

  MCI_SETAUDIO = $0873;
  MCI_DGV_SETAUDIO_VOLUME = $4002;
  MCI_DGV_SETAUDIO_ITEM = $00800000;
  MCI_DGV_SETAUDIO_VALUE = $01000000;
  MCI_DGV_STATUS_VOLUME = $4019;

type
  MCI_DGV_SETAUDIO_PARMS = record
    dwCallback: DWORD;
    dwItem: DWORD;
    dwValue: DWORD;
    dwOver: DWORD;
    lpstrAlgorithm: PChar;
    lpstrQuality: PChar;
  end;

type

  MCI_STATUS_PARMS = record
    dwCallback: DWORD;
    dwReturn: DWORD;
    dwItem: DWORD;
    dwTrack: DWORD;
  end;

procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);
  { Volume 0 - 1000 !!!}
var
  MP_PARAMS: MCI_DGV_SETAUDIO_PARMS;
begin
  MP_PARAMS.dwCallback := 0;
  MP_PARAMS.dwItem := MCI_DGV_SETAUDIO_VOLUME;
  MP_PARAMS.dwValue := Volume;
  MP_PARAMS.dwOver := 0;
  MP_PARAMS.lpstrAlgorithm := nil;
  MP_PARAMS.lpstrQuality := nil;
  mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
    MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@MP_PARAMS));
end;

function GetMPVolume(MP: TMediaPlayer): Integer;
var
  MP_PARAMS: MCI_STATUS_PARMS;
begin
  MP_PARAMS.dwCallback := 0;
  MP_PARAMS.dwItem := MCI_DGV_STATUS_VOLUME;
  mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@MP_PARAMS));
  Result := MP_PARAMS.dwReturn;
end;

end.
« Последнее редактирование: 02-03-2007 11:13 от Синий Аллигатор » Записан
Весёлый
Гость
« Ответ #4 : 03-03-2007 06:30 » 

можно ли как-то вывести в Progresbar уровень записи в данный момент?
Записан
DemonicAlligator
Гость
« Ответ #5 : 05-03-2007 09:14 » 

GetMPVolume выдаёт текущую громкость (0..1000), ставишь для прогрессбара мин=0, макс=1000 и рулишь позицией
Записан
Весёлый
Гость
« Ответ #6 : 06-03-2007 16:04 » 

когда я пишу: progressbar1.Position:=getmpvolume;
он мне выводит ОШИБКУ undeclared imdentifier 'getmpvolume'!
ЧТО ДЕЛАЮ НЕ ПРАВИЛЬНО, МОЖЕТ ЧТОТО НЕ ОБЪЯВИЛ?
Записан
DemonicAlligator
Гость
« Ответ #7 : 07-03-2007 07:18 » 

Камлать надо правильно, с правильными мухоморами Улыбаюсь
Эта процедура в том юните, что я выше привёл Улыбаюсь
« Последнее редактирование: 07-03-2007 07:32 от Синий Аллигатор » Записан
Весёлый
Гость
« Ответ #8 : 07-03-2007 15:33 » 

нет это не то я имел ввыду чтобы отображалось как в винапе где по частотам разбиты
во время звучания музыки они прыгают, можно ли осушествить это в делфи?
спасибо за регулятор громкости работает супер!!!
Записан
DemonicAlligator
Гость
« Ответ #9 : 12-03-2007 09:51 » 

это называеца спектр сигнала. можно. для этого тебе надо всего-лишь анализировать выходной звуковой сигнал с помошью FFT Улыбаюсь
Записан
Весёлый
Гость
« Ответ #10 : 06-05-2007 04:41 » 

с помошью FFT?! я не понял! я еше новичек в этом деле .
Записан
DemonicAlligator
Гость
« Ответ #11 : 07-05-2007 12:35 » 

FFT = Fast Fourier Transformation, Быстрое Преобразование Фурье = разложение сигнала по уровням
Записан
Весёлый
Гость
« Ответ #12 : 11-05-2007 14:32 » 

а где это описать?
это отдельная процедура?
как это сделать?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 11-05-2007 16:47 » 

Весёлый, кратко о FFT: семплированный сигнал представляет из себя вектор значений амплитуды по времени, а FFT переводит его в вектор комплексных величин по частоте.

Комплексная величина состоит из значений синуса и косинуса для начальной фазы сигнала в семпле на данной частоте. Из этих комплексных величин можно получить начальную фазу и амплитуду каждой частоты. Из этого результата можно потом назад собрать исходный сигнал.

Если FFT выполняется по N исходных значений семпла, то на выходе получаем значения для N/2 частот и еще одно значение для постоянной состовляющей.

Прочесть о цифровой обработке сигналов можно тут: http://www.dspguide.com/

Если попроще, то найди какую-нибудь бтблиотеку, реализующую FFT.


Для более простых условий, когда не нужно разкладывать сигнал на спектр, нужно лишь получить амплитуду на  небольшом наборе частот, существует алгоритм Goertzel.
« Последнее редактирование: 11-05-2007 16:49 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Весёлый
Гость
« Ответ #14 : 09-06-2007 14:13 » 

Привет. объясните как в delphi подключать библиотеки и как с нимим работать?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 09-06-2007 14:33 » 

Посредством use.
А чтоб с ними работать, нужно читать документацию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines