diff --git a/Main.tscn b/Main.tscn index d205819..f121a30 100644 --- a/Main.tscn +++ b/Main.tscn @@ -230,7 +230,7 @@ extra_spacing_bottom = 5 font_data = ExtResource( 11 ) _sections_unfolded = [ "Extra Spacing", "Font", "Settings" ] -[node name="Main" type="WorldEnvironment"] +[node name="Main" type="WorldEnvironment" index="0"] environment = SubResource( 2 ) script = ExtResource( 2 ) diff --git a/MidiPlayer.gd b/MidiPlayer.gd index 4ef3e2b..43f0954 100644 --- a/MidiPlayer.gd +++ b/MidiPlayer.gd @@ -3,14 +3,30 @@ extends "midi/MidiPlayer.gd" const Tetromino = preload("res://Tetrominos/Tetromino.gd") const LINE_CLEAR_CHANNELS = [2, 6] -const MOVE_CHANNELS = [3] +const MOVE_CHANNELS = [8] + +var muted_events = [] func _ready(): mute_channels(MOVE_CHANNELS+LINE_CLEAR_CHANNELS) +func _init_channel( ): + ._init_channel() + for channel in max_channel: + self.muted_events.append({}) + func resume(): play(position) + +func _process_track_event_note_off( channel, event ): + muted_events[channel.number].erase(event.note) + ._process_track_event_note_off( channel, event ) +func _process_track_event_note_on( channel, event ): + if self.channel_mute[channel.number]: + muted_events[channel.number][event.note] = event + ._process_track_event_note_on( channel, event ) + func mute_channels(channels): for channel_id in channels: channel_mute[channel_id] = true diff --git a/midi/MidiPlayer.gd b/midi/MidiPlayer.gd index 3de5132..d3973fd 100644 --- a/midi/MidiPlayer.gd +++ b/midi/MidiPlayer.gd @@ -38,9 +38,6 @@ var audio_stream_players = [] var _used_program_numbers = [] -var muted_events = [] -var paused_position = 0 - signal changed_tempo( tempo ) signal appeared_lyric( lyric ) signal appeared_marker( marker ) @@ -180,7 +177,6 @@ func _init_channel( ): "drum_track": drum_track, "pan": 0.5, }) - self.muted_events.append({}) """ 再生 @@ -278,11 +274,8 @@ func _process_track( ): match event.type: SMF.MIDIEventType.note_off: - muted_events[event_chunk.channel_number].erase(event.note) self._process_track_event_note_off( channel, event ) SMF.MIDIEventType.note_on: - 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