Line 43:
Line 43:
== Deeper Still... ==
== Deeper Still... ==
So we have an ordered dictionary of short Codes
So we have an ordered dictionary of short Codes
−
with a tuple of meta data
+
with a tuple of meta data:-
+
+
"ZY", ("ZynAddSubFX", "ZynAddSubFX - Synthesizer", "MIDI Synth", None, zynthian_engine_zynaddsubfx, True)],
"ZY", ("ZynAddSubFX", "ZynAddSubFX - Synthesizer", "MIDI Synth", None, zynthian_engine_zynaddsubfx, True)],
−
and a zyntengine import * takes care of presenting these engines from the zynengine directory to the code. So in this case the class instance for zynthian_engine_zynaddsubfx is extracted from the file
+
and a zynengine import * takes care of presenting these engines from the zynengine directory to the code. So in this case the class instance for zynthian_engine_zynaddsubfx is extracted from the file
/zynthian-ui//zyngine/zynthian_engine_zynaddsubfx.py
/zynthian-ui//zyngine/zynthian_engine_zynaddsubfx.py
[[File:Zynthian zynaddsubfx code.png|right|400px|Zynthian top details of zynthian_engine_zynaddsubfx.py]]
[[File:Zynthian zynaddsubfx code.png|right|400px|Zynthian top details of zynthian_engine_zynaddsubfx.py]]
+
+
A you can see we start with some CC definitions applicable to a specific engine, by in large a lot of these are similar:
+
For example:
+
+
* ['volume',7,115],
+
* ['panning',10,64],
+
+
But once you get onto something like Aeolus things ,obviously, get a little more complicated. But already the zynthian is specifiying Context for Engines and maintaining that environment for the specific engine assumptions.
+
+
It's just a big mapping !
+
+
That's how it works for the explicitly defined Engines, but for going forward LV2 offers a much for implicit path, which allows lists to be populated from information derived from the LV2 TTL files.
+
+
== JALV starts to help ==
+
+
So we come to the python component that handles the LV2 bundles.