From: David O. <da...@ol...> - 2003-01-28 11:54:25
|
Are there any plans for the event list editor? Anyone hacked it since=20 0.8.5? Anyway, I'm going to need to (ab)use it rather seriously with=20 Audiality. Audiality has a "free network" mixer and stuff, and I=20 prefer to control most things directly from the MIDI files. (Ok, A's=20 scripting is cool, but I'd rather not hack custom scripts for every=20 darn song; that's not what they're for.) Problem is that using a pop-up dialo to edit events, and not being=20 able to open it with RETURN or similar, is getting on my nerves. NRPN=20 macro events would also be really rather handy, since my whole mixer=20 control API is NRPN based. (And messing with individual CCs is=20 very... well, messy! :-) I've looked at other sequencers, but so far I like RG best, and it=20 seems to have most of what I need, and it appears to be fast, solid=20 and smooth. I don't really need the heavy score stuff since I'm=20 mostly a "real time record" type of composer - but it doesn't hurt. So, I'm considering adding the features I need. Any guidelines? Plans?=20 Anyone already working on this? I'm not very experienced with Qt, but I'm not entirely new to GUI=20 programming, and definitely not to programming in general. (18=20 years...) //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Chris C. <ca...@al...> - 2003-01-28 12:15:25
|
David Olofson wrote: > Are there any plans for the event list editor? Anyone hacked it since > 0.8.5? Slightly, but not much: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rosegarden/gui/eventview.cpp?sortby=date Always worth working from CVS though, rather than from 0.8.5. > NRPN macro events would also be really rather handy, since my whole > mixer control API is NRPN based. Pardon my heavy-score-stuff slant, but what is NRPN and what would you use it for? > So, I'm considering adding the features I need. Any guidelines? > Plans? Anyone already working on this? AFAIK nobody is seriously working on the event list at the moment, so you're very welcome to (particularly if you happened to start out with some nice generic stuff that any user would benefit from -- I'd like to see in-place editing for the displayed values and better multi-event selection capabilities, myself). You shouldn't need all that much experience with Qt, just keep the API docs to hand. There are probably more subtleties in things like our own base classes than there are in Qt. btw, how do you use Audiality with Rosegarden? I checked out the Audiality site and it suggests it accepts MIDI input from ALSA 0.5 or OSS only, which I'd have thought would rule out driving it from Rosegarden. Chris |
From: David O. <da...@ol...> - 2003-01-28 12:33:45
|
On Tuesday 28 January 2003 13.09, Chris Cannam wrote: [...] > Always worth working from CVS though, rather than from 0.8.5. Yes, of course. > > NRPN macro events would also be really rather handy, since my > > whole mixer control API is NRPN based. > > Pardon my heavy-score-stuff slant, but what is NRPN and what would > you use it for? "Non-Registered Parameter Number" - a "standardized" way of=20 controlling non-standard stuff with greater resolution and more=20 controls than direct CCs. It works exactly like RPNs (Registered=20 Parameter Numbers"), which are used for pitch bend range, master=20 tuning and a few other standard things. Both are based on standard CCs: =09CC 6:=09Data Entry (coarse) =09CC 38:=09Data Entry (fine) =09CC 96:=09Data Button Increment =09CC 97:=09Data Button Decrement =09CC 98:=09NRPN (fine) =09CC 99:=09NRPN (coarse) =09CC 100:=09RPN (fine) =09CC 101:=09RPN (coarse) First, select an RPN or NRPN by sending 101 + 100 or 99 + 98, and then=20 set the value using 6 + 38, or change it using 96 or 97. This is a standard that most synths and sequencers support. IIRC, the GM, GS and XG include extra RPNs and/or NPRNs to manipulate=20 things that you'd normally have to use device specific SysEx for. You=20 can tweak envelopes, filters etc. (Not my cup of tea, though - I=20 couldn't care less for GM, GS and XG.) > > So, I'm considering adding the features I need. Any guidelines? > > Plans? Anyone already working on this? > > AFAIK nobody is seriously working on the event list at the moment, > so you're very welcome to (particularly if you happened to start > out with some nice generic stuff that any user would benefit from Well, for starters, I'll basically just implement what Cakewalk has=20 had since the early Windows versions, if not longer. I would think=20 we're talking about the kind of features some people (like myself)=20 will look for within 5 minutes after starting the application for the=20 first time. > -- I'd like to see in-place editing for the displayed values and > better multi-event selection capabilities, myself). First things on my unwritten TODO. Then comes (N)RPN macros, although I'm not 100% sure how to do it. How=20 many parameters can the internal sequencer events take? The idea is to make them real events, so that the sequencer can handle=20 them in an intelligent way when sending them. Most importantly, you=20 don't have to send the (N)RPN addressing events all the time if=20 you're ramping an (N)RPN. During playback, you only have to send it=20 when a different address is specified. > You shouldn't need all that much experience with Qt, just keep the > API docs to hand. There are probably more subtleties in things > like our own base classes than there are in Qt. Ok, I'll jump in and see if I can figure out where to start. :-) > btw, how do you use Audiality with Rosegarden? I checked out the > Audiality site and it suggests it accepts MIDI input from ALSA 0.5 > or OSS only, which I'd have thought would rule out driving it from > Rosegarden. Well, that was 0.1.0. I've just rewritten the device I/O layer (or=20 rather, added one and ripped out the spaghetti), and I'v implemented=20 ALSA 0.9 rawmidi input. ALSA sequencer is next. (Got sidetracked by=20 some reverb ideas, which is why I didn't finish it tonight...) However, rawmidi does sort of work with 0.1.0 - and you can always do=20 a h/w loopback if all else fails. ;-) //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Chris C. <ca...@al...> - 2003-01-28 13:07:08
|
David Olofson wrote: > "Non-Registered Parameter Number" - a "standardized" way of > controlling non-standard stuff with greater resolution and more > controls than direct CCs. [...] Then comes (N)RPN macros, although > I'm not 100% sure how to do it. How many parameters can the internal > sequencer events take? An event can have any number of parameters (referred to as properties). They're typed (Int -- which is actually a long --, String, Bool and a RealTime sec/usec tuple) and do not have to be declared statically (the Event class is really just a fancy hash-map from names to these various types) although they mostly are declared somewhere. Events themselves also have a type, which again can be any old string. See docs/code/creating_events.txt for some documentation about Events, although the description of non-persistent properties is a little out of date (they're now rather more persistent than they used to be). Feel free to ask about anything else. I'm less confident about how you'd set about getting your events expanded into MIDI events when sequencing them. That's more Bownie's territory, but he's not around at the moment: he's unavailable during the day GMT for the next couple of weeks. Besides the Event class (in base/Event.h) which we use for internal data storage, we also have a class called MappedEvent (sound/MappedEvent.h) which maps closely to a single MIDI event, and probably the thing to do would be to tweak the code that converts Events to MappedEvents (gui/sequencemanager.cpp), which at the moment also has a broadly one-to-one correspondence between Events and MIDI events, so as to produce the relevant version of the MIDI event for each NRPN Event according to context. But I'd say you'd be well advised to hack at the basic GUI stuff you're interested in doing first, as it's surely a good idea to get some feedback from Bownie when he's around. Chris |
From: Guillaume L. <gla...@te...> - 2003-01-28 13:23:20
|
On Tuesday 28 January 2003 13:33, David Olofson wrote: > On Tuesday 28 January 2003 13.09, Chris Cannam wrote: > > > Pardon my heavy-score-stuff slant, but what is NRPN and what would > > you use it for? > > "Non-Registered Parameter Number" Damn. I was hoping for "Non-Reverse Polish Notation". Then again, that wouldn't have been very interesting, Polish Notation is fun only when reversed. -- Guillaume http://www.telegraph-road.org |
From: David O. <da...@ol...> - 2003-01-28 13:51:29
|
On Tuesday 28 January 2003 14.23, Guillaume Laurent wrote: > On Tuesday 28 January 2003 13:33, David Olofson wrote: > > On Tuesday 28 January 2003 13.09, Chris Cannam wrote: > > > Pardon my heavy-score-stuff slant, but what is NRPN and what > > > would you use it for? > > > > "Non-Registered Parameter Number" > > Damn. I was hoping for "Non-Reverse Polish Notation". > > Then again, that wouldn't have been very interesting, Polish > Notation is fun only when reversed. Actually, that's not too far from this "change event type but keep=20 properties" thing that some sequencers can do... ;-) //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: David O. <da...@ol...> - 2003-01-28 13:12:46
|
On Tuesday 28 January 2003 14.04, Chris Cannam wrote: [...] > An event can have any number of parameters (referred to as > properties). They're typed (Int -- which is actually a long --, > String, Bool and a RealTime sec/usec tuple) and do not have to be > declared statically (the Event class is really just a fancy > hash-map from names to these various types) although they mostly > are declared somewhere. Events themselves also have a type, which > again can be any old string. Speaking of event types; is there a clean way of converting an event=20 into another type? (Cakewalk lets you change the type of events, and=20 "sort of" keeps the properties, which is handy at times. Not=20 essential, though.) Also can you create events in the event list editor as of now? (Can't=20 seem to find that feature if it's there...) > See docs/code/creating_events.txt for some documentation about > Events, although the description of non-persistent properties is a > little out of date (they're now rather more persistent than they > used to be). Feel free to ask about anything else. Thanks. [...Events, MappedEvents and stuff...] Sounds more like my kind of stuff than GUI programming, actually, but=20 I'll have to start with the GUI stuff (basic editing) anyway, since=20 that's the most urgent part right now. //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Chris C. <ca...@al...> - 2003-01-28 14:47:47
|
David Olofson wrote: > Speaking of event types; is there a clean way of converting an event > into another type? (Cakewalk lets you change the type of events, and > "sort of" keeps the properties, which is handy at times. Not > essential, though.) There is no way to do this down at the Event level, no. That's not for any technical reason (a method Event::setType() would be trivial and wouldn't affect any of the properties) but because it felt like a bad idea. It could certainly be done if there was a compelling reason. > Also can you create events in the event list editor as of now? (Can't > seem to find that feature if it's there...) No, you can't. You can't create an Event literally (from type and properties) anywhere in the GUI at all. Irritating, isn't it? btw the code for the event editor dialog (the one that pops up when you double-click on an event) is a bit of a mess and has few redeeming features. The dialog itself is not too hot either. If you happened to think of a great way to improve on it, even by throwing it away and writing another, I doubt anyone would complain. (I wrote it, and I certainly wouldn't.) But maybe that's a bit of an ambitious proposal to start with, and maybe the current dialog could be good enough, with a few tweaks. Chris |
From: David O. <da...@ol...> - 2003-01-28 15:29:55
|
On Tuesday 28 January 2003 15.43, Chris Cannam wrote: > David Olofson wrote: > > Speaking of event types; is there a clean way of converting an > > event into another type? (Cakewalk lets you change the type of > > events, and "sort of" keeps the properties, which is handy at > > times. Not essential, though.) > > There is no way to do this down at the Event level, no. That's > not for any technical reason (a method Event::setType() would be > trivial and wouldn't affect any of the properties) but because > it felt like a bad idea. It could certainly be done if there > was a compelling reason. Well, it's kind of handy to convert between Pitch Bend, Pressure, CCs,=20 and perhaps even RPNs and NRPNs - but I would agree that it's=20 probably better done on a higher level. It's not really useful to=20 just change the type. You also have to make sure the properties get=20 translated in useful ways, or you might as well just replace the=20 event with a new one, with default values. > > Also can you create events in the event list editor as of now? > > (Can't seem to find that feature if it's there...) > > No, you can't. You can't create an Event literally (from type > and properties) anywhere in the GUI at all. Irritating, isn't it? Yes! :-) I don't have a "dump mixer config as NRPN" feature yet, and I don't=20 have an editor, so entering the events manually is the only=20 alternative to hacking C code. (I don't even have a complete binding=20 for the scripting language yet, so I can't hack mixer configurations=20 as scripts either. Although that would be trivial to implement. In=20 fact, I'll probably do it before releasing 0.1.1, to get that ugly C=20 code out of the examples that use the C API.) > btw the code for the event editor dialog (the one that pops up > when you double-click on an event) is a bit of a mess and has > few redeeming features. The dialog itself is not too hot either. > If you happened to think of a great way to improve on it, even > by throwing it away and writing another, I doubt anyone would > complain. (I wrote it, and I certainly wouldn't.) But maybe > that's a bit of an ambitious proposal to start with, and maybe > the current dialog could be good enough, with a few tweaks. Well, my primary worry is to avoid using the dialog at all most of the=20 time. I can see the interesting values in the list, so why pop up a=20 dialog to edit them? That said, I'd think some events just have too many or to "weird"=20 properties to be fully representable in the tabel, and that's where=20 that dialog comes in. I'll get there eventually, I guess... //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Chris C. <ca...@al...> - 2003-01-28 16:52:59
|
David Olofson wrote: > Well, my primary worry is to avoid using the dialog at all most of the > time. I can see the interesting values in the list, so why pop up a > dialog to edit them? I was vaguely thinking you might want to modify it for creating events, rather than just editing them. But that could be done in- place too, to a great extent. Chris |
From: David O. <da...@ol...> - 2003-01-28 16:54:30
|
On Tuesday 28 January 2003 17.48, Chris Cannam wrote: > David Olofson wrote: > > Well, my primary worry is to avoid using the dialog at all most > > of the time. I can see the interesting values in the list, so why > > pop up a dialog to edit them? > > I was vaguely thinking you might want to modify it for creating > events, rather than just editing them. But that could be done in- > place too, to a great extent. Yes. The way Cakewalk does it is rather handy: Hit "INS" and you get a=20 copy of the event under the cursor. Then hit ENTER on the event type=20 field, and you get a selector dialog where you can change the event=20 type if you like - or just go on and edit the values. //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Guillaume L. <gla...@te...> - 2003-01-28 16:01:49
|
On Tuesday 28 January 2003 16:29, David Olofson wrote: > Well, my primary worry is to avoid using the dialog at all most of the > time. I can see the interesting values in the list, so why pop up a > dialog to edit them? I've committed a short change which enables KListView's edit-in-place feature, but it conflicts with the edit dialog (both are activated by double-clicking). -- Guillaume http://www.telegraph-road.org |
From: David O. <da...@ol...> - 2003-01-28 16:10:52
|
On Tuesday 28 January 2003 17.01, Guillaume Laurent wrote: > On Tuesday 28 January 2003 16:29, David Olofson wrote: > > Well, my primary worry is to avoid using the dialog at all most > > of the time. I can see the interesting values in the list, so why > > pop up a dialog to edit them? > > I've committed a short change which enables KListView's > edit-in-place feature, but it conflicts with the edit dialog (both > are activated by double-clicking). *Right* after I checked it out from CVS...! :-) I'll grab it and have=20 a look. Anyway, QTable seems to be more like what I want. It lets you move=20 around with the cursor keys, spreadsheet style, so you don't have to=20 grab for that bl**dy mouse to click all the time. Looks a bit heavy=20 though, and I don't know how different it is from the application=20 POV. (Just played with them in designer to get an idea of the=20 features and feel.) //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |
From: Guillaume L. <gla...@te...> - 2003-01-28 16:18:29
|
On Tuesday 28 January 2003 17:10, David Olofson wrote: > *Right* after I checked it out from CVS...! :-) I'll grab it and have > a look. cvs update is your friend. > Anyway, QTable seems to be more like what I want. I recently dabled with QTable as well. Its problem is that it doesn't have the notion of row-wide items, only cell-wide. That can be added, of course, and that shouldn't be very hard. Other than that, it is clearly more flexible than KListView, so the change is probably worth it. -- Guillaume http://www.telegraph-road.org |
From: David O. <da...@ol...> - 2003-01-28 16:29:09
|
On Tuesday 28 January 2003 17.18, Guillaume Laurent wrote: > On Tuesday 28 January 2003 17:10, David Olofson wrote: > > *Right* after I checked it out from CVS...! :-) I'll grab it and > > have a look. > > cvs update is your friend. Yep. I just found the timing a bit amuzing... :-) > > Anyway, QTable seems to be more like what I want. > > I recently dabled with QTable as well. Its problem is that it > doesn't have the notion of row-wide items, only cell-wide. Yeah, I guessed. (About the same as the corresponding widgets in=20 VCL/Delphi, which I've been using a bit at work.) > That can > be added, of course, and that shouldn't be very hard. Other than > that, it is clearly more flexible than KListView, so the change is > probably worth it. I'll look into it. Need to think some before hacking away, though.=20 (And I think veeeery sloooowly right now; been awake for way too many=20 hours...) //David Olofson - Programmer, Composer, Open Source Advocate =2E- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `---------------------------> http://olofson.net/audiality -' --- http://olofson.net --- http://www.reologica.se --- |