On October 21, 2015 08:14:29 PM Tim E. Real wrote:
> I can give much more details about what has been done if you like.
Here's an ad-hoc ChangeLog (I do lose track!):
1:
Persistent routes feature complete.
It currently works for Jack audio and midi routes.
But I am hoping to expand the concept to include persistent
Synth Tracks and Rack Plugins and Tracks themselves.
Missing a plugin? No problem, we'll remember even if you save the song,
and nothing else will change and no Synth Tracks will be removed.
Switched an Audio Input/Output Track from stereo to mono then back to stereo?
No problem. Unlike current MusE, the second route will still be there.
2-1:
Multi-channel Audio Track routing (any channel to any channel).
Fully functional although I noticed a sound engine bug the other day -
an unconnected channel may have repeating nonsense sound data.
Users connect individual Audio or Midi channels with 'Channel Routes',
or all at once with 'Omni' Routes (similar to current behaviour).
Here in my code, so far Audio tracks still only have up to two channels
(or N synth audio channels), but this feature may help later for actual
true multi-channel Audio Tracks. That's a whole other discussion
which I am happy to entertain at the moment.
2-2:
Midi Track to Audio Input routing (for soloing chaining) greatly simplified.
Instead of a cumbersome dual system of a Midi Track to Midi Port route
and a Midi Port to Audio Input route PER track channel, now it is
simply a more direct Midi Track to Audio Input Omni Route.
No 'channels' involved.
This behaviour is slightly different than before, but it still serves the
soloing chaining purpose.
2-3:
Graphical Routing dialog redone and enhanced. Almost fully functional.
Think "super-qjackctl for MusE".
In current MusE it is hidden away under Mixer menu, here I've added it
into the routing popup menus as "Open Advanced Router".
A middle Connections View window, which can be scrolled.
Thick lines are Omni Routes and thin ones are Channel Routes.
Each pane's tree has textual Omni nodes, plus some have a
'Channel Bar' sub node (an array of connectable Channels).
All nodes are organized in 'Category' nodes.
Itemized Master Connection List synchronized with left and right panes.
Filtering buttons:
Show only selected nodes in left or right pane
Show only routeable nodes in the other (right or left) pane
Show all 200 Midi Ports (else it filters unused/unrouted ones)
2-4:
Routing popup menus are redone. Fully functional, tests OK,
some cosmetic tweaks (LEDs) aside.
Shows Channel Routing matrices, plus easy single-click Omni Routes.
Uniform audio and midi routing popup menus.
Keyboard support.
2-5:
Routing popup menus for Midi Tracks now allow you to do Jack Midi routing
right from the popup menus! Like this:
"Connect this Midi Track to Jack Midi port XYZ via
Midi Port 123:MyJackMidiDeviceName".
* I think item 2-5 was now obviously required because ... ...
3-1:
Default Jack Midi Device names have been changed.
At startup, when MusE 'auto-discovers' Jack Midi ports and
creates Midi Devices for them and fills up the Midi Ports list
with the created devices, each new device requires a name.
Instead of currently 'mirroring' the long Jack Midi port names like:
"alsa-pcm:Delta-1010-midi-in-1..."
which is helpful but really NOT good - a different Jack port or multiple
ports can later be connected there making this name MEANINGLESS -
it instead now names the Midi Devices simply like this:
"Jack Midi 1", "Jack Midi 2", "Jack Midi 3" etc.
just like we do with any newly created Track.
* ... ... so you see I needed some way to let the user see actual Jack Midi
port names easier from the Midi Track routing popup menus otherwise
Midi Port "4:Jack Midi 3" tells them nothing! So the enhanced routing
popup menus put the user somewhat 'closer' to the Jack Midi ports.
Still, I'm hoping to add something to the Arranger Track List, to help.
[
Sigh. Werner's muse-evolution branch eliminated Midi Ports.
He basically merged them with Midi Devices and made them into
Midi Input and Midi Output Tracks. This put the user somewhat 'closer'
to the Jack Midi ports, like Audio Input and Output tracks easier to
navigate and fully uniform interface. No 'Midi Config Dialog' and so on.
Controller graphs were allowed to be drawn on these tracks.
I believe we can (should try to) /eliminate/ Midi Ports here in muse-2.
Banish that pesky static array of 200 of them. They are not required.
Instead each Midi Device has a user-settable ID number which replaces
the Midi Port number.
Thus our Midi Devices also become UNLIMITED /virtual/ Midi Ports.
For example, ID virtual port number 1000, even though there may be only
three real devices in the list.
The devices assimilate all Midi Port properties, particularly Instrument.
I need to discuss that useful but tricky concept. But later.
]
3-2:
Someone (hope they're still out there) requested to be able to turn off
that 'auto-discover auto-fill Midi Ports' thing mentioned above.
Done. It's now a command-line flag.
4:
Long ago there was no Midi Track 'routing', only port/channel properties.
Then briefly, per-channel midi routes (stored one route per channel).
Then, until now, one route for all 16 channels using a bit-wise mask for the
Route::channel member. This was to economize on the number of routes.
I've now reverted it back to one route per channel.
This makes all routing uniform (Route::channel now always means 'a channel'),
No special code for Midi Track routes.
(For now this applies only to Midi Track input routes.
Sadly for now still no multiple midi track output routes, still only a fixed
single output port/channel.)
5-1:
A new system of warning users about loading older song file versions
is in place and operational.
("File version is X. Current file version is Y. Conversions may occur if
song is saved.")
* There is now a 'current MusE file version number', found in the
xml module, which SHOULD BE UPDATED whenever someone changes
the file format, especially if it requires conversions to take place.
In some simple instances (adding a new xml tag property for example)
you might get away with leaving it alone to avoid nuisance warnings.
But OTOH maybe it's good practice to increment the sub minor number.
5-2:
Added conversion code to transform older loaded files into the format
which this branch currently stands at. (See items 2-2, 4 etc.)
Saving and loading tests OK so far but may need a few tweaks.
---
All I can remember for now.
See ya! Cheers.
Tim.
------------------------------------------------------------------------------
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer