SourceForge has been redesigned. Learn more.

#450 More sensible dynamic texts


Several sequencers recognize only the standard dynamics from ppp to fff and divide them in eight equal areas where each dynamic increases the volume by 16 related to the previous one. Usually the result is: ppp 15 pp 31 p 47 mp 63 mf 79 f 95 ff 111 fff 127. That sounds equilibrated but very mechanic.
Rosegarden supports a wide range of dynamics from ppppp to fffff. However these dynamics increase in a ratio that the louder they are the biiger the volume difference between them. This makes sense mathematically and sounds more realistic. However if we

1 Attachments


  • Fernando A. Martin

    (Sorry I saved the incomplete ticket by mistake and now I cannot edit it. Let finish here, please.)
    However if we create 12 bars of quarter notes, use a different dynamic at each one and then interpret it using all interpretations we get the following result:
    ppppp 11 10 10 10
    pppp 22 20 21 20
    ppp 33 31 32 31
    pp 44 41 43 41
    p 67 62 64 62
    mp 89 83 86 83
    mf 100 93 97 93
    f 117 109 113 109
    ff 123 114 118 114
    fff 127 119 124 119
    ffff 127 124 127 124
    fffff 127 127 127 127
    So we notice that at some dynamic changes the gap between one volume and another becomes a little big. For example jumping from 62 to 89 without even passing by the 70's values. Or having a measure where the first note is 127 imediately followed by another one that is 119. This may cause some unwanted effects with some soundfonts depending on how their layers are related to the volume changes. (One example of this may be if you export an rg file as midi and play it using the gigabank Maestro concert grand piano.)
    So what if we want to define more specific dynamic values without using hairpins or set event velocities?
    To solve this I edited the file InterpretCommand.cpp and added some lines.
    If you use this file besides using the text dynamics pp, p, mp etc you can also type the letter d (from dynamics) followed by any multiple of 5 to define an specific dynamic value. For example if you type d5 dynamics will become 5, if you type d70 dynamics will become 70 and so on.Of course if when you use the interpret command stress beats are on these values may be slightly changed but even so you may have more precise control over dynamics.
    Since I have already changed the code it will place no extra burden on developers. Also the changes I made do not interfere with the way rosegarden interpret standard texts such as mp, mf etc.
    So I would like to ask developpers if they could place the changes I made at official rosegarden code so that anyone interested could use it without having to edit InterpretCommand.cpp at every new version.

    Last edit: Fernando A. Martin 2014-03-23
  • D. Michael McIntyre

    The 127 119 124 119 must also have "stress beats" applied to it, I'm thinking. I've always thought Chris's implementation of that interpreter was pretty slick, and sounded pretty convincing for mechanical computation.

    Your hackable text idea seems like a great approach to me. If you don't want to fool with it, it's not in your face, and if you do, there it is.

    Next time, include a patch instead of the entire .cpp file.

  • D. Michael McIntyre

    I have different thoughts about how I might have gone in a different direction with this, but you made yourself happy, and I did the easy thing and just committed it like you had it. Revision 13666.

  • Fernando A. Martin

    I think the stress beats implementation is unique becuase it goes farther from that mechanical playing style from other sequencers and goes closer to a more humanized one. I don't want to give up on it but from time to time I find some soundfonts that sound good but don't fit well to this feature. Since they vary greatly I created these extra codes to give direct access to numbers and they may probably work fine with or without stress beats.
    I didn't understand exactly how the patch session works here and this is why I submitted the whole cpp file in a feature request. But after all thank you very much for accepting my idea.

    Last edit: Fernando A. Martin 2014-03-24
  • D. Michael McIntyre

    contributing tutorial here:

    This time around it was no big deal, but I remember a user who contributed some absolutely massive bolt-on addition as a tarball against an old release version, changing dozens or even hundreds of files. It was just too much work to do anything with that, and I had to tell him to resubmit as a patch against a development tree, which he never did. All that work was lost forever because a guy got started on the wrong foot.

    It's for the good of your code that I nitpick over how to submit things. This is probably much more true now that I'm working crazy long hours and barely have any time for Rosegarden.

  • Fernando A. Martin

    Let me see if I understand things right.
    This time, since my code was not too much, did you include it on revision 13666? But next times I want to contribute with some must I follow the contributing tutorial procedure?
    Is this the correct understanding?

  • D. Michael McIntyre

    Exactly. It wasn't such a big deal this time, so I did it the hard way and your code has been committed. In the future, please be kind enough to follow procedure. Thank you.

  • Ted Felix

    Ted Felix - 2014-08-17
    • status: open --> closed
    • assigned_to: D. Michael McIntyre
  • Ted Felix

    Ted Felix - 2014-08-17

    Committed as r13666.

  • Fernando A. Martin

    I would like to thank you again for having accepted my idea and comprehensively now this ticket is closed. However I would just like to give a last suggestion about it. Would it be possible to mention this implemented feature in next release notes? Otherwise many people who have not read this ticket would not even know about its existence and probably would not even give it a try.

    • D. Michael McIntyre

      This has been documented in the release note since March, and it will be published when I do the release. I actually rolled a tarball for 14.06, but never released it. I plan to release 10.10 next month to get back on track.

      I have been dealing with a lot of personal problems this year.

  • Fernando A. Martin

    Thank you very much.
    Even though you have had those problems still I have seen very few bug reports on sourceforge. It seems that Rosegarden was very improved lately.
    Good work.
    I'm eagerly waiting for the next version.


Log in to post a comment.