aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/midi/MidiScope.pas
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/midi/MidiScope.pas')
-rw-r--r--src/lib/midi/MidiScope.pas142
1 files changed, 62 insertions, 80 deletions
diff --git a/src/lib/midi/MidiScope.pas b/src/lib/midi/MidiScope.pas
index afc20b0f..3eb51054 100644
--- a/src/lib/midi/MidiScope.pas
+++ b/src/lib/midi/MidiScope.pas
@@ -24,7 +24,14 @@ interface
{$ENDIF}
uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
+ Windows,
+ Messages,
+ SysUtils,
+ Classes,
+ Graphics,
+ Controls,
+ Forms,
+ Dialogs;
type
TMidiScope = class(TGraphicControl)
@@ -32,40 +39,40 @@ type
{ Private declarations }
protected
{ Protected declarations }
- notes : array[0..15,0..127] of integer;
- controllers : array[0..15,0..17] of integer;
- aftertouch : array[0..15,0..127] of integer;
+ notes: array[0..15,0..127] of integer;
+ controllers: array[0..15,0..17] of integer;
+ aftertouch: array[0..15,0..127] of integer;
- selectedChannel : integer;
+ selectedChannel: integer;
- procedure PaintSlide(ch,pos,val: integer);
+ procedure PaintSlide(ch, pos, val: integer);
- procedure NoteOn(channel, note, speed : integer);
- procedure Controller(channel,number,value : integer);
- procedure AfterTch(channel, note, value : integer);
+ procedure NoteOn(channel, note, speed: integer);
+ procedure Controller(channel, number, value: integer);
+ procedure AfterTch(channel, note, value: integer);
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
- procedure MidiEvent(event,data1,data2 : integer);
+ procedure MidiEvent(event, data1, data2: integer);
procedure Paint; override;
published
{ Published declarations }
end;
-
procedure Register;
const
- BarHeight = 16;
- BarHeightInc = BarHeight+2;
+ BarHeight = 16;
+ BarHeightInc = BarHeight + 2;
BarWidth = 3;
- BarWidthInc = BarWidth+1;
+ BarWidthInc = BarWidth + 1;
HeightDiv = 128 div BarHeight;
implementation
-uses Midicons;
+uses
+ MidiCons;
procedure Register;
begin
@@ -74,125 +81,100 @@ end;
constructor TMidiScope.Create(AOwner: TComponent);
var
- i,j : integer;
+ i, j: integer;
begin
inherited Create(AOwner);
Height := BarHeightinc * 16 + 4;
- Width := 147*BarWidthInc + 4 + 20; // for channel number
+ Width := 147 * BarWidthInc + 4 + 20; // for channel number
for i := 0 to 15 do
- begin
for j := 0 to 127 do
begin
notes[i,j] := 0;
aftertouch[i,j] := 0;
end;
- end;
for i := 0 to 17 do
- begin
for j := 0 to 15 do
controllers[i,j] := 0;
- end;
end;
-procedure TMidiScope.PaintSlide(ch,pos,val: integer);
-var x,y:integer;
+procedure TMidiScope.PaintSlide(ch, pos, val: integer);
+var
+ x, y:integer;
begin
Canvas.Brush.Color := clBlack;
Canvas.Pen.color := clBlack;
x := pos * BarWidthInc + 2;
y := 2 + ch * BarHeightInc;
- Canvas.Rectangle(x, y, x+BarWidthInc, y+BarHeightInc);
+ Canvas.Rectangle(x, y, x + BarWidthInc, y + BarHeightInc);
Canvas.Brush.Color := clGreen;
Canvas.Pen.Color := clGreen;
- Canvas.Rectangle(x, y + (BarHeight - (val div HeightDiv )), x + BarWidth, y + BarHeight)
+ Canvas.Rectangle(x, y + (BarHeight - (val div HeightDiv)), x + BarWidth, y + BarHeight)
end;
procedure TMidiScope.Paint;
-var i,j : integer;
-x : integer;
+var
+ i, j: integer;
+ x: integer;
begin
Canvas.Brush.color := clBlack;
- Canvas.Rectangle(0,0,Width,Height);
+ Canvas.Rectangle(0, 0, Width, Height);
Canvas.Pen.Color := clGreen;
- x := 128*BarWidthInc+2;
- Canvas.MoveTo(x,0);
- Canvas.LineTo(x,Height);
- x := 148*BarWIdthInc+2;
+ x := 128 * BarWidthInc + 2;
+ Canvas.MoveTo(x, 0);
+ Canvas.LineTo(x, Height);
+ x := 148 * BarWIdthInc + 2;
canvas.Font.Color := clGreen;
for i := 0 to 15 do
- Canvas.TextOut(x,((i+1)*BarHeightInc) - Canvas.font.size-3,IntToStr(i+1));
+ Canvas.TextOut(x, ((i + 1) * BarHeightInc) - Canvas.font.size - 3, IntToStr(i + 1));
canvas.Pen.color := clBlack;
- begin
- for j := 0 to 127 do
- begin
- PaintSlide(i,j,notes[i,j]);
- end;
- for j := 0 to 17 do
- begin
- PaintSlide(i,j+129,controllers[i,j]);
- end;
- end;
+ for j := 0 to 127 do
+ PaintSlide(i, j, notes[i,j]);
+ for j := 0 to 17 do
+ PaintSlide(i, j + 129, controllers[i,j]);
end;
-procedure TMidiScope.NoteOn(channel, note, speed : integer);
+
+procedure TMidiScope.NoteOn(channel, note, speed: integer);
begin
notes[channel,note] := speed;
- PaintSlide(channel,note,notes[channel,note]);
+ PaintSlide(channel, note, notes[channel,note]);
end;
-procedure TMidiScope.AfterTch(channel, note, value : integer);
+
+procedure TMidiScope.AfterTch(channel, note, value: integer);
begin
aftertouch[channel,note] := value;
end;
-procedure TMidiScope.Controller(channel,number,value : integer);
-var i : integer;
+procedure TMidiScope.Controller(channel, number, value: integer);
+var
+ i: integer;
begin
if number < 18 then
begin
- controllers[channel,number] := value;
- PaintSlide(channel,number+129,value);
+ controllers[channel,number] := value;
+ PaintSlide(channel, number + 129, value);
end
else if number >= $7B then
begin
// all notes of for channel
for i := 0 to 127 do
- begin
if notes[channel,i] > 0 then
begin
notes[channel,i] := 0;
- PaintSlide(channel,i,0);
+ PaintSlide(channel, i, 0);
end;
- end;
end;
end;
-procedure TMidiScope.MidiEvent(event,data1,data2 : integer);
+procedure TMidiScope.MidiEvent(event, data1, data2: integer);
begin
- case (event AND $F0) of
- MIDI_NOTEON :
- begin
- NoteOn((event AND $F),data1,data2);
- end;
- MIDI_NOTEOFF:
- begin
- NoteOn((event AND $F),data1,0);
- end;
- MIDI_CONTROLCHANGE :
- begin
- Controller((event AND $F),data1,data2);
- end;
- MIDI_CHANAFTERTOUCH:
- begin
- Controller((Event AND $F),16,Data1);
- end;
- MIDI_PITCHBEND:
- begin
- begin
- Controller((Event AND $F),17,data2);
- end;
- end;
- MIDI_KEYAFTERTOUCH:
- begin
- end;
+ case (event and $F0) of
+ MIDI_NOTEON : NoteOn ((event and $F), data1, data2);
+ MIDI_NOTEOFF: NoteOn ((event and $F), data1, 0 );
+ MIDI_CONTROLCHANGE: Controller((event and $F), data1, data2);
+ MIDI_CHANAFTERTOUCH: Controller((Event and $F), 16, data1);
+ MIDI_PITCHBEND: Controller((Event and $F), 17, data2);
+ MIDI_KEYAFTERTOUCH: ;
end;
end;
+
end.