Hello,

I am considering becoming a fairly serious developer for rosegarden. My only fears (besides 3 other programming projects) are

(1) I never wrote anything using KDE/QT toolkits (or any other gui really except swing and j2me for mobile devices)

(2) Learning the code base could be a daunting and tedious task.

However, I have about 2 years of job related C++ coding experience and have dabbled in linux audio development with a visualization plugin (projectM: xmms-projectm.sourceforge.net).


I am still somewhat new to midi lingo so my terminology may be off here. My primary goal is to create a more advanced "event" editor. In particular, products like garage band and logic pro have this click and drag interface to indicate a parameter (_expression_, pitch bend, modulation, etc) changing over time. Each click creates a new line segment. I'm sure you have seen these. However, my sequencer / midi background stems from the yamaha rm1x. It has a crude interface to add continuous parameter changes by specifying the interval, midi parameter, start / end values, and a "curve" adjuster. Essentially it modifies the parameters in linear segments but the curve value skews it in some quadratic fashion.

I would like to implement in rosegarden something in the spirit of the rm1x. The primary difference being I would like to *specify* a function instead. A first order implementation would be you can choose from a small set of builtin functions (trig functions, step functions, polynomials, log, whatever) and then select the time interval, midi paramater and initial values. A second order version is an equation parser so the user can write any function they like. An even more complex version is parameter covariance. I will give an example on how this complexity may simplify a composer's life:

(1) Composer records a midi sequence track. It is 4 measures long.
(2) He wants the _expression_ to decrease proportional to modulation within the 4 measures.

Let E_0 and M_0 be the initial values for _expression_ / modulation.

Then if 't' is some time unit, 'm' the current modulation value, 'e' the current _expression_ value, he could write the equations:

f(m) = M_0 + 2t
f(e) = E_0 - m

to represent how he wants these parameters to change in relation to each other.

Thus, the composer punches these formulas into some integrated equation editor and rosegarden will automatically apply the events
across that interval according to the whatever granularity 't' is assumed to be. Ideally it will be shown visually much in the fashion that
garage band does. That is, denote each parameter with a unique colored line over a measure histogram. Finally, other interesting ideas
are to have covariance between parameters on separate midi tracks but that is a headache I'll avoid for now.

I know this is a very rough idea of my goals. Let me know what you guys think. I am very serious about getting something like this implemented.

Thanks for a great opensource project,

Carmelo

Reply via email to