diff options
-rw-r--r-- | src/base/UMain.pas | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/base/UMain.pas b/src/base/UMain.pas index 5dacd5f8..08b9cc4a 100644 --- a/src/base/UMain.pas +++ b/src/base/UMain.pas @@ -769,7 +769,7 @@ var PlayerIndex: integer; CurrentSound: TCaptureBuffer; CurrentPlayer: PPlayer; - LastPlayerNote: PPLayerNote; + LastPlayerNote: PPlayerNote; Line: PLine; SentenceIndex: integer; SentenceMin: integer; @@ -823,7 +823,12 @@ begin begin CurrentPlayer := @Player[PlayerIndex]; CurrentSound := AudioInputProcessor.Sound[PlayerIndex]; - LastPlayerNote := @CurrentPlayer.Note[CurrentPlayer.HighNote]; + + // At the beginning of the song there is no previous note + if (Length(CurrentPlayer.Note) > 0) then + LastPlayerNote := @CurrentPlayer.Note[CurrentPlayer.HighNote] + else + LastPlayerNote := nil; // analyze buffer CurrentSound.AnalyzeBuffer; @@ -902,8 +907,10 @@ begin begin // we will add a new note NewNote := true; - // if last has the same tone + + // if previous note (if any) was the same, extend prrevious note if ((CurrentPlayer.LengthNote > 0) and + (LastPlayerNote <> nil) and (LastPlayerNote.Tone = CurrentSound.Tone) and ((LastPlayerNote.Start + LastPlayerNote.Length) = LyricsState.CurrentBeatD)) then begin @@ -939,7 +946,8 @@ begin else begin // extend note length - Inc(LastPlayerNote.Length); + if (LastPlayerNote <> nil) then + Inc(LastPlayerNote.Length); end; // check for perfect note and then lit the star (on Draw) |