Hello!
So I finally went through the thread and collected ideas and thoughts. Here
they are, a little chaotic still, but I suppose from there we can go on,
adding to it, shifting things.
Proposal for a good CLI access to audio (and other?) software
The interface should have two parts:
1. a shell-like commandline
2. an interactive fullscreen mode
Random thoughts:
* Use a tree structure for commands/parameters
* Have expand/collpase function for the parameter view (aptitude, mail-clients)
* Parameters are searchable (the tree-structure is searchable for node-data)
* Always move the real cursor (no soft cursor) to the actual parameter
* Encourage programmers to use consistent long and short commands for the shell part
* leave fullscreen mode by colon and enter by ESC
Questions:
* Which keys/mechanisms to use for collapse/expand?
* How to move between parameters on one level?
* What about real menus (as in file, view, edit,...)?
* Can one assume, that OSC is always the easiest/fastest choice and hardcode it?
* Would the commandline mainly just echo the fullscreen tree-structure?
* Would the commandline hold special (non fullscreen) commands?
I thought about a few of the questions and here are my tentative answers:
* Which keys/mechanisms to use for collapse/expand?
In alpine/pine the folder list (one major level of the tree) can be
navigated by using the cursor (all directions). ENTER is used to access a
folder (go down the tree). Only in the sublevels entries (mails) are listed
one underneath the other. So cursor left goes back. Best to think of a
different way, so one can have more compressed layouts, probably organise
strongly related parameters in one row. For example Attack Decay Sustain and
Release.
* How to move between parameters on one level?
Well partly answered. I think simple lists (showsn as such) might be very
long seeing the amount of parameters Yoshimi has to offer. Or what do you
think? It is a little more complicated than aptitude or some of the other
examples, since they mostly use it for simple lists or long menus.
* What about real menus (as in file, view, edit,...)?
I think some real menus might occasinally be nice. It's just another tree
with a root node, from which the main menus branch out. Might be reached by
something like Ctrl+first letter or a printed capital.
* Can one assume, that OSC is always the easiest/fastest choice and hardcode
it?
* Would the commandline mainly just echo the fullscreen tree-structure?
If the command line does echo the full screen commands one might use a
filesystem like navigation: ls - show all parameters on this level, probably
with "/" after them, if they open a sublevel. cd name - change to level
"name". get name - get current state, set name <value> - set parameter
name to
value. Perhaps some more symbols are needed to show things like sublevel,
boolean, integer, float, string or list/enumeration. Perhaps get can offer
that info.
That way a lot can be done by the basic interface infrastructure, without
the programmer having to worry about getting all the names correct a second
time round.
This would make some thing a little longer perhaps, but very consistent.
Still shortcuts might be nice. Perhaps they can be implemented as
aliases/substitutions:
alias filter_res='set synth/filter/resonance'
?
* Would the commandline hold special (non fullscreen) commands?
Should one allow for it or wouldn't it be counter productive at this point?
One idea might be to allow setting a whole level in one go. Good for setting
plugin parameters. So you might do:
ls effect/reverb
room size
reverb time
bandwidth
damping
dry
early reflection level
tail level
set effect/reverb 50 4.0 0.6 0.6 0 -18 -20
Another thing, which I'll enter into the file shortly: have a pager for the
shell output, or at least allow to set one!
So I ope, this doesn't seem too pointless or unorganised... Please someone
pounce and make me see the errors of my ways. :-)
Warm regards
Julien
--------
Music
was my first love and it will be my last (John Miles)
======== FIND MY WEB-PROJECT AT: ========
http://ltsb.sourceforge.net
the Linux TextBased Studio guide
======= AND MY PERSONAL PAGES AT: =======
http://www.juliencoder.de