clean midi, delete trail
This commit is contained in:
@ -38,8 +38,7 @@ var audio_stream_players = []
|
||||
|
||||
var _used_program_numbers = []
|
||||
|
||||
var line_clear_notes = {2: {}, 6: {}}
|
||||
var line_clear_notes_to_stop
|
||||
var muted_events = []
|
||||
var paused_position = 0
|
||||
|
||||
signal changed_tempo( tempo )
|
||||
@ -181,6 +180,7 @@ func _init_channel( ):
|
||||
"drum_track": drum_track,
|
||||
"pan": 0.5,
|
||||
})
|
||||
self.muted_events.append({})
|
||||
|
||||
"""
|
||||
再生
|
||||
@ -278,12 +278,11 @@ func _process_track( ):
|
||||
|
||||
match event.type:
|
||||
SMF.MIDIEventType.note_off:
|
||||
if event_chunk.channel_number in line_clear_notes:
|
||||
line_clear_notes[event_chunk.channel_number].erase(event.note)
|
||||
muted_events[event_chunk.channel_number].erase(event.note)
|
||||
self._process_track_event_note_off( channel, event )
|
||||
SMF.MIDIEventType.note_on:
|
||||
if event_chunk.channel_number in line_clear_notes:
|
||||
line_clear_notes[event_chunk.channel_number][event.note] = event
|
||||
if self.channel_mute[event_chunk.channel_number]:
|
||||
muted_events[event_chunk.channel_number][event.note] = event
|
||||
self._process_track_event_note_on( channel, event )
|
||||
SMF.MIDIEventType.program_change:
|
||||
channel.program = event.number
|
||||
@ -411,14 +410,13 @@ func get_now_playing_polyphony( ):
|
||||
|
||||
func resume():
|
||||
play(position)
|
||||
|
||||
func play_line_clear():
|
||||
line_clear_notes_to_stop = {2: {}, 6:{}}
|
||||
for channel in line_clear_notes:
|
||||
for note in line_clear_notes[channel]:
|
||||
_process_track_event_note_on(channel_status[channel], line_clear_notes[channel][note])
|
||||
line_clear_notes_to_stop[channel][note] = line_clear_notes[channel][note]
|
||||
|
||||
func mute_midi_channels(channels, muted):
|
||||
|
||||
func mute_channels(channels):
|
||||
for channel_id in channels:
|
||||
channel_mute[channel_id] = muted
|
||||
channel_mute[channel_id] = true
|
||||
|
||||
func unmute_channels(channels):
|
||||
for channel_id in channels:
|
||||
channel_mute[channel_id] = false
|
||||
for note in muted_events[channel_id]:
|
||||
_process_track_event_note_on(channel_status[channel_id], muted_events[channel_id][note])
|
Reference in New Issue
Block a user