Et voilà, the TrackSelector has been born!
It integrates with the other Duplex apps (Matrix, Mixer and StepSequencer) and offer direct control of the following:
- Select the next/previous track (via buttons)
- Select the next/previous track-page (via buttons)
- Select/set a specific track (via buttons or dial/fader)
- Select (first) normal track (via button)
- Select master track (via button)
- Select (first) send track (via button)
Note: if you’re using a dial or fader to select tracks, the next/previous controls are not really useful and can be left out. Only the mapping to select/set a specific track is required.
The TrackSelector has one option, “track_increment”. This will determine the “page size” when flipping through tracks (again, only really relevant if you’re selecting tracks by using buttons). The default is to automatically detect the number of buttons - so if you want to run multiple apps and have their tracks nicely aligned, “track_increment” should be set to the same value as the other applications.
Installation procedure - until a proper release arrives…
- Copy TrackSelector.lua to the Duplex/Applications folder
- Edit the desired device configuration
For details on how to edit configurations etc., check out the Duplex manual on the tools site.
For starters, here’s an example device configuration for the Launchpad (Duplex 0.96 is required):
-- setup "TrackSelector + Mixer"
duplex_configurations:insert {
-- configuration properties
name = "TrackSelector",
pinned = true,
-- device properties
device = {
class_name = "Launchpad",
display_name = "Launchpad",
device_port_in = "Launchpad",
device_port_out = "Launchpad",
control_map = "Controllers/Launchpad/Launchpad-Recorder.xml",
thumbnail = "Launchpad.bmp",
protocol = DEVICE_MIDI_PROTOCOL,
},
applications = {
TrackSelector = {
mappings = {
prev_next_track = {
group_name = "Controls",
index = 1,
},
prev_next_page = {
group_name = "Controls",
index = 3,
},
select_first = {
group_name = "Controls",
index = 5,
},
select_master = {
group_name = "Controls",
index = 6,
},
select_sends = {
group_name = "Controls",
index = 7,
},
select_track = {
group_name = "Row2",
index = 1,
},
},
options = {
track_increment = 1,
}
},
Mixer = {
mappings = {
levels = {
group_name = "Grid",
},
},
options = {
follow_track = 1,
track_increment = 1,
}
},
}
}
Ah OK, you would be fooling Duplex into thinking that the buttons are actually next to each other. Yeah, that would definitely work