Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Список використаних джерел. 2. Assembler. Підручник для вузів




1. Delphi 7 / під заг. ред. А.Д. Хомоненко. - СПб.: БХВ-Петербург, 2007. - 1216 с.

2. Assembler. Підручник для вузів. 2-е изд. - СПб.: Питер, 2007. - 637с.

3. Архангельський А.Я. Прийоми програмування в Delphi на основі VCL. - М.: «Біном-Пресс», 2006 р. - 944 с.

4. Флен М.Є. Біблія Delphi. - СПб.: БХВ-Петербрг, 2004. - 880 с.

5. Стівенс Р. Delphi. Готові алгоритми / Рід Стівенс; Пер. з англ. Мерещука П.А. - 2-е изд., Стер. - М.: ДМК Пресс; СПб.: Питер, 2004. - 384 с.: Іл.

6. «Програмування в Delphi 7», електронний посібник, Є. Марков,
П. Дарахвелидзе

7. С. Симонов, Delphi 7 навчальний курс, вид. Пітер, 2005 р.

8. В. В. Фролов - Delphi програмування на мові високого рівня

Додаток А

Лістинг програми

unit Aide_Clavier;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, jpeg, ExtCtrls, StdCtrls;

 

type

TForm2 = class(TForm)

GroupBox1: TGroupBox;

Image1: TImage;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

Label13: TLabel;

GroupBox5: TGroupBox;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

GroupBox6: TGroupBox;

Label22: TLabel;

Label23: TLabel;

GroupBox7: TGroupBox;

Label1: TLabel;

Label2: TLabel;

GroupBox8: TGroupBox;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

GroupBox9: TGroupBox;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

procedure FormCreate(Sender: TObject);

private

{ Dclarations prives }

public

{ Dclarations publiques }

end;

 

var

Form2: TForm2;

 

implementation

 

{$R *.dfm}

 

procedure TForm2.FormCreate(Sender: TObject);

begin

 

end;

 

end.

unit Clavier_AZERTY;

 

interface

 

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.

unit Main;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, jpeg,

mmSystem, Clavier_AZERTY, Musiques, Notes_Midi, Menus, ToolWin, ActnMan,

ActnCtrls, ActnMenus, Buttons, Aide_Clavier, pngimage, XPMan;

 

type

TForm1 = Class(TForm)

Systeme: TPanel;

imgSysteme: TImage;

imgDo1: TImage;

imgMi1: TImage;

imgRe1: TImage;

imgFa1: TImage;

imgSol1: TImage;

imgLa1: TImage;

imgSi1: TImage;

imgDo2: TImage;

imgRe2: TImage;

imgMi2: TImage;

imgFa2: TImage;

imgSol2: TImage;

imgLa2: TImage;

imgSi2: TImage;

imgDo3_2: TImage;

imgDo3_1: TImage;

imgRe3: TImage;

imgMi3: TImage;

imgFa3: TImage;

imgSol3: TImage;

imgLa3: TImage;

imgSi3: TImage;

imgDo4: TImage;

imgRe4: TImage;

imgMi4: TImage;

Image23: TImage;

Piano: TPanel;

La1: TShape;

Mi4: TShape;

Re4: TShape;

Do4: TShape;

Si4: TShape;

La4: TShape;

Sol4: TShape;

Fa4: TShape;

Mi3: TShape;

Re3: TShape;

Do3: TShape;

Si3: TShape;

La3: TShape;

Sol3: TShape;

Fa3: TShape;

Mi2: TShape;

Re2: TShape;

Do2: TShape;

Si2: TShape;

La2: TShape;

Sol2: TShape;

Fa2: TShape;

Mi1: TShape;

Re1: TShape;

Do1: TShape;

Si1: TShape;

Sol1: TShape;

Fa1: TShape;

Do1d: TShape;

Fa1d: TShape;

La1d: TShape;

Sol1d: TShape;

Re1d: TShape;

Fa2d: TShape;

La2d: TShape;

Sol2d: TShape;

Re2d: TShape;

Do2d: TShape;

Fa3d: TShape;

La3d: TShape;

Sol3d: TShape;

Re3d: TShape;

Do3d: TShape;

Fa4d: TShape;

La4d: TShape;

Sol4d: TShape;

Re4d: TShape;

Do4d: TShape;

Mi5: TShape;

Re5: TShape;

Do5: TShape;

Si5: TShape;

La5: TShape;

Sol5: TShape;

Fa5: TShape;

Re5d: TShape;

Fa5d: TShape;

La5d: TShape;

Sol5d: TShape;

Do5d: TShape;

Do6: TShape;

imgFa4: TImage;

imgSol4: TImage;

imgLa4: TImage;

imgSi4: TImage;

imgDo5: TImage;

imgDo1d: TImage;

imgRe1d: TImage;

imgFa1d: TImage;

imgSol1d: TImage;

imgLa1d: TImage;

imgDo2d: TImage;

imgRe2d: TImage;

imgFa2d: TImage;

imgSol2d: TImage;

imgLa2d: TImage;

imgDo3d_2: TImage;

imgDo3d_1: TImage;

imgRe3d: TImage;

imgFa3d: TImage;

imgSol3d: TImage;

imgLa3d: TImage;

imgDo4d: TImage;

imgRe4d: TImage;

imgFa4d: TImage;

imgSol4d: TImage;

imgLa4d: TImage;

imgDo5d: TImage;

GroupBox1: TGroupBox;

UpDown1: TUpDown;

lblInstrument: TLabel;

MainMenu1: TMainMenu;

Fic1: TMenuItem;

Edition1: TMenuItem;

Baloo1: TMenuItem;

Fermer1: TMenuItem;

Aide1: TMenuItem;

Player: TGroupBox;

btnPlay: TSpeedButton;

btnPause: TSpeedButton;

btnStop: TSpeedButton;

Groupe_Notes: TGroupBox;

Notes_Alterees: TPanel;

lblDo1d: TLabel;

lblRe1d: TLabel;

lblFa1d: TLabel;

lblSol1d: TLabel;

lblLa1d: TLabel;

lblDo2d: TLabel;

lblRe2d: TLabel;

lblFa2d: TLabel;

lblSol2d: TLabel;

lblLa2d: TLabel;

lblDo3d: TLabel;

lblRe3d: TLabel;

lblFa3d: TLabel;

lblSol3d: TLabel;

lblLa3d: TLabel;

lblDo4d: TLabel;

lblRe4d: TLabel;

lblFa4d: TLabel;

lblSol4d: TLabel;

lblLa4d: TLabel;

lblDo5d: TLabel;

lblRe5d: TLabel;

lblFa5d: TLabel;

lblSol5d: TLabel;

lblLa5d: TLabel;

Notes_Primaires: TPanel;

lblDo1: TLabel;

lblRe1: TLabel;

lblMi1: TLabel;

lblFa1: TLabel;

lblSol1: TLabel;

lblLa1: TLabel;

lblSi1: TLabel;

lblDo2: TLabel;

lblRe2: TLabel;

lblMi2: TLabel;

lblFa2: TLabel;

lblSol2: TLabel;

lblLa2: TLabel;

lblSi2: TLabel;

lblDo3: TLabel;

lblRe3: TLabel;

lblMi3: TLabel;

lblFa3: TLabel;

lblSol3: TLabel;

lblLa3: TLabel;

lblSi3: TLabel;

lblDo4: TLabel;

lblRe4: TLabel;

lblMi4: TLabel;

lblFa4: TLabel;

lblSol4: TLabel;

lblLa4: TLabel;

lblSi4: TLabel;

lblDo5: TLabel;

lblRe5: TLabel;

lblMi5: TLabel;

lblFa5: TLabel;

lblSol5: TLabel;

lblLa5: TLabel;

lblSi5: TLabel;

lblDo6: TLabel;

Image1: TImage;

lblNote: TLabel;

GroupBox2: TGroupBox;

N1: TMenuItem;

XPManifest1: TXPManifest;

Label1: TLabel;

Label2: TLabel;

Procedure FormCreate(Sender: TObject);

procedure FormPaint(Sender: TObject);

Procedure FormDestroy(Sender: TObject);

procedure PianoMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure PianoMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);

procedure Baloo1Click(Sender: TObject);

procedure Fermer1Click(Sender: TObject);

procedure PianoToucheDown(Touche: string);

procedure PianoToucheUp(Touche: string);

procedure btnPauseClick(Sender: TObject);

procedure btnPlayClick(Sender: TObject);

procedure btnStopClick(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure Melodie;

procedure Accompagnement;

procedure Aide1Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure lblInstrumentClick(Sender: TObject);

procedure lblNoteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

MidiOut: hMidiOut;

Instrument: string;

BPM: integer;

Pause: boolean;

Stop: boolean;

 

implementation

 

uses Unit_Main_Droite, Unit_Main_Gauche, Unit3;

 

{$R *.dfm}

 

 

procedure TForm1.btnPauseClick(Sender: TObject);

begin

midiOutShortMsg(MidiOut, $00007BB0);

Stop:= false;

Pause:= true;

btnPlay.Visible:= true;

btnPause.Visible:= false;

end;

 

procedure TForm1.btnPlayClick(Sender: TObject);

begin

Stop:= false;

Pause:= false;

btnPlay.Visible:= false;

btnPause.Visible:= true;

end;

 

procedure TForm1.btnStopClick(Sender: TObject);

begin

midiOutShortMsg(MidiOut, $00007BB0);

Pause:= false;

Stop:= true;

end;

 

procedure TForm1.Fermer1Click(Sender: TObject);

begin

Stop:= true;

application.terminate;

end;

 

{---------------------МУЗИЧНИЙ МЕНЕДЖЕР-------------------------}

 

procedure TForm1.Aide1Click(Sender: TObject);

begin

Form2.Show;

end;

 

procedure TForm1.Baloo1Click(Sender: TObject);

begin

Pause:= false;

Stop:= false;

Player.Visible:= true;

BPM:= 350;

Instrument:= '00';

Melodie;

Melodie;

Player.Visible:= false;

end;

 

procedure TForm1.Melodie;

var

MD: TMain_Droite;

begin

 

// Запуск компоненту TMain_Droite (Мелодія)

MD:= TMain_Droite.Create(False);

 

// Запуск процедури Акомпанемент

Accompagnement;

 

Repeat

Application.ProcessMessages;

if Stop then MD.ThreadTerminated:= true;

if Pause then MD.Suspended:= true;

//if MD.Suspended AND NOT Pause then MD.Resume;

until MD.ThreadTerminated;

 

end;

procedure TForm1.N1Click(Sender: TObject);

begin

About.Show;

end;

 

procedure TForm1.Accompagnement;

var

MG: TMain_Gauche;

begin

MG:= TMain_Gauche.Create(False);

 

Repeat

Application.ProcessMessages;

if Stop then MG.ThreadTerminated:= true;

if Pause then MG.Suspended:= true;

if MG.Suspended AND NOT Pause then MG.Resume;

until MG.ThreadTerminated;

 

end;

 

 

{---------------------Форми управління---------------------------}

 

Procedure TForm1.FormCreate(Sender: TObject);

var

Res: DWORD; msg: String;

Begin

Res:= midiOutOpen(@MidiOut, MIDI_MAPPER, Handle, 0, CALLBACK_WINDOW);

If Res <> 0 Then Begin

Case Res Of

MMSYSERR_BADDEVICEID: msg:= 'Priphrique invalide';

MMSYSERR_ALLOCATED: msg:= 'Priphrique dja allou';

MMSYSERR_NOMEM: msg:= 'Mmoire insuffisante';

MIDIERR_NOMAP: msg:= 'Mapper MIDI non trouv';

MIDIERR_NODEVICE: msg:= 'Priphrique non trouv';

Else msg:= 'Erreur inconnue';

End;

MessageBox(Form1.Handle, pChar(msg), 'Помилка', MB_OK);

Close;

End;

 

 

Instrument:='00';

 

 

BPM:=1;

 

 

Pause:= false;

Stop:= false;

End;

 

procedure TForm1.FormPaint(Sender: TObject);

begin

Form1.SetFocus;

end;

 

procedure TForm1.lblInstrumentClick(Sender: TObject);

begin

 

end;

 

procedure TForm1.lblNoteClick(Sender: TObject);

begin

 

end;

 

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

Stop:= true;

end;

 

Procedure TForm1.FormDestroy(Sender: TObject);

Begin

midiOutShortMsg(MidiOut, $00007BB0);

midiOutClose(MidiOut);

End;

 

 

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

var

i,j: integer;

Touche: string;

begin

for i:= 0 to Length(Keys) - 1 do

begin

if Keys[i].Key = Key then

begin

Touche:= Keys[i].Note;

if Keys[i].Down = false then

begin

for j:= 0 to Length(Notes) - 1 do

if Notes[j].Note=Touche then Notes[j].Down:=true;

PianoToucheDown(Touche);

Keys[i].Down:= true;

end;

end;

end;

end;

 

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

var

i, j: integer;

Touche: string;

begin

for i:= 0 to Length(Keys) - 1 do

begin

if Keys[i].Key = Key then

begin

Touche:= Keys[i].Note;

Keys[i].Down:= false;

for j:= 0 to Length(Notes) - 1 do

if Notes[j].Note=Touche then Notes[j].Down:=false;

PianoToucheUp(Touche);

end;

end;

end;

 

procedure TForm1.PianoMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

Touche: string;

begin

Touche:= TShape(Sender).Name;

if Button=mbLeft then

PianoToucheDown(Touche);

end;

 

procedure TForm1.PianoMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

Touche: string;

i: integer;

Note:Cardinal;

begin

Touche:= TShape(Sender).Name;

if Button=mbLeft then

PianoToucheUp(Touche);

end;

 

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

var

InstrumentINT: integer;

begin

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

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

Instrument:= lblInstrument.Caption;

end;

 

procedure TForm1.PianoToucheDown(Touche: string);

var

i: integer;

Note: cardinal;

begin

for i:= 0 to Length(Notes) - 1 do

begin

if Notes[i].Note=Touche then

begin

lblInstrument.Caption:= Instrument;

Note:= StrToInt('$007F' + Notes[i].SonMidi + '90');

midiOutShortMsg(MidiOut, StrToInt('$0000' + Instrument + 'C0'));

midiOutShortMsg(MidiOut, Note);

lblNote.Caption:= Touche;

lblNote.Visible:= true;

if Copy(Touche, Length(Touche), 1)<>'d' then

begin

Notes_Primaires.Visible:= true;

Notes_Alterees.Visible:= false;

end

else

begin

Notes_Primaires.Visible:= false;

Notes_Alterees.Visible:= true;

end;

TImage(FindComponent('lbl' + Touche)).Visible:= true;

if i<50 then

begin

if Touche='Do3' then

begin

TImage(FindComponent('imgDo3_1')).Visible:= true;

TImage(FindComponent('imgDo3_2')).Visible:= true;

end

else if Touche='Do3d' then

begin

TImage(FindComponent('imgDo3d_1')).Visible:= true;

TImage(FindComponent('imgDo3d_2')).Visible:= true;

end

else TImage(Form1.FindComponent('img' + Touche)).Visible:= true;

end;

if TShape(FindComponent(Touche)).Brush.Color=clWhite then

TShape(FindComponent(Touche)).Brush.Color:=clRed

else if TShape(FindComponent(Touche)).Brush.Color=clBlack then

TShape(FindComponent(Touche)).Brush.Color:=clLime;

end;

end;

end;

 

procedure TForm1.PianoToucheUp(Touche: string);

var

i: integer;

Note:Cardinal;

begin

for i:= 0 to Length(Notes) - 1 do

begin

 

if Notes[i].Note=Touche then

begin

Note:= StrToInt('$007F' + Notes[i].SonMidi + '80');

midiOutShortMsg(MidiOut, Note);

if (Notes[i].Down=false) then

begin

if i<50 then

begin

if Touche='Do3' then

begin

TImage(FindComponent('imgDo3_1')).Visible:= false;

TImage(FindComponent('imgDo3_2')).Visible:= false;

end

else if Touche='Do3d' then

begin

TImage(FindComponent('imgDo3d_1')).Visible:= false;

TImage(FindComponent('imgDo3d_2')).Visible:= false;

end

else TImage(Form1.FindComponent('img' + Touche)).Visible:= false;

end;

lblNote.Visible:= false;

if Copy(Touche, Length(Touche), 1)<>'d' then

begin

Notes_Primaires.Visible:= false;

Notes_Alterees.Visible:= true;

end

else

begin

Notes_Primaires.Visible:= true;

Notes_Alterees.Visible:= false;

end;

TImage(FindComponent('lbl' + Touche)).Visible:= false;

if TShape(FindComponent(Touche)).Brush.Color=clRed then

TShape(FindComponent(Touche)).Brush.Color:=clWhite

else if TShape(FindComponent(Touche)).Brush.Color=clLime then

TShape(FindComponent(Touche)).Brush.Color:=clBlack;

end;

 

end;

end;

end;

 

 

end.

unit Musiques;

 

interface

 

type

TMusiques = Record

Note1: string;

Note2: string;

Note3: string;

Note4: string;

Duree: single;

end;

const

Musique1_MD: Array[0..27] of TMusiques =(

(Duree:1;)

,(Note1:'Do3'; Duree:1;)

,(Note1:'Re3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

 

,(Duree:1;)

,(Note1:'La3'; Duree:2;)

,(Note1:'Sol3d';Duree:1;)

 

,(Note1:'La3'; Duree:1;)

,(Note1:'Sol3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

 

,(Note1:'Sol3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

,(Note1:'Sol3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

 

,(Note1:'Sol3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

,(Note1:'Re3'; Duree:1;)

,(Note1:'Do3'; Duree:1;)

 

,(Note1:'Fa3'; Duree:1;)

,(Note1:'Do3'; Duree:1;)

,(Note1:'Fa3'; Duree:1;)

,(Note1:'La3'; Duree:1;)

 

,(Note1:'Re4'; Duree:1;)

,(Note1:'Do4'; Duree:1;)

,(Note1:'La3d'; Duree:1;)

,(Note1:'La3'; Duree:1;)

 

,(Note1:'Sol3'; Duree:4;)

);

 

Musique1_MG: Array[0..30] of TMusiques =(

(Duree:4;)

 

,(Note1:'Fa1'; Duree:1;)

,(Duree:1;)

,(Note1:'Do1';Duree:1;)

,(Duree:1;)

 

,(Note1:'Fa1'; Duree:1;)

,(Duree:1;)

,(Note1:'La1';Duree:1;)

,(Duree:1;)

 

,(Note1:'La1d'; Duree:1;)

,(Duree:1;)

,(Note1:'Fa1';Duree:1;)

,(Duree:1;)

 

,(Note1:'La1d'; Duree:1;)

,(Duree:1;)

,(Note1:'Sol1';Duree:1;)

,(Duree:1;)

 

,(Note1:'Fa1'; Duree:1;)

,(Duree:1;)

,(Note1:'Re1d';Duree:1;)

,(Duree:1;)

 

,(Note1:'Re1'; Duree:1;)

,(Duree:1;)

,(Note1:'Fa1d';Duree:1;)

,(Duree:1;)

 

,(Note1:'Sol1'; Duree:1;)

,(Note1:'La1'; Duree:1;)

,(Note1:'La1d';Duree:1;)

,(Note1:'La1d'; Duree:1;)

 

,(Note1:'Do2'; Duree:1;)

,(Duree:3;)

);

 

{

// Accompagnement "Accords" (Main Gauche)

Musique1_MG: Array[0..8] of TMusiques =(

(Duree:4;)

 

,(Note1:'Fa2'; Note2:'La2'; Note3:'Do3'; Note4:'Mi3'; Duree:4;)

 

,(Note1:'Fa2'; Note2:'La2'; Note3:'Do3'; Note4:'Re3d'; Duree:4;)

 

,(Note1:'Fa2'; Note2:'La2'; Note3:'Do3d'; Note4:'Re3'; Duree:4;)

 

,(Note1:'Fa2'; Note2:'Sol2'; Note3:'La3d'; Note4:'Re3'; Duree:4;)

 

,(Note1:'Fa2'; Note2:'La2'; Note3:'Do3'; Note4:'Re3'; Duree:2;)

,(Note1:'Sol2'; Note2:'La2'; Note3:'Do3'; Note4:'Re3d'; Duree:2;)

 

,(Note1:'Fa2d'; Note2:'La2'; Note3:'Do3'; Note4:'Re3'; Duree:4;)

 

,(Note1:'Fa2'; Note2:'Sol2'; Note3:'Si2'; Note4:'Re3'; Duree:4;)

 

); }

 

 

implementation

 

end.

unit Notes_Midi;

 

interface

 

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.

unit Unit3;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

 

type

TAbout = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

About: TAbout;

 

implementation

 

{$R *.dfm}

 

procedure TAbout.Button1Click(Sender: TObject);

begin

close

end;

 

procedure TAbout.FormCreate(Sender: TObject);

begin

 

end;

 

end.

unit Unit_Main_Droite;

 

interface

 

uses

Main, Classes, Forms, SysUtils, ExtCtrls, Graphics,

mmSystem, Notes_MIDI, Musiques;

 

type

TMain_Droite = Class(TThread)

private

idNote: integer;

procedure OnTerminateProcedure(Sender: TObject);

protected

procedure ToucheDown;

procedure ToucheUp;

procedure Execute; override;

public

ThreadTerminated: Boolean;

constructor Create(Suspended: Boolean);

end;

 

 

implementation

 

constructor TMain_Droite.Create(Suspended: Boolean);

begin

FreeOnTerminate:= True;

inherited Create(Suspended);

OnTerminate:= OnTerminateProcedure;

ThreadTerminated:= False;

end;

 

procedure TMain_Droite.ToucheDown;

begin

Form1.PianoToucheDown(Musique1_MD[idNote].Note1);

end;

 

procedure TMain_Droite.ToucheUp;

begin

Form1.PianoToucheUp(Musique1_MD[idNote].Note1);

end;

 

procedure TMain_Droite.Execute;

var

i: integer;

begin

 

for i:= 0 to Length(Musique1_MD)-1 do

begin

if ThreadTerminated then exit;

idNote:= i;

 

if Musique1_MD[i].Note1<>'' then

Synchronize(ToucheDown);

 

Sleep(Round(((60/BPM)*1000) * Musique1_MD[i].Duree));

 

if Musique1_MD[i].Note1<>'' then

Synchronize(ToucheUp);

end;

 

end;

 

procedure TMain_Droite.OnTerminateProcedure(Sender: TObject);

begin

ThreadTerminated:=True;

end;

 

end.

unit Unit_Main_Gauche;

 

interface

 

uses

Main, Classes, Forms, SysUtils, ExtCtrls, Graphics,

mmSystem, Notes_MIDI, Musiques;

 

type

TMain_Gauche = class(TThread)

private

idNote: integer;

procedure OnTerminateProcedure(Sender: TObject);

protected

procedure ToucheDown;

procedure ToucheUp;

procedure Execute; override;

public

ThreadTerminated: Boolean;

constructor Create(Suspended: Boolean);

end;

 

 

implementation

 

constructor TMain_Gauche.Create(Suspended: Boolean);

begin

FreeOnTerminate:= True;

inherited Create(Suspended);

OnTerminate:= OnTerminateProcedure;

ThreadTerminated:= False;

end;

 

procedure TMain_Gauche.ToucheDown;

begin

Form1.PianoToucheDown(Musique1_MG[idNote].Note1);

end;

 

procedure TMain_Gauche.ToucheUp;

begin

Form1.PianoToucheUp(Musique1_MG[idNote].Note1);

end;

 

procedure TMain_Gauche.Execute;

var

i: integer;

begin

 

for i:= 0 to Length(Musique1_MG)-1 do

begin

if ThreadTerminated then exit;

idNote:= i;

 

if Musique1_MG[i].Note1<>'' then

Synchronize(ToucheDown);

 

Sleep(Round(((60/BPM)*1000) * Musique1_MG[i].Duree));

 

if Musique1_MG[i].Note1<>'' then

Synchronize(ToucheUp);

end;

 

end;

 

procedure TMain_Gauche.OnTerminateProcedure(Sender: TObject);

begin

ThreadTerminated:=True;

end;

 

end.





Поделиться с друзьями:


Дата добавления: 2015-11-05; Мы поможем в написании ваших работ!; просмотров: 537 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2285 - | 2064 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.