Skip to content

in descs, always put pages on top? #267

@adcxyz

Description

@adcxyz

Currently in device descs with pages, there are three ways of handling them:

  1. every page is a separate file
    // single page in desc
    MKtlDesc.at('keith-mcmillen-qunexus_port1_AB').openFile
    MKtlDesc.at('keith-mcmillen-qunexus_port2')
    MKtlDesc.at('keith-mcmillen-qunexus_port3')
  2. pages are on top, all elements change with page
    MKtlDesc.at('novation-launchcontrol').openFile
    MKtlDesc.at('novation-launchcontrol-xl').openFile
    m.elAt(\pg) // -> [ 'kn', 'bt', 'nav' ]
  3. some elements are always on, some change with pages:
    MKtlDesc.at('behringer-bcr2000').openFile
    MKtlDesc.at('behringer-bcf2000').openFile
    pr[row][column]
    tr[page][column]
    knUp[page][column]
    bt[row][column]
    kn[row][column] // resp sl[row][column]
    // similar for the nanokontrol
    MKtlDesc.at('korg-nanokontrol').openFile
    tr [rew, fwd, etc]
    sl [page][column]
    kn [page][column]
    bt [page][row][column]
    // event trickier, because separate pages for sliders+buttons and knobs+knobhats:
    MKtlDesc.at('faderfox-uc4').openFile
    kn [knpage][column]
    pbt [knpage][column][on/off] // pushbuttons on knobs
    sl [slpage][column]
    bt [slpage][column][on/off] // buttons below sliders

SUGGESTION:
Always put pages on top, so one can put a page into addNamed,
and access the elements of that page directly, as they are now in front:
m.elAt(\pg0).do { |grp| m.addNamed(grp.name, grp) };

So for BCF/BCR, the hierarchy to make this work is :
pr[row][column]
bt[row][column]
page [ 
  tr [column]
  knUp [column]
]
kn[row][column]  // resp sl[row][column] 


MKtlDesc.at('korg-nanokontrol').openFile
tr [rew, fwd, etc]
page [ 
   sl [column] 
   kn [column] 
   bt [row][column]
]

MKtlDesc.at('faderfox-uc4').openFile
xfader
knPage  [
  kn [column]
  pbt [column][on/off]  // pushbuttons on knobs
]
slPage [
   sl [column]
   bt [column][on/off]  // buttons below sliders
]

Opinions please!

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions