aboutsummaryrefslogtreecommitdiffstats
path: root/unicode/src/screens/UScreenEditSub.pas
diff options
context:
space:
mode:
Diffstat (limited to 'unicode/src/screens/UScreenEditSub.pas')
-rw-r--r--unicode/src/screens/UScreenEditSub.pas313
1 files changed, 196 insertions, 117 deletions
diff --git a/unicode/src/screens/UScreenEditSub.pas b/unicode/src/screens/UScreenEditSub.pas
index e3adeaf8..a892651a 100644
--- a/unicode/src/screens/UScreenEditSub.pas
+++ b/unicode/src/screens/UScreenEditSub.pas
@@ -57,7 +57,7 @@ type
TScreenEditSub = class(TMenu)
private
//Variable is True if no Song is loaded
- Error: Boolean;
+ Error: boolean;
TextNote: integer;
TextSentence: integer;
@@ -80,18 +80,18 @@ type
CopySrc: integer;
{$IFDEF UseMIDIPort}
- MidiOut: TMidiOutput;
+ MidiOut: TMidiOutput;
{$endif}
- MidiStart: real;
- MidiStop: real;
- MidiTime: real;
- MidiPos: real;
- MidiLastNote: integer;
+ MidiStart: real;
+ MidiStop: real;
+ MidiTime: real;
+ MidiPos: real;
+ MidiLastNote: integer;
- TextEditMode: boolean;
+ TextEditMode: boolean;
- Lyric: TEditorLyrics;
+ Lyric: TEditorLyrics;
procedure DivideBPM;
procedure MultiplyBPM;
@@ -111,14 +111,14 @@ type
procedure CopySentence(Src, Dst: integer);
procedure CopySentences(Src, Dst, Num: integer);
//Note Name Mod
- function GetNoteName(Note: Integer): String;
+ function GetNoteName(Note: integer): string;
public
Tex_Background: TTexture;
FadeOut: boolean;
constructor Create; override;
procedure onShow; override;
- function ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: Boolean): Boolean; override;
- function ParseInputEditText(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: Boolean): Boolean;
+ function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
+ function ParseInputEditText(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
function Draw: boolean; override;
procedure onHide; override;
end;
@@ -128,29 +128,32 @@ implementation
uses
UGraphic,
UDraw,
- UMain,
+ UNote,
USkins,
ULanguage,
UUnicodeUtils;
// Method for input parsing. If False is returned, GetNextWindow
// should be checked to know the next window to load;
-function TScreenEditSub.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: Boolean): Boolean;
+function TScreenEditSub.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
SDL_ModState: Word;
R: real;
begin
Result := true;
- if TextEditMode then begin
+ if TextEditMode then
+ begin
Result := ParseInputEditText(PressedKey, CharCode, PressedDown);
- end else begin
+ end
+ else
+ begin
SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT
+ KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT {+ KMOD_CAPS});
- If (PressedDown) then begin // Key Down
- // check normal keys
+ if (PressedDown) then // Key Down
+ begin // check normal keys
case UCS4UpperCase(CharCode) of
Ord('Q'):
begin
@@ -202,14 +205,16 @@ begin
Ord('V'):
begin
// Paste text
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
if Lines[0].Line[Lines[0].Current].HighNote >= Lines[0].Line[CopySrc].HighNote then
PasteText
else
Log.LogStatus('PasteText: invalid range', 'TScreenEditSub.ParseInput');
end;
- if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then
+ begin
CopySentence(CopySrc, Lines[0].Current);
end;
end;
@@ -328,20 +333,23 @@ begin
SDLK_4:
begin
- if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then
+ begin
CopySentence(CopySrc, Lines[0].Current);
CopySentence(CopySrc+1, Lines[0].Current+1);
CopySentence(CopySrc+2, Lines[0].Current+2);
CopySentence(CopySrc+3, Lines[0].Current+3);
end;
- if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin
+ if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then
+ begin
CopySentences(CopySrc, Lines[0].Current, 4);
end;
end;
SDLK_5:
begin
- if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then
+ begin
CopySentence(CopySrc, Lines[0].Current);
CopySentence(CopySrc+1, Lines[0].Current+1);
CopySentence(CopySrc+2, Lines[0].Current+2);
@@ -349,7 +357,8 @@ begin
CopySentence(CopySrc+4, Lines[0].Current+4);
end;
- if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin
+ if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then
+ begin
CopySentences(CopySrc, Lines[0].Current, 5);
end;
end;
@@ -391,19 +400,22 @@ begin
SDLK_SLASH:
begin
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
// Insert start of sentece
if CurrentNote > 0 then
DivideSentence;
end;
- if SDL_ModState = KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LSHIFT then
+ begin
// Join next sentence with current
- if Lines[0].Current < Lines[0].High then
+ if Lines[0].Current < Lines[0].High then
JoinSentence;
end;
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
// divide note
DivideNote;
end;
@@ -435,13 +447,10 @@ begin
begin
end;
- SDLK_LCTRL:
- begin
- end;
-
SDLK_DELETE:
begin
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
// moves text to right in current sentence
DeleteNote;
end;
@@ -456,29 +465,36 @@ begin
SDLK_RIGHT:
begin
// right
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Inc(CurrentNote);
- if CurrentNote > Lines[0].Line[Lines[0].Current].HighNote then CurrentNote := 0;
+ if CurrentNote > Lines[0].Line[Lines[0].Current].HighNote then
+ CurrentNote := 0;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.Selected := CurrentNote;
end;
// ctrl + right
- if SDL_ModState = KMOD_LCTRL then begin
- if Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length > 1 then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
+ if Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length > 1 then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length);
Inc(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Start);
- if CurrentNote = 0 then begin
+ if CurrentNote = 0 then
+ begin
Inc(Lines[0].Line[Lines[0].Current].Start);
end;
end;
end;
// shift + right
- if SDL_ModState = KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LSHIFT then
+ begin
Inc(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Start);
- if CurrentNote = 0 then begin
+ if CurrentNote = 0 then
+ begin
Inc(Lines[0].Line[Lines[0].Current].Start);
end;
if CurrentNote = Lines[0].Line[Lines[0].Current].HighNote then
@@ -486,14 +502,16 @@ begin
end;
// alt + right
- if SDL_ModState = KMOD_LALT then begin
+ if SDL_ModState = KMOD_LALT then
+ begin
Inc(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length);
if CurrentNote = Lines[0].Line[Lines[0].Current].HighNote then
Inc(Lines[0].Line[Lines[0].Current].End_);
end;
// alt + ctrl + shift + right = move all from cursor to right
- if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then
+ begin
MoveAllToEnd(1);
end;
@@ -502,29 +520,35 @@ begin
SDLK_LEFT:
begin
// left
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Dec(CurrentNote);
- if CurrentNote = -1 then CurrentNote := Lines[0].Line[Lines[0].Current].HighNote;
+ if CurrentNote = -1 then
+ CurrentNote := Lines[0].Line[Lines[0].Current].HighNote;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.Selected := CurrentNote;
end;
// ctrl + left
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Start);
Inc(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length);
- if CurrentNote = 0 then begin
+ if CurrentNote = 0 then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Start);
end;
end;
// shift + left
- if SDL_ModState = KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LSHIFT then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Start);
// resizing sentences
- if CurrentNote = 0 then begin
+ if CurrentNote = 0 then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Start);
end;
@@ -534,8 +558,10 @@ begin
end;
// alt + left
- if SDL_ModState = KMOD_LALT then begin
- if Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length > 1 then begin
+ if SDL_ModState = KMOD_LALT then
+ begin
+ if Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length > 1 then
+ begin
Dec(Lines[0].Line[Lines[0].Current].Note[CurrentNote].Length);
if CurrentNote = Lines[0].Line[Lines[0].Current].HighNote then
Dec(Lines[0].Line[Lines[0].Current].End_);
@@ -543,7 +569,8 @@ begin
end;
// alt + ctrl + shift + right = move all from cursor to left
- if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then begin
+ if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then
+ begin
MoveAllToEnd(-1);
end;
@@ -553,7 +580,8 @@ begin
begin
// skip to next sentence
- if SDL_ModState = 0 then begin {$IFDEF UseMIDIPort}
+ if SDL_ModState = 0 then
+ begin {$IFDEF UseMIDIPort}
MidiOut.PutShort($81, Lines[0].Line[Lines[0].Current].Note[MidiLastNote].Tone + 60, 127);
PlaySentenceMidi := false;
{$endif}
@@ -561,7 +589,8 @@ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Inc(Lines[0].Current);
CurrentNote := 0;
- if Lines[0].Current > Lines[0].High then Lines[0].Current := 0;
+ if Lines[0].Current > Lines[0].High then
+ Lines[0].Current := 0;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.AddLine(Lines[0].Current);
@@ -571,7 +600,8 @@ begin
end;
// decrease tone
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
TransposeNote(-1);
end;
@@ -581,7 +611,8 @@ begin
begin
// skip to previous sentence
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
{$IFDEF UseMIDIPort}
MidiOut.PutShort($81, Lines[0].Line[Lines[0].Current].Note[MidiLastNote].Tone + 60, 127);
PlaySentenceMidi := false;
@@ -590,7 +621,8 @@ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Dec(Lines[0].Current);
CurrentNote := 0;
- if Lines[0].Current = -1 then Lines[0].Current := Lines[0].High;
+ if Lines[0].Current = -1 then
+ Lines[0].Current := Lines[0].High;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.AddLine(Lines[0].Current);
@@ -600,7 +632,8 @@ begin
end;
// increase tone
- if SDL_ModState = KMOD_LCTRL then begin
+ if SDL_ModState = KMOD_LCTRL then
+ begin
TransposeNote(1);
end;
end;
@@ -610,7 +643,7 @@ begin
end; // if
end;
-function TScreenEditSub.ParseInputEditText(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: Boolean): Boolean;
+function TScreenEditSub.ParseInputEditText(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
SDL_ModState: Word;
begin
@@ -620,7 +653,7 @@ begin
SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT
+ KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT {+ KMOD_CAPS});
- If (PressedDown) Then
+ if (PressedDown) then
begin // Key Down
case PressedKey of
@@ -648,10 +681,12 @@ begin
SDLK_RIGHT:
begin
// right
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Inc(CurrentNote);
- if CurrentNote > Lines[0].Line[Lines[0].Current].HighNote then CurrentNote := 0;
+ if CurrentNote > Lines[0].Line[Lines[0].Current].HighNote then
+ CurrentNote := 0;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.Selected := CurrentNote;
end;
@@ -659,10 +694,12 @@ begin
SDLK_LEFT:
begin
// left
- if SDL_ModState = 0 then begin
+ if SDL_ModState = 0 then
+ begin
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 0;
Dec(CurrentNote);
- if CurrentNote = -1 then CurrentNote := Lines[0].Line[Lines[0].Current].HighNote;
+ if CurrentNote = -1 then
+ CurrentNote := Lines[0].Line[Lines[0].Current].HighNote;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
Lyric.Selected := CurrentNote;
end;
@@ -687,11 +724,13 @@ var
N: integer;
begin
CurrentSong.BPM[0].BPM := CurrentSong.BPM[0].BPM / 2;
- for C := 0 to Lines[0].High do begin
- Lines[0].Line[C].Start := Lines[0].Line[C].Start div 2;
- Lines[0].Line[C].End_ := Lines[0].Line[C].End_ div 2;
- for N := 0 to Lines[0].Line[C].HighNote do begin
- Lines[0].Line[C].Note[N].Start := Lines[0].Line[C].Note[N].Start div 2;
+ for C := 0 to Lines[0].High do
+ begin
+ Lines[0].Line[C].Start := Lines[0].Line[C].Start div 2;
+ Lines[0].Line[C].End_ := Lines[0].Line[C].End_ div 2;
+ for N := 0 to Lines[0].Line[C].HighNote do
+ begin
+ Lines[0].Line[C].Note[N].Start := Lines[0].Line[C].Note[N].Start div 2;
Lines[0].Line[C].Note[N].Length := Round(Lines[0].Line[C].Note[N].Length / 2);
end; // N
end; // C
@@ -703,11 +742,13 @@ var
N: integer;
begin
CurrentSong.BPM[0].BPM := CurrentSong.BPM[0].BPM * 2;
- for C := 0 to Lines[0].High do begin
- Lines[0].Line[C].Start := Lines[0].Line[C].Start * 2;
- Lines[0].Line[C].End_ := Lines[0].Line[C].End_ * 2;
- for N := 0 to Lines[0].Line[C].HighNote do begin
- Lines[0].Line[C].Note[N].Start := Lines[0].Line[C].Note[N].Start * 2;
+ for C := 0 to Lines[0].High do
+ begin
+ Lines[0].Line[C].Start := Lines[0].Line[C].Start * 2;
+ Lines[0].Line[C].End_ := Lines[0].Line[C].End_ * 2;
+ for N := 0 to Lines[0].Line[C].HighNote do
+ begin
+ Lines[0].Line[C].Note[N].Start := Lines[0].Line[C].Note[N].Start * 2;
Lines[0].Line[C].Note[N].Length := Lines[0].Line[C].Note[N].Length * 2;
end; // N
end; // C
@@ -724,7 +765,8 @@ begin
for N := 0 to Lines[0].Line[C].HighNut do
Lines[0].Line[C].Note[N].Text := UTF8LowerCase(Lines[0].Line[C].Note[N].Text);}
- for C := 0 to Lines[0].High do begin
+ for C := 0 to Lines[0].High do
+ begin
S := AnsiUpperCase(Copy(Lines[0].Line[C].Note[0].Text, 1, 1));
S := S + Copy(Lines[0].Line[C].Note[0].Text, 2, Length(Lines[0].Line[C].Note[0].Text)-1);
Lines[0].Line[C].Note[0].Text := S;
@@ -736,33 +778,39 @@ var
C: integer;
N: integer;
begin
- for C := 0 to Lines[0].High do begin
+ for C := 0 to Lines[0].High do
+ begin
// correct starting spaces in the first word
while Copy(Lines[0].Line[C].Note[0].Text, 1, 1) = ' ' do
Lines[0].Line[C].Note[0].Text := Copy(Lines[0].Line[C].Note[0].Text, 2, 100);
// move spaces on the start to the end of the previous note
- for N := 1 to Lines[0].Line[C].HighNote do begin
- while (Copy(Lines[0].Line[C].Note[N].Text, 1, 1) = ' ') do begin
+ for N := 1 to Lines[0].Line[C].HighNote do
+ begin
+ while (Copy(Lines[0].Line[C].Note[N].Text, 1, 1) = ' ') do
+ begin
Lines[0].Line[C].Note[N].Text := Copy(Lines[0].Line[C].Note[N].Text, 2, 100);
Lines[0].Line[C].Note[N-1].Text := Lines[0].Line[C].Note[N-1].Text + ' ';
end;
end; // N
// correct '-' to '- '
- for N := 0 to Lines[0].Line[C].HighNote do begin
+ for N := 0 to Lines[0].Line[C].HighNote do
+ begin
if Lines[0].Line[C].Note[N].Text = '-' then
Lines[0].Line[C].Note[N].Text := '- ';
end; // N
// add space to the previous note when the current word is '- '
- for N := 1 to Lines[0].Line[C].HighNote do begin
+ for N := 1 to Lines[0].Line[C].HighNote do
+ begin
if Lines[0].Line[C].Note[N].Text = '- ' then
Lines[0].Line[C].Note[N-1].Text := Lines[0].Line[C].Note[N-1].Text + ' ';
end; // N
// correct too many spaces at the end of note
- for N := 0 to Lines[0].Line[C].HighNote do begin
+ for N := 0 to Lines[0].Line[C].HighNote do
+ begin
while Copy(Lines[0].Line[C].Note[N].Text, Length(Lines[0].Line[C].Note[N].Text)-1, 2) = ' ' do
Lines[0].Line[C].Note[N].Text := Copy(Lines[0].Line[C].Note[N].Text, 1, Length(Lines[0].Line[C].Note[N].Text)-1);
end; // N
@@ -782,8 +830,10 @@ var
Min: integer;
Max: integer;
begin
- for C := 1 to Lines[0].High do begin
- with Lines[0].Line[C-1] do begin
+ for C := 1 to Lines[0].High do
+ begin
+ with Lines[0].Line[C-1] do
+ begin
Min := Note[HighNote].Start + Note[HighNote].Length;
Max := Lines[0].Line[C].Note[0].Start;
case (Max - Min) of
@@ -829,15 +879,15 @@ begin
NStart := CurrentNote;
Lines[0].Line[CNew].Start := Lines[0].Line[CStart].Note[NStart].Start;
Lines[0].Line[CNew].Lyric := '';
- Lines[0].Line[CNew].LyricWidth := 0;
Lines[0].Line[CNew].End_ := 0;
- Lines[0].Line[CNew].BaseNote := 0; // 0.5.0: we modify it later in this procedure
+ Lines[0].Line[CNew].BaseNote := 0;//High(Integer); // TODO: High (Integer) will causes a memory exception later in this procedure. Weird!
Lines[0].Line[CNew].HighNote := -1;
SetLength(Lines[0].Line[CNew].Note, 0);
// move right notes to new sentences
NHigh := Lines[0].Line[CStart].HighNote;
- for N := NStart to NHigh do begin
+ for N := NStart to NHigh do
+ begin
// increase sentence counters
with Lines[0].Line[CNew] do
begin
@@ -857,6 +907,16 @@ begin
Lines[0].Line[CStart].Note[NStart-1].Length;
SetLength(Lines[0].Line[CStart].Note, Lines[0].Line[CStart].HighNote + 1);
+ //recalculate BaseNote of the divided Sentence
+ with Lines[0].Line[CStart] do
+ begin
+ BaseNote := High(Integer);
+
+ For N := 0 to HighNote do
+ if Note[N].Tone < BaseNote then
+ BaseNote := Note[N].Tone;
+ end;
+
Lines[0].Current := Lines[0].Current + 1;
CurrentNote := 0;
Lines[0].Line[Lines[0].Current].Note[CurrentNote].Color := 1;
@@ -878,7 +938,8 @@ begin
SetLength(Lines[0].Line[C].Note, Lines[0].Line[C].HighNote + 1);
// move right notes to new sentences
- for N := 0 to Lines[0].Line[C+1].HighNote do begin
+ for N := 0 to Lines[0].Line[C+1].HighNote do
+ begin
NDst := NStart + N;
Lines[0].Line[C].Note[NDst] := Lines[0].Line[C+1].Note[N];
end;
@@ -911,7 +972,8 @@ begin
SetLength(Note, HighNote + 1);
// we copy all notes including selected one
- for N := HighNote downto CurrentNote+1 do begin
+ for N := HighNote downto CurrentNote+1 do
+ begin
Note[N] := Note[N-1];
end;
@@ -936,7 +998,8 @@ begin
begin
// we copy all notes from the next to the selected one
- for N := CurrentNote+1 to Lines[0].Line[C].HighNote do begin
+ for N := CurrentNote+1 to Lines[0].Line[C].HighNote do
+ begin
Lines[0].Line[C].Note[N-1] := Lines[0].Line[C].Note[N];
end;
@@ -984,7 +1047,8 @@ var
C: integer;
N: integer;
begin
- for C := 0 to Lines[0].High do begin
+ for C := 0 to Lines[0].High do
+ begin
Lines[0].Line[C].BaseNote := Lines[0].Line[C].BaseNote + Tone;
for N := 0 to Lines[0].Line[C].HighNote do
Lines[0].Line[C].Note[N].Tone := Lines[0].Line[C].Note[N].Tone + Tone;
@@ -997,13 +1061,17 @@ var
N: integer;
NStart: integer;
begin
- for C := Lines[0].Current to Lines[0].High do begin
+ for C := Lines[0].Current to Lines[0].High do
+ begin
NStart := 0;
- if C = Lines[0].Current then NStart := CurrentNote;
- for N := NStart to Lines[0].Line[C].HighNote do begin
+ if C = Lines[0].Current then
+ NStart := CurrentNote;
+ for N := NStart to Lines[0].Line[C].HighNote do
+ begin
Inc(Lines[0].Line[C].Note[N].Start, Move); // move note start
- if N = 0 then begin // fix beginning
+ if N = 0 then
+ begin // fix beginning
Inc(Lines[0].Line[C].Start, Move);
end;
@@ -1022,7 +1090,8 @@ var
begin
{ C := Lines[0].Current;
- for N := Lines[0].Line[C].HighNut downto 1 do begin
+ for N := Lines[0].Line[C].HighNut downto 1 do
+ begin
Lines[0].Line[C].Note[N].Text := Lines[0].Line[C].Note[N-1].Text;
end; // for
@@ -1035,7 +1104,8 @@ begin
Lines[0].Line[C].Note[NHigh].Text := Lines[0].Line[C].Note[NHigh-1].Text + Lines[0].Line[C].Note[NHigh].Text;
// other words
- for N := NHigh - 1 downto CurrentNote + 1 do begin
+ for N := NHigh - 1 downto CurrentNote + 1 do
+ begin
Lines[0].Line[C].Note[N].Text := Lines[0].Line[C].Note[N-1].Text;
end; // for
Lines[0].Line[C].Note[CurrentNote].Text := '- ';
@@ -1059,10 +1129,10 @@ end;
procedure TScreenEditSub.CopySentence(Src, Dst: integer);
var
- N: integer;
- Time1: integer;
- Time2: integer;
- TD: integer;
+ N: integer;
+ Time1: integer;
+ Time2: integer;
+ TD: integer;
begin
Time1 := Lines[0].Line[Src].Note[0].Start;
Time2 := Lines[0].Line[Dst].Note[0].Start;
@@ -1070,7 +1140,8 @@ begin
SetLength(Lines[0].Line[Dst].Note, Lines[0].Line[Src].HighNote + 1);
Lines[0].Line[Dst].HighNote := Lines[0].Line[Src].HighNote;
- for N := 0 to Lines[0].Line[Src].HighNote do begin
+ for N := 0 to Lines[0].Line[Src].HighNote do
+ begin
Lines[0].Line[Dst].Note[N].Text := Lines[0].Line[Src].Note[N].Text;
Lines[0].Line[Dst].Note[N].Length := Lines[0].Line[Src].Note[N].Length;
Lines[0].Line[Dst].Note[N].Tone := Lines[0].Line[Src].Note[N].Tone;
@@ -1088,12 +1159,14 @@ begin
SetLength(Lines[0].Line, Lines[0].Number + Num - 1);
// moves sentences next to the destination
- for C := Lines[0].High downto Dst + 1 do begin
+ for C := Lines[0].High downto Dst + 1 do
+ begin
Lines[0].Line[C + Num - 1] := Lines[0].Line[C];
end;
// prepares new sentences: sets sentence start and create first note
- for C := 1 to Num-1 do begin
+ for C := 1 to Num-1 do
+ begin
Lines[0].Line[Dst + C].Start := Lines[0].Line[Dst + C - 1].Note[0].Start +
(Lines[0].Line[Src + C].Note[0].Start - Lines[0].Line[Src + C - 1].Note[0].Start);
SetLength(Lines[0].Line[Dst + C].Note, 1);
@@ -1175,9 +1248,10 @@ begin
try
//Check if File is XML
- if copy(CurrentSong.FileName,length(CurrentSong.FileName)-3,4) = '.xml'
- then Error := not CurrentSong.LoadXMLSong()
- else Error := not CurrentSong.LoadSong();
+ if copy(CurrentSong.FileName,length(CurrentSong.FileName)-3,4) = '.xml' then
+ Error := not CurrentSong.LoadXMLSong()
+ else
+ Error := not CurrentSong.LoadSong();
except
Error := True;
end;
@@ -1189,7 +1263,8 @@ begin
ScreenPopupError.ShowPopup (Language.Translate('ERROR_CORRUPT_SONG'));
Exit;
end
- else begin
+ else
+ begin
{$IFDEF UseMIDIPort}
MidiOut := TMidiOutput.Create(nil);
if Ini.Debug = 1 then
@@ -1210,7 +1285,7 @@ begin
Lyric.Clear;
Lyric.X := 400;
Lyric.Y := 500;
- Lyric.Align := 1;
+ Lyric.Align := center;
Lyric.Size := 42;
Lyric.ColR := 0;
Lyric.ColG := 0;
@@ -1238,13 +1313,15 @@ begin
glClearColor(1,1,1,1);
// midi music
- if PlaySentenceMidi then begin
+ if PlaySentenceMidi then
+ begin
{$IFDEF UseMIDIPort}
MidiPos := USTime.GetTime - MidiTime + MidiStart;
// stop the music
- if (MidiPos > MidiStop) then begin
+ if (MidiPos > MidiStop) then
+ begin
MidiOut.PutShort($81, Lines[0].Line[Lines[0].Current].Note[MidiLastNote].Tone + 60, 127);
PlaySentenceMidi := false;
end;
@@ -1254,7 +1331,8 @@ begin
AktBeat := Floor(GetMidBeat(MidiPos - CurrentSong.GAP / 1000));
Text[TextDebug].Text := IntToStr(AktBeat);
- if AktBeat <> LastClick then begin
+ if AktBeat <> LastClick then
+ begin
for Pet := 0 to Lines[0].Line[Lines[0].Current].HighNote do
if (Lines[0].Line[Lines[0].Current].Note[Pet].Start = AktBeat) then
begin
@@ -1273,7 +1351,8 @@ begin
end; // if PlaySentenceMidi
// mp3 music
- if PlaySentence then begin
+ if PlaySentence then
+ begin
// stop the music
if (AudioPlayback.Position > PlayStopTime) then
begin
@@ -1282,11 +1361,13 @@ begin
end;
// click
- if (Click) and (PlaySentence) then begin
+ if (Click) and (PlaySentence) then
+ begin
// AktBeat := Floor(CurrentSong.BPM[0].BPM * (Music.Position - CurrentSong.GAP / 1000) / 60);
AktBeat := Floor(GetMidBeat(AudioPlayback.Position - CurrentSong.GAP / 1000));
Text[TextDebug].Text := IntToStr(AktBeat);
- if AktBeat <> LastClick then begin
+ if AktBeat <> LastClick then
+ begin
for Pet := 0 to Lines[0].Line[Lines[0].Current].HighNote do
if (Lines[0].Line[Lines[0].Current].Note[Pet].Start = AktBeat) then
begin
@@ -1347,8 +1428,8 @@ begin
//Music.SetVolume(1.0);
end;
-function TScreenEditSub.GetNoteName(Note: Integer): String;
-var N1, N2: Integer;
+function TScreenEditSub.GetNoteName(Note: integer): string;
+var N1, N2: integer;
begin
if (Note > 0) then
begin
@@ -1361,8 +1442,6 @@ begin
N2 := -1;
end;
-
-
case N1 of
0: Result := 'c';
1: Result := 'c#';