Skip to content

Commit 613be13

Browse files
committed
fix double midi sounds and confused state between space / P midi playing
1 parent e97e5f5 commit 613be13

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/screens/UScreenEditSub.pas

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,12 @@ procedure TScreenEditSub.HandlePlaySentence(SDL_ModState: word);
12231223

12241224
if PlaySentenceMidi then
12251225
begin
1226+
{$IFDEF UseMIDIPort}
1227+
if PlayOneMidi then
1228+
StopMidi;
1229+
{$ENDIF}
1230+
PlayOneMidi := false;
1231+
midinotefound := false;
12261232
Text[TextInfo].Text := Language.Translate('EDIT_INFO_PLAY_SENTENCE_AUDIO_AND_MIDI');
12271233
ConfigureMidiPlayback(PlaybackStart, SentenceEndTime);
12281234
end;
@@ -1712,6 +1718,7 @@ procedure TScreenEditSub.PlayNote(SDL_ModState: word);
17121718
PlayMidiTone(NoteTone);
17131719
{$ENDIF}
17141720
Text[TextInfo].Text := Language.Translate('EDIT_INFO_PLAY_NOTE_MIDI');
1721+
midinotefound := true;
17151722
end
17161723
else
17171724
Text[TextInfo].Text := Language.Translate('EDIT_INFO_PLAY_NOTE_AUDIO');
@@ -3268,16 +3275,16 @@ function TScreenEditSub.GetMidiVolume(): Integer;
32683275

32693276
procedure TScreenEditSub.PlayMidiTone(const Tone: Integer);
32703277
var
3271-
MidiTone: Integer;
3278+
MidiNote: Integer;
32723279
begin
3273-
MidiTone := EnsureRange(Tone + 60, 0, 127);
3280+
MidiNote := EnsureRange(Tone + 60, 0, 127);
32743281

32753282
if MidiActive then
32763283
MidiOut.PutShort(MIDI_NOTEOFF or 1, MidiTone + 60, 0);
32773284

32783285
MidiOut.PutShort($B1, $7, GetMidiVolume());
3279-
MidiOut.PutShort($91, MidiTone, 127);
3280-
MidiTone := MidiTone - 60;
3286+
MidiOut.PutShort($91, MidiNote, 127);
3287+
MidiTone := MidiNote - 60;
32813288
MidiActive := true;
32823289
end;
32833290

@@ -5812,10 +5819,11 @@ function TScreenEditSub.Draw: boolean;
58125819
begin
58135820
MidiPos := AudioPlayback.Position - MidiAnchorPos + MidiStart;
58145821
// stop the music
5815-
if ((MidiPos > MidiStop)) then // and (midinotefound)
5822+
if ((MidiPos >= MidiStop)) then // and (midinotefound)
58165823
begin
58175824
StopMidi;
58185825
PlayOneMidi := false;
5826+
midinotefound := false;
58195827
end;
58205828

58215829
// click

0 commit comments

Comments
 (0)