[Rosegarden-user] Blog on RG Organ Sounds
I have written up a short article on my experience experimenting with organ sounds on Rosegarden using different synthesizers and effects processors. It may be of some interest to readers of this list. http://steve-conrad.com/blog/?page_id=65 -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
Csound is utterly indifferent to note names and accidentals. Notes are called by their frequencies (yuck), midi note number or most commonly PCH notation which is what Rosegarden exports. In PCH, octaves are integers and the notes within an octave are decimals, so that 6.00 is middle C, 7.04 is the E a tenth above middle C etc. In this scheme 4.24 is also middle C, by the way, so transposition by simple addition (but not subtraction) is possible. Subtraction doesn't work because 6.00 - 0.01 = 5.99, which is Eb eight octaves and a minor third above middle C rather than the B just below it. -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
Thanks -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
> Thanks. That's helpful. > > Accessing bar line positions is more trouble than it's worth for me > right is what that part of your answer tells me. That frees up some time > for me. > > As for the ties, a note would have two properties: one for tied from > and another for tied to. Any idea where I could find that code? Just > looking quickly, I didn't see anything like that in event.* or > notationtypes.* and there doesn't seem be be a file called note anywhere > in the tree. Tie properties are defined in base/BaseProperties.h: TIED_FORWARD and TIED_BACKWARD. > I'm expecting there to be an accessor method like note->getTieForward() > which returns the note to which a given note is tied but I can't find > one. There is SegmentNotationHelper::getNextTiedNote, but as Michael suggests you may be better off using performance duration. That'd be SegmentPerformanceHelper::getSoundingDuration. If I might offer another suggestion, when I redid Midi export, it made more sense to fake playing the composition, collect all the MappedEvent, and translate MappedEvents instead of Events. That automatically handled all the funny stuff like repeats and ornaments. And ties. OTOH you lose some notational info like repeats and note names (A# vs Bb). Not sure how well this fits CSound, which I barely know, but the sort of code involved can be copied from MidiInserter.h & MidiInserter.cpp if you choose that route. Good luck! Tom Breton (Tehom) -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
On 02/11/2015 05:48 PM, Steve Conrad wrote: > I'm expecting there to be an accessor method like note->getTieForward() It's immeasurably more complicated than that. > which returns the note to which a given note is tied but I can't find > one. Or maybe it's just note->getProperty('tiedForward') and I have to > find where the properties are defined. In either case, I can't find it. > But I'm hardly a well informed searcher. That's the gist of it. Look at LilyPondExporter.cpp for code snippets. Properties can be tricky, because you have to make sure it has() them before you can get() them. If you try to get() something it doesn't has() then it will crash. That's true for most things, but I'm not sure about ties. Haven't gone into that code in a long time. > use double dots to get the sevens). That is to say a dotted quarter note > tied to a regular quarter note can't be collapsed into anything else. Hmmm... I wonder if a whole note in a time of 5/8 would work. It probably would. The other possibility is to have Csound work off of the performance duration instead of the display duration. It most likely already does anyway. There's a little more to this than I have time to really think about just now, but I'm around. -- D. Michael McIntyre -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
Thanks. That's helpful. Accessing bar line positions is more trouble than it's worth for me right is what that part of your answer tells me. That frees up some time for me. As for the ties, a note would have two properties: one for tied from and another for tied to. Any idea where I could find that code? Just looking quickly, I didn't see anything like that in event.* or notationtypes.* and there doesn't seem be be a file called note anywhere in the tree. I'm expecting there to be an accessor method like note->getTieForward() which returns the note to which a given note is tied but I can't find one. Or maybe it's just note->getProperty('tiedForward') and I have to find where the properties are defined. In either case, I can't find it. But I'm hardly a well informed searcher. Csound understands legato ties between notes of different pitch, but it has no reason to use ties between notes of the same pitch because score events don't take place in the context of a staff with bars and time signatures. Notes just have arbitrary start times and durations. Very economical if you take a second to think about it. Unfortunately, collapse all will only work for notes with durations that divide by 1,2,3,4,6,7 or 8. (I'm assuming that collapse all remembers to use double dots to get the sevens). That is to say a dotted quarter note tied to a regular quarter note can't be collapsed into anything else. Still, seven out of eight is pretty good, so I'll be using that in the future when doing Csound exports. Thanks. -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Bars & Ties
On 02/11/2015 02:54 PM, Steve Conrad wrote: > How would I go about rounding up the bar lines in a segment? It would > not appear that a bar line is an event, since in jpff;;;'s CsoundExport > code, all non-note events are printed as a comment line, and bar lines > aren't there in the output. Bar lines are calculated. > Same thing for ties. They aren't there either. If they aren't an event, > what are they, and how do I enumerate them? I'm more than willing to > spend a bit of time reading the code if someone could point me in the > right direction. Ties are event properties. When the left note is tied forward and the right note is tied back, that's when a tie appears, and when it gets exported to LilyPond. I've never looked at Csound. If Csound can't handle ties, one easy workaround would be to select all and collapse equal pitch notes to get rid of all the ties, at the expense of potentially corrupting bars with over-long notes. > I'm trying to add a commented mention of the bar numbers to the csound > export. Also trying to correct the way two tied notes are output as two > separate notes instead of one long one. > > Not being familiar with the RG codebase, I'm running up against a bit of > a needle in a haystack problem though. Being familiar to some extent, I'm still not sure of a good approach for getting bar numbers to write out. There's a getBarNumberAt() or something to that effect, but get it at what? The LilyPond exporter has an option to write bar checks at the end of bars, but does it write the numbers? If it does, does it compute its own numbers or get getBarNumberAt()? I don't know man, I haven't looked at any of that code in quite a long time. Just thinking out loud more than being helpful. -- D. Michael McIntyre -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Unwanted CCs - Long!
On Wed, 11 Feb 2015 14:22:24 -0500 "Tom Breton (Tehom)" wrote: > > On Thu, 5 Feb 2015 20:22:34 + > > Abrolag wrote: > > > > [...] > > I've tried attaching the MIDI version of my test file if anyone wants to > > have a > > look at it and see what happens. > > > > Have looked at your test MIDI and let MidiEvent::print trace it out. > Thank you, and also thank whoever created MidiEvent::print years ago. > > The one wrong-looking thing I see is that we never erase the msb and lsb > variables. Once case MIDI_CTRL_CHANGE has set lsb or msb, case > MIDI_PROG_CHANGE will consider it set to that value, forever, until case > MIDI_CTRL_CHANGE sets another value. We don't aim lsb and msb at a > specific channel, either, so other channels' MIDI_PROG_CHANGEs could be > affected. > > My suspicion is that remembering lsb,msb after MIDI_PROG_CHANGE confuses > later MIDI_PROG_CHANGEs that don't have bank controllers, and also we > probably shouldn't share them between channels. > > Does this make sense to you? > > Tom Breton (Tehom) > > PS: Added a CC to the devel list. Does this still need to go to RG-user? Hi Tom. Here be dragons! :) I've been wrestling with bank & program changes since my first hardware synth in 1991 - and I'm still not sure I know what I'm talking about. However, I still have 3 hardware synths (although seldom used now). None use both MSB & LSB One uses MSB, the others use LSB The two that use LSB actually send both (zero for MSB). The other one only sends MSB All send a program change whenever they send a bank change. None want a bank change when *getting* a program change they remember their last bank setting (including over a power cycle). One of them, QS300, can accept a program change 'silently' to a non-sounding channel which will then pick up cleanly on the next note, but if you send a bank change as well the entire sound cuts out. They all only transmit on one channel, but will accept MIDI on all 16. Bank is applied to all channels whichever channel it's sent on. Program is channel specific. This makes sense as bank changes are swapping out ROM sets, program changes just select a voice within the ROM. My most recent one is mid 1990s so things have probably changed considerably since then. I would expect them to be even more flexible. You can probably do silent bank changes now. As far as I know there are still none that use both MSB & LSB though! There is *no* sensible plan as to what bank numbers are used. 1,2,3,4,5... forget it! With all of this I think the only safe thing for Rosegarden to do is to pass on exactly what it gets without trying to make any interpretation. How it wants to represent banks for display purposes is really up to you, but currently it changes them (seemingly just LSB) and I think that is quite wrong. Since working on Yoshimi, I've developed an even more keen interest in this and in order to try and keep up, our bank changes can be set to receive either MSB or LSB, and work across all channels but have no effect at all until there is a (channel specific) program change. As there is no physical ROM the synth engine only knows about voice patches currently in memory. We effectively have an equivalent to an alternate MSB or LSB as we have a control that sets the entire directory structure that banks are read from (also silently). The test file checks that all these work including trapping invalid bank and program changes. You'll notice there are changes on one channel while others have continuous notes. I would guess that most soft-synths would work in pretty much the same way if they accept MID controls. P.S. I'm not on the developers list just the users one. If this is getting too involved for users I guess I could subscribe, but I'd actually rather stay as I am :) P.P.S. As a matter of interest, I've attached the most complete MIDI chart V2 I can find. It's actually a merge of several! -- Will J Godfrey http://www.musically.me.uk Say you have a poem and I have a tune. Exchange them and we can both have a poem, a tune, and a song. Title: MIDI Standard Controller Numbers MIDI Controller Numbers Summary of the MIDI controller codes (V 2.0) in decimal and hexadecimal DecimalHexController Name 000hBank Select MSB - (rarely implemented) 101hModulation Wheel MSB 202hBreath Controller MSB 303h- - 404hFoot Controller MSB 505hPortamento Time MSB 606hData Entry MSB 707hVolume MSB - (formerly Main Volume) 808hBalance MSB 909h- - 100AhPan MSB 110Bh_expression_ MSB 120ChEffect Control 1 MSB 130DhEffect Control 2 MSB 140Eh- - 150Fh- - 1610hGeneral Purpose Controller 1 MSB 1711hGeneral Purpose Controller 2 MSB 1812hGeneral Purpose Controller 3 MSB 1913hGeneral Purpose Controller 4 MSB 2014h- - 2115h- - 2216h- - 2317h- - 2418h- - 2519h- - 261Ah- - 271Bh- - 281Ch- - 291Dh- - 301Eh- - 311Fh- - 3220hBank Select LSB 3321hModulation Whee
[Rosegarden-user] Bars & Ties
How would I go about rounding up the bar lines in a segment? It would not appear that a bar line is an event, since in jpff;;;'s CsoundExport code, all non-note events are printed as a comment line, and bar lines aren't there in the output. Same thing for ties. They aren't there either. If they aren't an event, what are they, and how do I enumerate them? I'm more than willing to spend a bit of time reading the code if someone could point me in the right direction. I'm trying to add a commented mention of the bar numbers to the csound export. Also trying to correct the way two tied notes are output as two separate notes instead of one long one. Not being familiar with the RG codebase, I'm running up against a bit of a needle in a haystack problem though. (Sent this once already, but from the wrong email. Sorry if it double posts eventually). -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Unwanted CCs - update
> On Thu, 5 Feb 2015 20:22:34 + > Abrolag wrote: > > [...] > I've tried attaching the MIDI version of my test file if anyone wants to > have a > look at it and see what happens. > Have looked at your test MIDI and let MidiEvent::print trace it out. Thank you, and also thank whoever created MidiEvent::print years ago. The one wrong-looking thing I see is that we never erase the msb and lsb variables. Once case MIDI_CTRL_CHANGE has set lsb or msb, case MIDI_PROG_CHANGE will consider it set to that value, forever, until case MIDI_CTRL_CHANGE sets another value. We don't aim lsb and msb at a specific channel, either, so other channels' MIDI_PROG_CHANGEs could be affected. My suspicion is that remembering lsb,msb after MIDI_PROG_CHANGE confuses later MIDI_PROG_CHANGEs that don't have bank controllers, and also we probably shouldn't share them between channels. Does this make sense to you? Tom Breton (Tehom) PS: Added a CC to the devel list. Does this still need to go to RG-user? -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!
> Perhaps I misunderstood your setup - are you reading a MIDI file in, it > contains bank changes, and when you play back they are messed up? Or they > show the wrong banks in the Instrument Parameter Panel? That would make > this code suspect, otherwise I'm afraid I don't see a connection. OK, catching up on my email, I read the other thread (without "AHA!"), so I see that is essentially what's going on. Now it's just nagging at me, if simply copying over the lsb and msb isn't right, what *is* supposed to happen? Or have we overlooked some minor mistake that corrupts the whole thing? Will look further, and look at the MIDI Abrolag sent - thank you for that. Tom Breton (Tehom) -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!
> I just had a nose around in MidiFile.cpp - without full hazmat too :) > > At line 1221 you have the start of a section that interprets bank changes. > This > is very risky as almost every synth maker has a different way of handling > them. > > Commenting out both the msb and lsb code appears to cure the problem. > > Can someone more knowledgeable have a look and see what other implications > there > may be? The first thing that jumps out at me is that it's part of convertToRosegarden, which imports MIDI into RG. It's not playing or exporting anything. Perhaps I misunderstood your setup - are you reading a MIDI file in, it contains bank changes, and when you play back they are messed up? Or they show the wrong banks in the Instrument Parameter Panel? That would make this code suspect, otherwise I'm afraid I don't see a connection. Tom Breton (Tehom) -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user
Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!
On Tue, 10 Feb 2015, D. Michael McIntyre wrote: > I was wondering about that, now that you mention it. Controller banks? > Does anything support more than 127 controllers? Are bank changes Controllers have standardized numbers - e.g. 7 is "master volume" - so the main issue isn't really that a single device has more than 127 controllers (although yes, some DO), but that there are more than 127 different kinds of controllers in the world. It's made worse by the fact that a single controller number only handles a 7-bit value, so if you need finer granularity than that, you need to assign two or more of the 127 controller numbers to the more and less significant chunks of a finer-grained value. And it's also true that controller numbers ended up being used for other things, such as selecting banks for the separate "program change" messages. The namespace of 127 controllers ran out very fast. -- Matthew Skala msk...@ansuz.sooke.bc.ca People before principles. http://ansuz.sooke.bc.ca/ -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Rosegarden-user mailing list Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-user