Skip to content

Commit 02982db

Browse files
committedJul 20, 2021
Fix loop playback for wxmediaplayer
Fix loop playback for wxmediaplayer. But looping still fails for fluidsynthplayer.
1 parent e52e51a commit 02982db

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed
 

‎easy_abc.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#
22

3-
program_name = 'EasyABC 1.3.7.9 2021-01-01'
3+
program_name = 'EasyABC 1.3.7.9 2021-07-20'
44

55
# Copyright (C) 2011-2014 Nils Liberg (mail: kotorinl at yahoo.co.uk)
66
# Copyright (C) 2015-2020 Seymour Shlien (mail: fy733@ncf.ca), Jan Wybren de Jong (jw_de_jong at yahoo dot com)
@@ -4220,6 +4220,10 @@ def reset_BpmSlider(self):
42204220
self.bpm_slider.Enabled = True
42214221
self.update_playback_rate() # 1.3.6.4 [JWDJ]
42224222

4223+
def OnChangeLoopPlayback(self, event):
4224+
loop = event.Selection != 0
4225+
self.loop_midi_playback = loop
4226+
42234227
def OnChangeFollowScore(self, event):
42244228
enabled = event.Selection != 0
42254229
self.settings['follow_score'] = enabled
@@ -4536,6 +4540,7 @@ def setup_toolbar(self):
45364540
self.progress_slider = self.add_slider_to_toolbar(_('Play position'), False, 0, 0, 100, (-1, -1), (130, 22))
45374541

45384542
self.loop_check = self.add_checkbox_to_toolbar(_('Loop'))
4543+
self.loop_check.Bind(wx.EVT_CHECKBOX, self.OnChangeLoopPlayback)
45394544

45404545
self.follow_score_check = self.add_checkbox_to_toolbar(_('Follow score'))
45414546
self.follow_score_check.Bind(wx.EVT_CHECKBOX, self.OnChangeFollowScore)
@@ -5271,11 +5276,12 @@ def OnToolPlay(self, evt):
52715276

52725277
@property
52735278
def loop_midi_playback(self):
5274-
return self.loop_check.GetValue()
5279+
return self.mc.loop_midi_playback
52755280

52765281
@loop_midi_playback.setter
52775282
def loop_midi_playback(self, value):
52785283
self.loop_check.SetValue(value)
5284+
self.mc.loop_midi_playback = value
52795285

52805286
def OnToolPlayLoop(self, evt):
52815287
if self.settings['midiplayer_path']:

‎midiplayer.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@ def fire(self, *args, **keywargs):
2727
handler(*args, **keywargs)
2828

2929
def clearObjectHandlers(self, obj):
30-
self.__handlers = [h for h in self.__handlers if getattr(h, 'im_self', False) != obj]
30+
self.__handlers = [h for h in self.__handlers if getattr(h, '__self__', False) != obj]
3131

3232

3333
class MidiPlayer(object):
3434
def __init__(self):
3535
super(MidiPlayer, self).__init__()
3636
self.OnAfterStop = EventHook()
3737
self.OnAfterLoad = EventHook()
38+
self.loop_midi_playback = False
3839

3940
@property
4041
def is_playing(self):
@@ -44,6 +45,10 @@ def is_playing(self):
4445
def is_paused(self):
4546
return False
4647

48+
@property
49+
def is_looping(self):
50+
return self.loop_midi_playback
51+
4752
@property
4853
def supports_tempo_change_while_playing(self):
4954
return False

‎wxmediaplayer.py

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ def __init__(self, parent_window, backend=None):
2020
self.mc = wx.media.MediaCtrl(parent_window)
2121
self.mc.Hide()
2222
self.is_really_playing = False
23-
self.loop_midi_playback = False
2423

2524
parent_window.Bind(wx.media.EVT_MEDIA_LOADED, self.OnMediaLoaded)
2625
# Bind other event to be sure to act on the first one that occurs (evenif they should be almost at the same time)

0 commit comments

Comments
 (0)
Please sign in to comment.