Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2013.12.08;
Скачать: [xml.tar.bz2];

Вниз

Как сделать повтор звука в компоненте 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 вся ветка

Форум: "Media";
Текущий архив: 2013.12.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.003 c
15-1371673815
Юрий
2013-06-20 00:30
2013.12.08
С днем рождения ! 20 июня 2013 четверг


1-1319485472
vuk
2011-10-24 23:44
2013.12.08
class property и виртуальные методы


2-1361713536
HEND
2013-02-24 17:45
2013.12.08
Адресс элемента динамического массива


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский