Розділ 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 та дуже високою швидкодією, характерною для низькорівневих мов програмування.
Ця програма («Синтезатор») дуже легка у своєму використанні і нею може користуватися людина з малими навичками роботи з комп’ютером.
До переваг програми можна віднести приємний на вигляд і інтуїтивно зрозумілий інтерфейс, можливість програти готову мелодію, яка може послужити мотивацією, можливість скористатися інструкцією для швидшого вивчення клавіш, мінімальна затрата ресурсів компютера.
Недоліками програми є те що вона не дає змогу записати і зберегти мелодію, яку грає користувач.