[gd_scene load_steps=4 format=3 uid="uid://chynesmvg3dl5"] [ext_resource type="Texture2D" uid="uid://pa6jmogeid3x" path="res://art/turn.PNG" id="1_58q2i"] [ext_resource type="Texture2D" uid="uid://f8ibqo4nbqqk" path="res://art/bark.PNG" id="3_grsrk"] [sub_resource type="GDScript" id="GDScript_grk35"] script/source = "extends Node2D # https://docs.godotengine.org/en/stable/classes/class_inputeventmidi.html # https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html#enum-globalscope-midimessage # here, put the same values as in game config # for example here it's configured for: # spin 1: Ch 2 Note 10, so put 2 and 10 # spin 2: Ch 2 Note 9, so put 2 and 9 # jog: Ch 2 Note 8, so put 2 and 8 # beat: Ch 3 Note 8, so put 3 and 8 var spin_channel_1: int = 2 var spin_note_1: int = 10 var spin_channel_2: int = 2 var spin_note_2: int = 9 var jog_channel: int = 2 var jog_note: int = 8 var beat_channel: int = 3 var beat_note: int = 8 # end of config # init values var midi_beat: bool = false var midi_jog: bool = false var midi_turnleft: bool = false var midi_turnright: bool = false # if >0: print midi event to the console (1 for minimal logs, 2 for more logs) # if =0: the program acts normally const debug := 0 # Called when the node enters the scene tree for the first time. func _ready(): # fix midi values (the game adds one to the chanels) spin_channel_1 -= 1 spin_channel_2 -= 1 jog_channel -= 1 beat_channel -= 1 OS.open_midi_inputs() print(OS.get_connected_midi_inputs()) func _unhandled_input(input_event): if input_event is InputEventKey: if input_event.keycode == KEY_ESCAPE: get_tree().quit() if input_event is InputEventMIDI: if debug > 0: _print_midi_info(input_event) if input_event.channel == 2 and input_event.message == 9: pass func _input(input_event): if input_event is InputEventMIDI: if input_event.channel == beat_channel and ((input_event.pitch == beat_note and input_event.velocity == 127) or input_event.controller_number == 10): midi_beat = true if input_event.channel == beat_channel and ((input_event.pitch == beat_note and input_event.velocity == 0) or input_event.controller_number == 9): midi_beat = false if input_event.channel == jog_channel and ((input_event.pitch == jog_note and input_event.velocity == 127) or input_event.controller_number == spin_note_1): midi_jog = true if input_event.channel == jog_channel and ((input_event.pitch == jog_note and input_event.velocity == 0) or input_event.controller_number == spin_note_2): midi_jog = false if (input_event.channel == spin_channel_1 or input_event.channel == spin_channel_2) and input_event.controller_value == 127: midi_turnleft = true if (input_event.channel == spin_channel_1 or input_event.channel == spin_channel_2) and input_event.controller_value == 1: midi_turnright = true func _print_midi_info(midi_event: InputEventMIDI): print(midi_event) if debug > 1: print(\"Channel \" + str(midi_event.channel)) print(\"Message \" + str(midi_event.message)) print(\"Pitch \" + str(midi_event.pitch)) print(\"Velocity \" + str(midi_event.velocity)) print(\"Instrument \" + str(midi_event.instrument)) print(\"Pressure \" + str(midi_event.pressure)) print(\"Controller number: \" + str(midi_event.controller_number)) print(\"Controller value: \" + str(midi_event.controller_value)) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): if debug == 0: # process inputs if Input.is_action_pressed(\"quit\"): # exit the software get_tree().quit() if Input.is_action_pressed(\"left\") or midi_beat: # trigger the left controller print(\"left\") if Input.is_action_pressed(\"right\") or midi_jog: # trigger the right controller print(\"right\") if midi_turnleft: # trigger the left controller print(\"turn left\") if midi_turnright: # trigger the right controller print(\"turn right\") midi_turnleft = false midi_turnright = false " [node name="Node2D" type="Node2D"] script = SubResource("GDScript_grk35") [node name="left_turn" type="Sprite2D" parent="."] position = Vector2(270, 284) scale = Vector2(0.22, 0.22) texture = ExtResource("1_58q2i") [node name="right_turn" type="Sprite2D" parent="."] position = Vector2(1625, 269) scale = Vector2(0.22, 0.22) texture = ExtResource("1_58q2i") script = SubResource("GDScript_grk35") [node name="left_bark" type="Sprite2D" parent="."] position = Vector2(137, 307) rotation = -1.29154 scale = Vector2(0.5, 0.5) texture = ExtResource("3_grsrk") [node name="right_bark" type="Sprite2D" parent="."] position = Vector2(1688, 342) rotation = 4.43314 scale = Vector2(0.5, 0.5) texture = ExtResource("3_grsrk") flip_v = true