13
0
livetrax/libs/surfaces/tranzport
Mads Kiilerich 8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
..
bling.cc NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
button_events.cc surfaces transport hotfix: surfaces should query the transport state via BasicUI, when possible 2020-02-23 09:02:25 -06:00
button_yn.cc
buttons.cc NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
general.cc
init.cc
interface.cc
io_kernel.cc
io_midi.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
io_usb.cc enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
io.cc NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
lcd.cc
lights.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
meter.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
mode_loop.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
mode_tuner.cc
mode.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
panner.cc
README rollback to 3428, before the mysterious removal of libs/* at 3431/3432 2008-06-02 21:41:35 +00:00
screen.cc
show.cc change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation 2021-08-13 12:51:28 -06:00
slider_gain.h
state.cc enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
TODO
tranzport_base.h
tranzport_common.h
tranzport_control_protocol.h NO-OP: indent 2019-04-08 00:29:13 +02:00
view_automation.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
view_bigmeter.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
view_bling.cc
view_bus.cc
view_config.cc
view_layer.cc
view_loop.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
view_manymeter.cc
view_marker.cc
view_master.cc
view_plugins.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
view_std.cc
view_tempo.cc globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
view_tuner.cc
wheel_modes.cc surfaces transport hotfix: surfaces should query the transport state via BasicUI, when possible 2020-02-23 09:02:25 -06:00
wheel.cc use Session::request_roll() instead of request_transport_speed (1.0, ...) 2021-04-19 16:14:08 -06:00
wscript wscript: drop configure statements already present in the top level wscript 2022-01-22 22:19:03 +01:00

I'm putting this here because I don't really have a place to put it, unless I create a web page and have a place to keep the code.

While doing some exaustive testing of my latest code (read - playing a ton of music) I have done some thinking about the ui, and decided that under apparent simplicity should lie complexity.

The "flash" screen idea I am going to drop, and replace it with the idea of a notify area being declared on each screen.

When the unit is idle, these messages will appear in that area statically. When the transport is running, these messages will still appear in that space, which is usually where the meter is. It's actually possible to rapidly flash the area between the competing writers and get a nifty faded effect. (I came across this idea accidentally when I had a pointer overrun)

Also certain things will update on top of each other, whatever was updated 
last will stay on the screen. This is Pan/Gain primarily.

I need a way to get messages back into the tranzport. Example - I hit Undo, what was undone? Redo, same problem.

I've already found many uses for being able to control more than 1 track at a time, so I think that although I'm *usually* controlling one track at a time, being able to quickly access all tracks would be good.

Example - want to have meters for all tracks running and be able to control the
db/pan settings of the track I'm on....

What I am going to go with is multifold - but first my design goal: I want to do everything required for a solo musician wielding an instrument to NOT have to touch a keyboard or look at a big screen. When you are wrapped behind a bass, it's difficult to cope with that - but the tranzport is a great alternative.

Most screens will have *4* items on them.

There will be "display views" - which are more informational and bling oriented.

There will be "Track based views"- which basically do track specific things

There will be "interactive views",which basically allow for more input than output. They will do something to highlight the current selection.
Scroll wheel will select between values for a field. Track Next/Prev will move between fields. I would like to have a "No/Yes" option (hit record for yes? Stop for no?) but I'm still a little vague on that.

Things to do:

A) Hitting "Shift->Spacebar" will switch "views". There are ultimately going to be dozens of views. At present, there are only the "Normal" and "Big Meter" views.

Each view will change somewhat based on the state of the transport. Holding down shift for a second will switch to the "underlying display"....

Here's how the "normal" view looks today in my tree:

VIEW: NORMAL

Play Mode: Stopped
[Trackname[16]] [gain/pan[4]]
[Modes[9]] long smpte/bar counter]

Play Mode: Playing > 1.0 speed
[Trackname[16]] [gain/pan[4]]
[meter[16]] short smpte/bar counter]

Play Mode: Playing < 1.0
[Trackname[16]] [gain/pan[4]]
[meter[9]] long smpte/bar counter]

Play Mode: Recording
[Trackname[16]] [gain/pan[4]]
[meter[16]] short smpte/bar counter]

Other views (in order of development priority)

Marker Mode: Edit markers, setup loops and punch in points.
Config Mode: Load/Save settings, Load/Save project. Set wheel SnapTo
Loop Mode: Show track, raise layers to top for playback, editing, deletion, loop on and off, etc

It's possible that config mode will have a "MORE" field, or ways to move around the configuration (ffw/Play?)

(the first two are the two modes I most need personally. If you have a suggestion...)

Mastering Mode - display master and current track with meters and panner/db
Automation Mode - I really don't think I have the pixels for this

(I've already abstracted out the code to do most of these, but it's bling, I'm not going to bother much with it soon)

Quad Meter Mode
Inverted Meter mode (draws meters backwards)
Quad Inverted Meter mode (bling, but my car stereo has it, and it's cool)
10 8 bar meter mode
5 8 bar meter mode

I haven't written the panner yet, doing the stereo meter killed me.

From a development perspective I'm going to keep revising the code to make it more stable and merely tie the new mode modes to the "bling mode"s until they are ready for prime time. I should be able to put out releases once a week for a while.

A big help would be moving these items into a higher level of abstraction (revising the baseUI class).

In particular, I'd really like "slave" mode. Snapto increment is really important....

Here's an example of something that should be fairly easy to export to the Base::UI subclasses - the current state of the main keyboard's shift key.

That way, when shift is held down for a few seconds on the regular keyboard, I can see what's underneath the current tranzport display mode (I do like big meters) (Also, it's somewhat easier to hit shift on the main keyboard and play on the tranzport or the shuttle wheel, if that's what you are doing).

Should be fairly easy to tap into the gdk event for this but the "right way" to propagate this event into the class is beyond me.