Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
|
Re: code optimieren
2. Feb 2006, 20:58
Fertig, kurz genug ?
Delphi-Quellcode:
function Skala(StartTon, Dauer: integer): string;
const
Scales: array[0..3 * 8 + 6 - 1] of Integer =
(0, 2, 4, 5, 7, 9, 11, 12, // Dur
0, 2, 3, 5, 7, 8, 10, 12, // Moll
0, 2, 4, 7, 9, 12, // Pentatonisch
0, 2, 3, 5, 7, 9, 10, 12); // Dorisch
Starts: Array[0..4] of Integer = (0, 8, 8 + 6, 2 * 8 + 6, 3 * 8 + 6);
Names: Array[0..5] of string = ('Dur', 'Moll', 'Pentatonisch', 'Dorisch',
'Ganzton', 'Chromatisch');
var
Scale, i: Integer;
procedure PutIt(const Tone: Integer);
begin
// Ieeks, globale Variablen
FMain.MidiOutput.PutShort($90, Tone, UGlobal.IVLautstaerke);
UPause.Pause(Dauer);
end;
begin
if UGlobal.SkArt in [1, 2, 3] then
Scale := Random(2 * UGlobal.SkArt);
else
Scale := 2;
case Scale of
0..3:
for i := Starts[Scale] to Starts[Scale + 1] - 1 do
PutIt(Startton + Scales[i]);
4: // Ganzton
for i := 0 to 6 do
PutIt(Startton + 2 * i);
5: // Chromatisch
for i := 0 to 12 do
PutIt(Startton + i);
end;
Result := Names[Scale];
end;
Vielleicht sind noch kleine Fehler drin, aber die kannst du ja selbst verbessern.
Sebastian Moderator in der EE
|