You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+34Lines changed: 34 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -476,6 +476,25 @@ Pattern length can be specified two ways - use whichever is clearest:
476
476
477
477
When `output_device` is omitted, Subsequence auto-discovers available MIDI devices. If only one device is connected it is used automatically; if several are found you are prompted to choose. To skip the prompt, pass the device name directly: `Composition(output_device="Your Device:Port", ...)`.
478
478
479
+
**Multiple output devices** - use `comp.midi_output()` to register additional devices. Each call returns a device index (1, 2, …) that can be used in pattern decorators or as a named alias:
@comp.pattern(channel=1, beats=4) # device defaults to 0 (MOTU Express)
492
+
defbass(p):
493
+
p.note(36, beat=0)
494
+
```
495
+
496
+
Patterns without a `device=` parameter always route to device 0 - single-device compositions work exactly as before without any changes.
497
+
479
498
MIDI channels and drum note mappings are defined by the musician in their composition file - the module does not ship studio-specific constants. Channels use 1-based numbering by default (1-16, matching instrument panels - channel 10 is drums). To use 0-based numbering (0-15, matching the raw MIDI protocol), pass `zero_indexed_channels=True`:
480
499
481
500
```python
@@ -1711,6 +1730,21 @@ Two dispatch modes:
1711
1730
1712
1731
Built-in preset strings: `"cc"` (identity), `"cc:N"` (remap to CC N), `"pitchwheel"` (scale to ±8192). Pass a callable for full control over output message type and value scaling.
1713
1732
1733
+
**Multiple input/output devices** - both `cc_map()` and `cc_forward()` support `input_device=` and `output_device=` parameters for routing between devices:
1734
+
1735
+
```python
1736
+
comp.midi_input("Arturia KeyStep", name="keys")
1737
+
comp.midi_input("Faderfox EC4", name="faders") # second call adds an extra input
0 commit comments