[Rosegarden-user] Blog on RG Organ Sounds

2015-02-11 Thread Steve Conrad
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

2015-02-11 Thread Steve Conrad
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

2015-02-11 Thread Steve Conrad
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

2015-02-11 Thread Tom Breton (Tehom)
> 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

2015-02-11 Thread D. Michael McIntyre
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

2015-02-11 Thread Steve Conrad
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

2015-02-11 Thread D. Michael McIntyre
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!

2015-02-11 Thread Abrolag
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

2015-02-11 Thread Steve Conrad
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

2015-02-11 Thread Tom Breton (Tehom)
> 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!!!

2015-02-11 Thread Tom Breton (Tehom)

> 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!!!

2015-02-11 Thread Tom Breton (Tehom)
> 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!!!

2015-02-11 Thread mskala
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