Як зробити повторення звуку в компоненті MediaPlayer

Мені потрібно повторювати звук при натисканні кнопки та при виборі певної радіоbutton. Наперед вдячний.

Тобто. я вибрав потрібну радіокнопку і один раз натискаю кнопку "повторити" і звук повинен повторюватися, поки я не натисну "стоп"

Тобто. я вибрав потрібну радіокнопку і один раз натискаю кнопку "повторити" і звук повинен повторюватися, поки я не натисну "стоп"

> Як зробити повторення звуку в компоненті MediaPlayer?

А якщо не в компоненті?

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

> Хоча не зовсім відомо про "повторювати звук при натисканні кнопки"2 режиму відтворення йому треба. Безперервний та одноразовий. І щоб їх можна було міняти під час п'єси.

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

Тобі допоможе св-во Notify та подія OnNotify.

Тільки який же це тюнер? Це просто ганебна бухтелка вийде)

Тюнер повинен мати зворотний зв'язок - слухати звучання настроюваного інструменту і підказувати налаштуванню куди йому крутити вірбелі.

> Тюнер повинен мати зворотний зв'язок - слухати звучання > інструменту та підказувати налаштувачу куди йому крутити > вірбелі..Солгасен)) Цепросто прога для налаштування гітари.

Створюю процедуру, яка повинна безперервно повторювати звук

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

Далі мені потрібно, щоб вона виконувалася після натискання кнопки. Я звичайно всього рік програмую на Делфі, але мені трохи соромно за себе. Чому при компіляції видається помилка, що нібито замало параметрів: Дивіться:

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

Можливо, я не так роблю зовсім. Але хіба не так викликаються процедури?) Якщо я не прав, напевно можна забирати документи з інста))

І щодо якості Notify. Чесно кажучи без поняття як зробити ( Я щось пробував, робив подію OnNotify в MediaPlayer, прив'язував до кнопки і натискання кнопки нічого не відбувалося.

> хіба не так викликаються процедури?

По-перше, це просто регулярна процедура, а процедурний метод об'єкта.

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

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

У цьому випадку фактичним параметром можна вказати nil

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

Дивлячись з якого) Якщо з арбузолітійного або заборобудівного, де Паскаль не викладають і не вимагають його знання взагалі, можна і не забирати.

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

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

Все виправив, але при натисканні кнопки повторно-повторює тільки 4 рази(( Ось весь код програми).

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); процес RadioButton6Click(Sender: TObject); procedure RadioButton7Click(Sender: TObject); процес RadioButton8Click(Sender: TObject); procedure RadioButton9Click(Sender: TObject); procedure RadioButton10Click(Sender: TObject); procedure RadioButton11Click(Sender: TObject); procedure RadioButton12Click(Sender: TObject); procedure MediaPlayer1Notify(Sender: TObject); procedureBitBtn1Click(Відправник: TObject); приватний < Приватні декларації > публічний < Публічні заяви > кінець;

var Форма1: TForm1;

procedure TForm1.RadioButton1Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для софта и т.д\Программиро вание\Delphi 7\Projects\ Звучання струн\Звучанія струн\Металліч& #229;скіе\1_E5.mid"; Відкритий; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

procedure TForm1.RadioButton2Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для софта и т.д\Программирование\Delphi 7\Projects\ Звучання струн\Звучання струн\Металлич& #229;ские\2_H4.mid"; Відкритий; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

procedure TForm1.RadioButton3Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для софта и т.д\Программиро вание\Delphi 7\Projects\ Звучання струн\Звучанія струн\Металлич& #229;ские\3_G4.mid"; Відкритий; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

procedure TForm1.RadioButton4Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для программного обеспечения и т.д\Программиро вание\Delphi 7\Projects\ Звучання струн\Звучанія струн\Металлич& #229;ские\4_D4.mid"; Відкритий; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

procedure TForm1.RadioButton5Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для софта и т.д\Программиро вание\Delphi 7\Projects\ Звучання струн\Звучання струн\Металлич& #229;ские\5_A3.mid"; Відкритий; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

процедура TForm1.RadioButton6Click(Відправник:TObject); begin with MediaPlayer1 do begin FileName := "D:\Программы для софта и т.д\Программиро вание\Delphi 7\Projects\Звуканія струн\ Çâó÷ анія струн\Металліч& #229;скіе\6_E3.mid"; Відкрити; EndPos := TrackLength[1] div 4; Грати; кінець; кінець;

procedure TForm1.RadioButton7Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Програми для програмного забезпечення і т.д\Программіро вання\Delphi 7\Projects\ Звучання струн\Звучання струн\Нейлонов& #251;е\1E5.mp3"; Відкрити; EndPos := TrackLength[1] div 2; Грати; кінець; кінець;

procedure TForm1.RadioButton8Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Програми для програмного забезпечення і т.д\Программіро ваніе\Delphi 7\Projects\ Звучання струн\Звучання струн\Нейлонов& #251;е\2H4.mp3"; Відкрити; EndPos := TrackLength[1] div 2; Грати; кінець; кінець;

procedure TForm1.RadioButton9Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Програми для програмного забезпечення і т.д\Программіро ваніе\Delphi 7\Projects\ Звучання струн\Звучання струн\Нейлонов& #251;е\3G4.mp3"; Відкрити; EndPos := TrackLength[1] div 2; Грати; кінець; кінець;

procedure TForm1.RadioButton10Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Програми для програмного забезпечення і т.д\Программіро ваніе\Delphi 7\Projects\ Звучання струн\Звучання струн\Нейлонов& #251;е\4D4.mp3"; Відкрити; EndPos := TrackLength[1] div 2; Грати; кінець; кінець;

procedure TForm1.RadioButton11Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := "D:\Програми для програмного забезпечення і т.д\Программіро ваніе\Delphi 7\Projects\ Звучання струн\Звучання струн\Нейлонов& #251;е\5A3.mp3"; Відкрити; EndPos := TrackLength[1] div 2; Play; end; end;

procedure TForm1.RadioButton12Click (Sender: TObject); Çâó÷àíèÿ ñòðóí\Çâó÷àíèÿ ñòðóí\Íåéëîíîâûå\6E3.mp3"; Open; EndPos := TrackLength[1] div 2; Play; end; end;

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

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

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

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

Що ж тоді людям голову морочиш?)

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

Судячи з наведеного коду, у тебе аж 12 струн)

А що це за таємничі маніпуляції з EndPos? І навіщо повторювати практично один і той же код аж 12 разів?

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

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

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

Так, маю 12 струн. 6 звуків нейлонових та 6 металевих. Про EndPos. Стандартний midi та mp3 видає 4 звуки однієї струни, а за допомогою EndPos := TrackLength[1] div * midi і mp3 видають лише один звук. Інакше кажучи, трек обрізається на половину або на чверть. Ось.

Я знаю про waw, але він для налаштування буде не дуже добре, бо нота не погано чується.

Точніше навпаки погано чується.

> Стандартний midi та mp3 видає 4 звуки однієї струни

Вони в тебе звідки взялися, ці midi та mp3?

Як запишеш, так і чутиметься.

Скачав з инета) Можливості записати нема.

Ну так і скачай звідти готову програму)

І не ганьби вже: те, що ти назвав "на зразок тюнера", насправді називаєтьсякамертоном.

Тож якщо твоя т.зв. "проектна робота" пов'язана саме з тюнінгом, то ти взагалі копаєш не в той бік)

Я вже казав, що помилься в назві. І навіщо мені готову качати, якщо мені треба САМОМУ зробити?

> мені треба САМОМУ зробити

А те, що для камертону потрібно обов'язково використовувати семпльований звук, це ти теж САМ придумав?)

> 6_E3.mid";для довідки, midi не може бути еталоном звуку, тк використовує базу семплов) ті на різних звуковухах буде звучати не однаково) рекомендую все ж знайти wave записи.