Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать повтор звука в компоненте MediaPlayer?


Страницы:   1 2

salamander ©   (2009-02-03 17:45:00) 

Мне нужно повторять звук при нажатии кнопки и при выборе опредленной radiobutton.
Заранее благодарен.


brother   (2009-02-05 12:30:00) [1]

> 6_E3.mid';

для справки, midi не может быть эталоном звука, тк использует базу сэмплов) те на разных звуковухах будет звуать не одинаково)
рекомендую всеж найти wave записи...


Сергей М.   (2009-02-05 12:25:00) [2]


> мне надо САМОМУ сделать


А то что для камертона нужно обязательно использовать семплированный звук, это ты тоже САМ придумал ?)


salamander   (2009-02-05 11:14:00) [3]

Я говорил уже, что ошибься в названии. И зачем мне готовую качать, если мне надо САМОМУ сделать?


Сергей М.   (2009-02-04 19:53:00) [4]


> Скачал с инета


Ну так и скачай оттуда же готовую программу)

И не позорься уже: то что ты назвал "вроде тюнера", на самом деле называется камертоном.

Так что, если  твоя т.н. "проектная работа" связана именно с тюнингом, то ты вообще копаешь не в ту сторону)


salamander   (2009-02-04 17:29:00) [5]

Скачал с инета)
Возможности записать нету.


Сергей М.   (2009-02-04 17:24:00) [6]


> Стандартный midi и mp3 издает 4 звука одной струны


Они у тебя откуда взялись, эти midi и mp3 ?


> плохо слышится


Как запишешь, так и будет слышаться.


salamander   (2009-02-04 17:13:00) [7]

Точнее наоборот плохо слышится.


salamander   (2009-02-04 17:12:00) [8]

> Что ж тогда людям голову морочишь ?)
НЕ охота было заполнять анкету)


> > звучания шести струн и я выбираю с помощью радиобаттона
> > (всего их 6, как и струн на гитаре)


Да, у меня 12 струн. 6 звуков нейлоновых и 6 металлических.
Насчет EndPos. Стандартный midi и mp3 издает 4 звука одной струны, а с помощью
EndPos := TrackLength[1] div *midi и mp3 издают лишь один звук. Иначе говоря трэк обрезается на половину или на четверть. Вот.

Я знаю насчет waw, но он для настройки будет не очень хорошо, ибо нота не плохо слышится.


Сергей М.   (2009-02-04 17:06:00) [9]

Если отказаться от mid и mp3 в пользу wav, то гораздопроще и удобней для означенной цели использовать функцию PlaySound().


Сергей М.   (2009-02-04 16:56:00) [10]


> только на 2 курсе


Что ж тогда людям голову морочишь ?)


> звучания шести струн и я выбираю с помощью радиобаттона
> ( всего их 6, как и струн на гитаре)



> RadioButton 12Click


Судя по приведенному коду, у тебя аж 12 струн)

А что это за таинственные манипуляции с EndPos ?
И зачем повторять практически один и тот же код аж 12 раз ?


salamander   (2009-02-04 16:38:00) [11]


> Наверно он готовит магистров гитаронастроечных наук ?Так
> ты ж его закончил уже, судя по анкете ?)

Нет, только на 2 курсе)


salamander   (2009-02-04 16:38:00) [12]


> Наверно он готовит магистров гитаронастроечных наук ?Так
> ты ж его закончил уже, судя по анкете ?)

Нет, только на 2 курсе)


salamander   (2009-02-04 16:37:00) [13]

Все исправил, но при нажатии кнопки повторнить-повторяет только 4 раза((
Вот весь код программы.

unit MainUnit;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, MMSystem, MPlayer, Buttons, ExtDlgs, jpeg,
 Menus, ComCtrls;

type
 TForm1 = class(TForm)
   RadioGroup1: TRadioGroup;
   RadioButton1: TRadioButton;
   RadioButton2: TRadioButton;
   RadioButton3: TRadioButton;
   RadioButton4: TRadioButton;
   RadioButton5: TRadioButton;
   RadioButton6: TRadioButton;
   MediaPlayer1: TMediaPlayer;
   RadioGroup2: TRadioGroup;
   RadioButton7: TRadioButton;
   RadioButton8: TRadioButton;
   RadioButton9: TRadioButton;
   RadioButton10: TRadioButton;
   RadioButton11: TRadioButton;
   RadioButton12: TRadioButton;
   BitBtn1: TBitBtn;
   Image1: TImage;
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   N3: TMenuItem;
   StatusBar1: TStatusBar;
   procedure RadioButton1Click(Sender: TObject);
   procedure RadioButton2Click(Sender: TObject);
   procedure RadioButton3Click(Sender: TObject);
   procedure RadioButton4Click(Sender: TObject);
   procedure RadioButton5Click(Sender: TObject);
   procedure RadioButton6Click(Sender: TObject);
   procedure RadioButton7Click(Sender: TObject);
   procedure RadioButton8Click(Sender: TObject);
   procedure RadioButton9Click(Sender: TObject);
   procedure RadioButton10Click(Sender: TObject);
   procedure RadioButton11Click(Sender: TObject);
   procedure RadioButton12Click(Sender: TObject);
   procedure MediaPlayer1Notify(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  with MediaPlayer1 do
 begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\1_E5.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
 end;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
 with MediaPlayer1 do
 begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\2_H4.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
end;
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
with MediaPlayer1 do
 begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\3_G4.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
end;
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
 with MediaPlayer1 do
 begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\4_D4.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
end;
end;

procedure TForm1.RadioButton5Click(Sender: TObject);
begin
   with MediaPlayer1 do
 begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\5_A3.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
end;
end;

procedure TForm1.RadioButton6Click(Sender: TObject);
begin
    with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Ìåòàëëè÷& #229;ñêèå\6_E3.mid';
   Open;
   EndPos := TrackLength[1] div 4;
   Play;
end;
end;


salamander   (2009-02-04 16:37:00) [14]

procedure TForm1.RadioButton7Click(Sender: TObject);
begin
     with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\1E5.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.RadioButton8Click(Sender: TObject);
begin
      with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\2H4.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.RadioButton9Click(Sender: TObject);
begin
       with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\3G4.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.RadioButton10Click(Sender: TObject);
begin
     with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\4D4.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.RadioButton11Click(Sender: TObject);
begin
     with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\5A3.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.RadioButton12Click(Sender: TObject);
begin
      with MediaPlayer1 do
begin
   FileName := 'D:\Ïðîãðàììû äëÿ ñîôòà è ò.ä\Ïðîãðàììèðî âàíèå\Delphi 7\Projects\Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâ& #251;å\6E3.mp3';
   Open;
   EndPos := TrackLength[1] div 2;
   Play;
end;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
 with MediaPlayer1 do
   if NotifyValue = nvSuccessful then
   begin
     Notify := True;
     Play;
   end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
MediaPlayer1Notify(nil);
end;

end.


Сергей М.   (2009-02-04 16:29:00) [15]


> инст нормальный


Наверно он готовит магистров гитаронастроечных наук ?
Так ты ж его закончил уже, судя по анкете ?)


salamander   (2009-02-04 16:23:00) [16]

Мда, совсем я уже((
Нет, инст нормальный, но специальность не особо затрагивает область программирования. Хотя ошибка грубая.... Впредь буду осторожен)


Сергей М.   (2009-02-04 16:13:00) [17]


> разве не так вызываются процедуры?


Во-первых, это не просто регулярная процедура, а процедурный метод объекта.

Во-вторых, если в объявлении процедуры или метода присутствуют неумалчиваемые формальные параметры, то и при их вызове должны быть указаны фактические параметры соответствующего типа. Нарушение этого соглашения при компиляции как раз и приводит к той ошибке, которую ты лицезреешь.

procedure TForm1.MediaPlayer1Notify( Sender: TObject);// жирным выделен формальный параметр

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
MediaPlayer1Notify( ???); // а где же соответствующий ему фактический параметр ?
end;


В дан случае фактическим параметром можно указать nil


> наверное можно забирать документы из инста


Смотря из какого)
Если из арбузолитейного или заборостроительного, где Паскаль не преподают и не требуют его знания вообще, можно и не забирать.
В противном случае следовало бы над этим серьезно призадуматься)


salamander   (2009-02-04 14:04:00) [18]


> Тюнер должен иметь обратную связь - слушать звучание настраиваемого
> инструмента и подсказывать настройщику куда ему крутить
> вирбели..
Солгасен)) Это просто прога для настройки гитары.

Создаю процедуру, которая должна бесперерывно повторять звук

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
 with MediaPlayer1 do
   if NotifyValue = nvSuccessful then
   begin
     Notify := True;
     Play;
   end;
end;


Далее мне нужно, чтобы она выполнялась после нажатия кнопки. Я конечно всего год программирую на Делфи, но мне немного стыдно за себя. Почему при компиляции выдается ошибка, что якобы недостаточно параметров:
Смотрите:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 MediaPlayer1Notify();
end;


Возможно я не так делаю вовсе. Но разве не так вызываются процедуры?)
Если я не прав, наверное можно забирать документы из инста))

И насчёт свойства Notify. Честно говоря без понятия как сделать(
Я что-то пробовал, делал событие OnNotify в MediaPlayer,  привязывал к кнопке и по нажатию кнопки ничего не происходило.


Сергей М.   (2009-02-04 12:54:00) [19]


> salamander ©   (04.02.09 11:51) [8]


Тебе поможет св-во Notify и событие OnNotify.

Только какой же это тюнер ? Это просто позорная бухтелка получится)

Тюнер должен иметь обратную связь - слушать звучание настраиваемого инструмента и подсказывать настройщику куда ему крутить вирбели..


salamander   (2009-02-04 11:51:00) [20]

Я делаю проектную работу и мне надо сделать что-то вроде тюнера для гитары. Т.е. имеются звучания шести струн и я выбираю с помощью радиобаттона (всего их 6, как и струн на гитаре) нужную струну и слышится звук. Мне нужна функция повтора или что-то вроде этого. т.е. при выделении нужной струны (радиобаттона) этот звук слышился не один раз и повторялся до тех пор, пока я не отключу этот повтор.
Я пробовал использовать repeat until, но толку мало было, звук вообще щипеть начинал.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо