Розділ II. Розробка проекту

 

Опис програми

Постановка завдання:

Необхідно написати програму, яка буде являти собою електронний синтезатор. Також, для спрощення роботи з програмою, необхідно створити інтуїтивно зрозумілий інтерфейс. Також у програмі має бути змога змінити тон мелодії.

Опис:

Дана програма («Синтезатор») являє собою синтезатор у електронному вигляді. Вона дає змогу грати мелодії як це можна робити на справжньому синтезаторі, але за допомогою клавіатури комп’ютера.

Програма створювалась в навчальних цілях і тому не є досконалою, але вона зможе зацікавити багатьох людей. У ній є можливість змінити тон мелодії. Також можна переглянути інструкцію і дізнатись яка клавіша на клавіатурі комп’ютера відповідає клавіші на синтезаторі.

 

Мал. 1 Вигляд програми «Синтезатор»

Використані компоненти

Button- являє собою стандартну кнопку windows, ініціює якусь дію.

ADOConnection- використовується для з'єднання з різними джерелами ADO і

являє собою версію об'єкта ADO Connection для Delphi.

астосування компонента ADOConnection дає розробнику ряд переваг:

- всі компоненти доступу до даних ADO звертаються до сховища даних через одне з'єднання;

- можливість безпосередньо задати об'єкт провайдера з'єднання;

- рядок підключення зберігається в одному місці, замість того щоб зберігатися в декількох

- різних компонентах;виконання транзакцій;

- можливість виконувати команди ADO;

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

ADOQuery -забезпечує застосування запитів SQL при роботі з даними через ADO. За своєю функціональністю він подібний стандартному компоненту запиту.

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

ADOTable- забезпечує використання в додатках Delphi таблиць БД, підключених через провайдери OLE DB. За своїми функціональними можливостями і застосуванню він подібний стандартному табличному компоненту.

ImageList- являє собою набір зображень однакових розмірів, на які можна посилатися за індексами, що починається з 0. У багатьох розглянутих раніше компонентах (меню, списках тощо) зустрічалися властивості, що представляють собою посилання на компонент ImageList.Цей компонент дозволяє організувати ефективне і економне управління безліччю піктограм і бітових матриць.

 

DBEdit – пов'язаний з даними аналог звичайного вікна редагування Edit. Він дозволяє відображати і редагувати дані полів різних типів: рядок, число, булева величина.

DBGrid- призначений для перегляду і редагування всіх записів пов'язаного з ним набору даних в розгорнутому вигляді. Дані структуровані в табличному форматі, уявлення полів і розташування колонок залежить від значень властивостей компонентів типу TField набору даних.

Label- мітка. Цей компонент використовується для розміщення у вікні не дуже довгих однорядкових написів.

Edit - рядок введення. Призначена для вводу, відображення або редагування однієї текстового рядка.

Panel - цей компонент - панель - є несучою конструкцією для розміщення інших елементів управління. На відміну від простої рамки (TBevel) панель сама є віконним елементом управління і батьком для всіх розміщених на ній компонентів. Часто її використовують для створення панелей інструментів, рядків стану і т. п.

SpeedButton - піктографічним кнопка. Зазвичай використовується для швидкого доступу до тих чи інших опцій головного меню.

Image - малюнок. Цей компонент призначений для відображення малюнків, в тому числі піктограм і метафайлів.

Для більш приємного зовнішнього вигляду програми було використано

Компонент XPManifest.

Опис процедур програми:

В нижче приведеному фрагменті коду є оператори, що дозволяють програти мелодію, інтерфейс (див. мал. 2.).

begin

Pause := false;

Stop := false;

Player.Visible := true;

BPM := 350;

Instrument := '00';

Melodie;

Melodie;

Player.Visible := false;

end;

Мал. 2. Можливість програти готову мелодію

 

Перехід до інструкції (Мал. 3.)

begin

Form2.Show;

end;

Мал. 3. Перегляд інструкції

 

Перехід до форми Про програму (Мал. 4.)

begin

About.Show;

end;

Мал. 4. Інформація про розробника

 

Зміна тону мелодії (Мал. 5.)

var

InstrumentINT: integer;

begin

lblInstrument.Caption := IntToStr(UpDown1.Position);

if Length(lblInstrument.Caption)=1 then lblInstrument.Caption := '0' + lblInstrument.Caption;

Instrument := lblInstrument.Caption;

end;

Мал. 5. Можливість змінити тон мелодії

 

Гарячі клавіші на клавіатурі (Мал. 3.)

type

TKeys = Record

Key : Word;

Note : string;

Down: boolean;

end;

 

var

// Налаштування параметрів клавіатури QWERTY (Ля2->Mi4)

Keys: Array[0..19] of TKeys =(

// Клавіші клавіатури:

(Key:81; Note:'La2'; Down:false), // q

(Key:87; Note:'Si2'; Down:false), // w

(Key:69; Note:'Do3'; Down:false), // e

(Key:82; Note:'Re3'; Down:false), // r

(Key:84; Note:'Mi3'; Down:false), // t

(Key:89; Note:'Fa3'; Down:false), // y

(Key:85; Note:'Sol3'; Down:false), // u

(Key:73; Note:'La3'; Down:false), // i

(Key:79; Note:'Si3'; Down:false), // o

(Key:80; Note:'Do4'; Down:false), // p

(Key:219; Note:'Re4'; Down:false), // [

(Key:221; Note:'Mi4'; Down:false), // ]

 

(Key:65; Note:'La2d'; Down:false), // a

(Key:68; Note:'Do3d'; Down:false), // d

(Key:70; Note:'Re3d'; Down:false), // f

(Key:72; Note:'Fa3d'; Down:false), // h

(Key:74; Note:'Sol3d'; Down:false), // j

(Key:75; Note:'La3d'; Down:false), // k

(Key:186; Note:'Do4d'; Down:false), // ;

(Key:222; Note:'Re4d'; Down:false) // '

);

 

 

implementation

 

end.

 

Ноти всіх клавіш

type

TNotes = Record

Note : string;

SonMidi : string;

Down : boolean;

end;

 

var

Notes: Array[0..60] of TNotes =(

 

(Note:'Do1'; SonMidi:'24'; Down: false;),

(Note:'Do1d'; SonMidi:'25'; Down: false;),

(Note:'Re1'; SonMidi:'26'; Down: false;),

(Note:'Re1d'; SonMidi:'27'; Down: false;),

(Note:'Mi1'; SonMidi:'28'; Down: false;),

(Note:'Fa1'; SonMidi:'29'; Down: false;),

(Note:'Fa1d'; SonMidi:'2A'; Down: false;),

(Note:'Sol1'; SonMidi:'2B'; Down: false;),

(Note:'Sol1d'; SonMidi:'2C'; Down: false;),

(Note:'La1'; SonMidi:'2D'; Down: false;),

(Note:'La1d'; SonMidi:'2E'; Down: false;),

(Note:'Si1'; SonMidi:'2F'; Down: false;),

 

(Note:'Do2'; SonMidi:'30'; Down: false;),

(Note:'Do2d'; SonMidi:'31'; Down: false;),

(Note:'Re2'; SonMidi:'32'; Down: false;),

(Note:'Re2d'; SonMidi:'33'; Down: false;),

(Note:'Mi2'; SonMidi:'34'; Down: false;),

(Note:'Fa2'; SonMidi:'35'; Down: false;),

(Note:'Fa2d'; SonMidi:'36'; Down: false;),

(Note:'Sol2'; SonMidi:'37'; Down: false;),

(Note:'Sol2d'; SonMidi:'38'; Down: false;),

(Note:'La2'; SonMidi:'39'; Down: false;),

(Note:'La2d'; SonMidi:'3A'; Down: false;),

(Note:'Si2'; SonMidi:'3B'; Down: false;),

 

(Note:'Do3'; SonMidi:'3C'; Down: false;),

(Note:'Do3d'; SonMidi:'3D'; Down: false;),

(Note:'Re3'; SonMidi:'3E'; Down: false;),

(Note:'Re3d'; SonMidi:'3F'; Down: false;),

(Note:'Mi3'; SonMidi:'40'; Down: false;),

(Note:'Fa3'; SonMidi:'41'; Down: false;),

(Note:'Fa3d'; SonMidi:'42'; Down: false;),

(Note:'Sol3'; SonMidi:'43'; Down: false;),

(Note:'Sol3d'; SonMidi:'44'; Down: false;),

(Note:'La3'; SonMidi:'45'; Down: false;),

(Note:'La3d'; SonMidi:'46'; Down: false;),

(Note:'Si3'; SonMidi:'47'; Down: false;),

 

(Note:'Do4'; SonMidi:'48'; Down: false;),

(Note:'Do4d'; SonMidi:'49'; Down: false;),

(Note:'Re4'; SonMidi:'4A'; Down: false;),

(Note:'Re4d'; SonMidi:'4B'; Down: false;),

(Note:'Mi4'; SonMidi:'4C'; Down: false;),

(Note:'Fa4'; SonMidi:'4D'; Down: false;),

(Note:'Fa4d'; SonMidi:'4E'; Down: false;),

(Note:'Sol4'; SonMidi:'4F'; Down: false;),

(Note:'Sol4d'; SonMidi:'50'; Down: false;),

(Note:'La4'; SonMidi:'51'; Down: false;),

(Note:'La4d'; SonMidi:'52'; Down: false;),

(Note:'Si4'; SonMidi:'53'; Down: false;),

 

(Note:'Do5'; SonMidi:'54'; Down: false;),

(Note:'Do5d'; SonMidi:'55'; Down: false;),

(Note:'Re5'; SonMidi:'56'; Down: false;),

(Note:'Re5d'; SonMidi:'57'; Down: false;),

(Note:'Mi5'; SonMidi:'58'; Down: false;),

(Note:'Fa5'; SonMidi:'59'; Down: false;),

(Note:'Fa5d'; SonMidi:'5A'; Down: false;),

(Note:'Sol5'; SonMidi:'5B'; Down: false;),

(Note:'Sol5d'; SonMidi:'5C'; Down: false;),

(Note:'La5'; SonMidi:'5D'; Down: false;),

(Note:'La5d'; SonMidi:'5E'; Down: false;),

(Note:'Si5'; SonMidi:'5F'; Down: false;),

 

(Note:'Do6'; SonMidi:'60'; Down: false;)

);

 

implementation

 

end.

 

Висновки

Мова програмування Delphi дуже широко використовується і має дуже велику кількість розроблених елементів та засобів, що значно полегшують розробку додатків. У Delphi, використовується багато передових ідей і концепцій, закладених в графічному інтерфейсі Windows. У середовищі програмування Delphi є всі необхідні інструменти для того, щоб створювати повноцінні програми. Писати, компілювати і тестувати програму – все це можна робити, не виходячи з Delphi.

Завдяки можливості вбудови в програму ассемблерних вставок, програміст отримує змогу створювати програми з інтерфейсом Windows та дуже високою швидкодією, характерною для низькорівневих мов програмування.

Ця програма («Синтезатор») дуже легка у своєму використанні і нею може користуватися людина з малими навичками роботи з комп’ютером.

До переваг програми можна віднести приємний на вигляд і інтуїтивно зрозумілий інтерфейс, можливість програти готову мелодію, яка може послужити мотивацією, можливість скористатися інструкцією для швидшого вивчення клавіш, мінімальна затрата ресурсів компютера.

Недоліками програми є те що вона не дає змогу записати і зберегти мелодію, яку грає користувач.