If people are interested in working on UI code and they are not up for work
on the DSP core, then I fully support the decision to keep working on UI
changes. I do not want to disturb any momentum in order to work on a major
change which may turn to vaporware anyway. There is still a lot to benefit
from UI changes now. For example, most of the Qt code dealing with widget
hierarchies, sig/slot interconnections, and custom widget painting can stay
intact. The major issue in LMMS regarding realtime safety is the close
coupling of the GUI and DSP. There is even too much coupling between DSP
elements. Consider the Song class, almost everything references "global"
data stored in it.
That being said, if *anyone* here is interested in some systems programming
then I have quite the chore for them ;-). I have an architecture in mind
(and slightly documented in
https://github.com/pgiblox/unison/tree/master/docs that will give us a huge
number of benefits. Some of the benefits include:
- A realtime safe, multithreaded DSP engine. This thing lets you add
"plugins" which are just simple DSP modules. The programmer can connect the
"ports" of these modules together ad-hoc. The engine handles all routing of
audio/midi/control between the modules and dynamically schedules the
processing across multiple cores using a work-stealing algorithm.
Therefore, a component such as a mixer-line or instrument-scaffolding are
implemented by just adding and connecting DSP plugins. There is nothing
imperative here.
- Everything from mixer buses, sends, and controller/automation
interconnection becomes vastly simplified as the engine takes care of data
dependencies and such
- For example, a project has a concept of component such as a mixer line.
The mixer line is implemented by means of telling the engine: "Hey, add a
panner and gain, wire them together, and expose the input and output
channels to the project". If a user adds an effect to the mixer's FX list,
then it tells the engine to wire the new plugin between the component's
inputs and the panner plugin.
- This message-based protocol allows for the DSP processing graph to be
recompiled in a realtime safe fashion. It relieves components from dealing
with these concerns, and it provides separation of logical (song/project)
concerns and those dealing with processing the project. This can also allow
for the DSP to run out-of-process from the frontend (think: resiliency
against plugin failures and a frontend client on a mobile device which
controls DSP running on a beefier computer)
The bulk of the work above is already complete. The big task is taking LMMS
elements and implementing them in terms of components.
Another thing that really bothered me about LMMS is that the projects are
huge monolithic beasts. Therefore, I have additional thoughts regarding
next-genreation project files, resource management, and a "proper"
extension system. Essentially, projects are just containers, and extensions
determine what is stored into the project.
If anyone is interested in helping, then I will be happy to produce a
formal report including my findings, design goals, requirements, and work
since completed.
-- Paul
On Wed, Jan 15, 2014 at 11:43 AM, Tobiasz Karoń <unf...@gmail.com> wrote:
> If waiting longer with replacing the core means it will cost more work
> later and rewriting code you've just wrote, it'd be best to do it ASAP.
> On 15 Jan 2014 17:29, "Vesa" <dii....@nbl.fi> wrote:
>
>> On 01/15/2014 06:00 PM, Jonathan Aquilina wrote:
>> > Would you guys be willing to step back from other work such as UI work
>> to
>> > contribute to this endeavour?
>>
>> I don't think I'd be much use in it, I'd rather continue doing the UI
>> work where I actually have a chance of doing something useful.
>>
>> I also don't think it'd be a good idea right now to start porting in a
>> new engine if it means we have to put everything else on hold.
>>
>>
>> ------------------------------------------------------------------------------
>> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>> Learn Why More Businesses Are Choosing CenturyLink Cloud For
>> Critical Workloads, Development Environments & Everything In Between.
>> Get a Quote or Start a Free Trial Today.
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>> _______________________________________________
>> LMMS-devel mailing list
>> LMMS-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/lmms-devel
>>
>
>
> ------------------------------------------------------------------------------
> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
> Learn Why More Businesses Are Choosing CenturyLink Cloud For
> Critical Workloads, Development Environments & Everything In Between.
> Get a Quote or Start a Free Trial Today.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
> _______________________________________________
> LMMS-devel mailing list
> LMMS-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lmms-devel
>
>
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
LMMS-devel mailing list
LMMS-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lmms-devel