@@ -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
32693276procedure TScreenEditSub.PlayMidiTone (const Tone: Integer);
32703277var
3271- MidiTone : Integer;
3278+ MidiNote : Integer;
32723279begin
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;
32823289end ;
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