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