Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.12.08;
Скачать: CL | DM;

Вниз

Как сделать повтор звука в компоненте MediaPlayer?   Найти похожие ветки 

 
salamander ©   (2009-02-03 17:45) [0]

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


 
salamander ©   (2009-02-03 17:47) [1]

Т.е. я выбрал нужную радиокнопку и один раз нажимаю на кнопку "повторить" и звук должен повторяться, пока я не нажму "стоп"


 
salamander ©   (2009-02-03 17:47) [2]

Т.е. я выбрал нужную радиокнопку и один раз нажимаю на кнопку "повторить" и звук должен повторяться, пока я не нажму "стоп"


 
Сергей М. ©   (2009-02-03 19:29) [3]


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


Никак.


 
salamander ©   (2009-02-04 00:36) [4]

А если не в компоненте?


 
{RASkov} ©   (2009-02-04 09:37) [5]

Посмотри на:
http://www.delphisources.ru/pages/faq/base/infinite_play_avi.html
Хотя не совсем понятно про "повторять звук при нажатии кнопки"


 
Дуб ©   (2009-02-04 09:42) [6]


> Хотя не совсем понятно про "повторять звук при нажатии кнопки"

2 режима воспроизведения ему надо. Непрерывный и одноразовый. И чтобы их можно было менять по ходу пьесы.


 
{RASkov} ©   (2009-02-04 10:01) [7]

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

> [6] Дуб ©   (04.02.09 09:42)

Тогда ему необходимо в код примера по ссылке вставить первой примерно такую строку:
if (НЕ нажата кнопка) and ((выбран НЕ определенный radiobutton) or (НЕ выбран определенный radiobutton)) then Exit;)


 
salamander ©   (2009-02-04 11:51) [8]

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


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


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


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

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

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


 
salamander ©   (2009-02-04 14:04) [10]


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

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

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 16:13) [11]


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


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

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

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

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


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


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


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


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

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


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


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


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


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

Все исправил, но при нажатии кнопки повторнить-повторяет только 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) [15]

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.


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


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

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


 
salamander ©   (2009-02-04 16:38) [17]


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

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


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


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


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


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



> RadioButton12Click


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

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


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

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


 
salamander ©   (2009-02-04 17:12) [20]

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


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


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

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


 
salamander ©   (2009-02-04 17:13) [21]

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


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


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


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


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


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


 
salamander ©   (2009-02-04 17:29) [23]

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


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


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


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

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

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


 
salamander ©   (2009-02-05 11:14) [25]

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


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


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


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


 
brother ©   (2009-02-05 12:30) [27]

> 6_E3.mid";

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



Страницы: 1 вся ветка

Текущий архив: 2013.12.08;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.007 c
15-1371457959
Sergey Masloff
2013-06-17 12:32
2013.12.08
И опять про ЕГЭ


15-1371536120
Dimka Maslov
2013-06-18 10:15
2013.12.08
Почему же так


15-1370957500
EuSet
2013-06-11 17:31
2013.12.08
указание Out параметра зануляет переменную?


2-1361895211
Andrey869
2013-02-26 20:13
2013.12.08
Отправка письма на почту с несколькими компонентами


2-1361480816
ttt
2013-02-22 01:06
2013.12.08
Удаление спец. символов