On Sun, Oct 4, 2009 at 10:57 AM, Paul Giblock <[email protected]> wrote:
> > That being said, there's a number of itches to scratch before I can
> totally
> > dump FL and use this great software. Luckily I'm also a C++ programmer,
> so
> > I've decided to write some code.
> >
>
> Toby and I will have to review it, it sounds like some of these
> features are indepth.
>
Absolutely, I think you'll find the changes pretty elementary. Like I said,
a lot of the work was already done for plugins that did their work with MIDI
instead of playNote, and for the others it was as simple as adding one field
(to at least make the capability available). I don't think I had to change
VeSTige at all.
>
> > I've extended the 'note' class to keep track of the channel the note is
> tied
> > to, and added a new button to the piano roll toolbar which displays a
> color
> > for it's icon. Clicking it gives you a menu of the 16 inputs (each have
> > colors which are provided by the current LmmsStyle).
>
> This makes sense conceptually as long as the UI isn't too complex,
>
Yes, as it is so far in my modifications the toolbar just has one more
button. There are more concerns though, particularly how to handle general
editing of multi-input notes. I've changed the piano roll to display notes
in the various colors, but changing the color of a the selected notes needs
another action somewhere. Another button wouldn't be good imho, as the
toolbar already requires the piano roll to be quite long (at least half of
my 1280x800). I think some of the toolbars could be menuized, but I think
that's a separate patch. Perhaps I should just assign a shortcut key for
now, and provide the capability in a method on the piano roll widget so it
can be called by a menu action later.
also:
>
> > Normally when notePlayHandle sends the midi out events for NoteOn,
> NoteOff,
> > Volume etc, it uses the midi output channel configured in the
> > InstrumentTrack's MidiPort. I changed this to use the new channel getter
> of
> > the 'note' type, and added a check for outputEnabled() on the midi port
> to
> > change the port to the output port (so it's either/or).
>
> As long as the user can still use the MidiPort's channel to specify
> the "default". For when per-note-channels is not desired.
>
By "default" do you mean normalizing it so all note events have the same
channel, or being able to set the channel for the green (default) notes. If
we want the former I would suppose that normalizing would occur for the Midi
Out and not the VST? Right now it normalizes for both but that was for
simplicity's sake rather than correctness.
>
> > I don't think this makes sense though. I don't really understand why all
> > instrument plugins *have* midi out ability. In FL studio afaicr you could
> > use a special Midi Out instrument, and any instrument could take midi
> *in*.
> > The question with LMMS' setup is: when midi out is enabled, do we
> duplicate
> > the events to send out so that the VST (or other instrument) gets the
> events
> > *as well as* whatever controller listens on the midi-out port, or don't
> send
> > the events to the VST (which would seem silly). Either way, with the
> > exception of chaining instruments or reusing the midi data from the VST
> for
> > some other purpose, it doesn't seem that useful.
>
> Yeah, it was odd to me at first too, AFAIK, the note is sent both to
> the MIDI and to the LMMS-Instrument when MIDI-Out is set.
> Having support for both _could_ be handy perhaps if you are in a
> situations where your hardware synth is unavailable. But, I don't use
> external synths so I wouldn't know.
>
Ahh. But that would mean that the instrument plugin played too, unless you
muted it, which I hope would prevent the plugin from processing. And from
what I see, the way to do that is to mute the track, which would mute the
midi out right?
Layering and chaining could be very useful actually. FL has layers, but it's
a pretty weak concept which doesn't fit in nicely with the rest of the
workflow. One issue I see is that entering piano rolls for one instrument
which chains into others would be slightly confusing without some gui cues.
Is this actually possible with the midi setup that lmms uses internally for
instruments?
> Apart from hearing from you guys on how that situation should be handled,
> my
> > changes toward this goal are almost complete. One of the last things to
> do
> > is update the FLP import to support multiple notes, but I'm not sure how
> > well that will turn out (I'm guessing the FLP documentation isn't very
> nice,
> > but so far a lot of the bits needed for what I've done were there, but
> not
> > hooked up yet) so we'll see. I have some other obligations but I should
> > tentatively be able to deliver a patch in a week or so.
>
> Yes, the FLP import is totally reverse engineered I believe. However,
> there are definitely cases in the code that are exposed but just not
> handled.
>
Right, we'll see.
> Another feature I'm hoping to look into is that to get the step sequencer
> to
> > be capable of making beats longer than a single measure. Changing the
> time
> > signature currently changes the amount of beats in a beat pattern but
> that's
> > not really a solution.
>
> Don't bother with this. I already have it planned in our Song-editor
> rewrite. Every Beat-line will have an explicit time-signature and
> length associated with it.
>
Excellent. Having a time signature for a beat would be very useful but I
think then there would have to be a way of dealing with beats/rolls with
different time signatures being played together. I see that if they were all
independent of each other (ie, not changing the time signature value of the
song itself like one could do in FL) it would work but it would add a gotcha
when writing songs. I would suggest a gui cue (which LMMS is particularly
nice at, faded notes are coool).
> Finally there are some general bugs I'd like to try to fix (or at least
> > point out). Both the stable version I got from Canonical's repos and the
> > latest git have an issue which causes clicks on the inner window borders
> to
> > not update Z layering, so you can move and interact with the window but
> it
> > will not raise above any other inner windows.
>
> Not familiar with this one. What version of Qt are you using?
>
Happens on LMMS 4.3 and git (as of a few days ago) with Qt 4.5.0 from Ubuntu
9.04 (GCC 4.3.3). The problem is intermittent. If it happens you can
maximize any inner window and then restore it and it works again. Likewise I
have noticed using minimize, resize, or other window operations seems to
trigger it. These are anecdotal (if in the first person), as I wasn't taking
notes.
>
> > Also, the shading which is supposed to indicate beats per measure on the
> > step sequencer is static, so when the time signature is changed, it does
> not
> > update to use groups of 3 or whatever you have selected.
>
> This is a huge undertaking actually. And it is currently being
> handled by my new song-editor code as well. The song now has a
> metric-map associated with it. This stores Meter and Tempo changes.
> This way, song editor can be displayed in linear-time, and timesig and
> tempo changes can be displayed with the TimeLine-widget.
>
Oooh, nice. I think I see what your getting at, that should make time-based
dynamics much easier.
> I'm excited to help with this project! Any advice/gotchas or pointers to
> > extended documentation on the underlying architecture of LMMS would be
> > appreciated. I scanned the wiki but I see the documentation is mostly
> > related to using it and getting started with development rather than
> > documenting the system architecture (well I guess I could help with that
> too
>
> I'm excited about new developers ;). I have a few documents. I'll
> try to move them to the Wiki. In the meantime, I recommend hanging out
> in our IRC channel.
>
Thanks! I've been lurking in the channel for a bit, then rambled a long
chunk of text in the IRC hoping to find a non-busy dev to talk to before
bringing it to the list.
--
rezonant
long name: William Lahti
handle :: rezonant
freenode :: xfury
blog :: http://xfurious.blogspot.com/
site :: http://komodocorp.com/~wilahti <http://komodocorp.com/%7Ewilahti>
------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
LMMS-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmms-devel