clean midi, delete trail

This commit is contained in:
adrienmalin
2019-01-01 14:42:28 +01:00
parent 50821bbb8f
commit 23afbdfdbe
9 changed files with 45 additions and 288 deletions

View File

@ -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])