Skip to content

Commit d299a0a

Browse files
author
Simon Holliday
committed
- Fix bug with storing aliases for MIDI devices
1 parent ebf9cf2 commit d299a0a

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

subsequence/composition.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ def __init__ (
641641
self._is_live: bool = False
642642
self._running_patterns: typing.Dict[str, typing.Any] = {}
643643
self._input_device: typing.Optional[str] = None
644+
self._input_device_alias: typing.Optional[str] = None
644645
self._clock_follow: bool = False
645646
self._clock_output: bool = False
646647
self._cc_mappings: typing.List[typing.Dict[str, typing.Any]] = []
@@ -1357,6 +1358,7 @@ def midi_input (self, device: str, clock_follow: bool = False, name: typing.Opti
13571358
if self._input_device is None:
13581359
# First call: set primary input device (device 0)
13591360
self._input_device = device
1361+
self._input_device_alias = name
13601362
self._clock_follow = clock_follow
13611363
else:
13621364
# Subsequent calls: register additional input devices
@@ -2470,6 +2472,8 @@ async def _run (self) -> None:
24702472
# Also register the primary input (device 0) if one was configured.
24712473
if self._sequencer.input_device_name:
24722474
self._input_device_names[self._sequencer.input_device_name] = 0
2475+
if self._input_device_alias is not None:
2476+
self._input_device_names[self._input_device_alias] = 0
24732477

24742478
for dev_name, alias, cf in self._additional_inputs:
24752479
dev_idx = len(self._sequencer._input_devices) # next index

tests/test_multi_device.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,9 +575,10 @@ def test_input_alias_resolves_in_cc_map(patch_midi_multi) -> None:
575575
comp.midi_input("Input B", name="faders")
576576
comp.cc_map(74, "filter", input_device="faders")
577577

578-
# Manually populate _input_device_names as _run() would, then call resolution.
578+
# Manual setup for resolution (simulating what _run would populate after opening ports).
579579
comp._input_device_names["Input A"] = 0
580-
comp._input_device_names["keys"] = 0
580+
if comp._input_device_alias:
581+
comp._input_device_names[comp._input_device_alias] = 0
581582
comp._input_device_names["Input B"] = 1
582583
comp._input_device_names["faders"] = 1
583584

@@ -597,7 +598,8 @@ def test_input_alias_resolves_in_cc_forward(patch_midi_multi) -> None:
597598
comp.cc_forward(1, "cc", input_device="keys")
598599

599600
comp._input_device_names["Input A"] = 0
600-
comp._input_device_names["keys"] = 0
601+
if comp._input_device_alias:
602+
comp._input_device_names[comp._input_device_alias] = 0
601603

602604
for fwd in comp._cc_forwards:
603605
raw_in = fwd.get('input_device')

0 commit comments

Comments
 (0)