![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать повтор звука в компоненте MediaPlayer?
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, но толку мало было, звук вообще щипеть начинал.