Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#433 Makeadjust/interpret function automatic

Staff Picks
closed
interpret (1)
1
2013-10-09
2012-10-02
No

I think one wonderful feature of Rosegarden is the option interpret under adjust menu in notation editor. The interpretation is superb rising a little bit the velocity of notes at the strong measures, creating articulations of notes depending on tenuto, staccato or no symbols and so on.
But it's very a little arduous to select all events in each individual segment and choose the option adjust/interpret everytime we want to hear how the music we're typing is sounding.
Could you make all the effects of interpret option be applied automatic to a note at the moment we type or modify it. For example, when we insert a note it could be with standard velocity if there were no dynamics on that segment. If there were a dynamic, crescendo or diminuendo or one would be insert later so notes would automatically adjust their velocity. The same could happen if a tenuto or staccato were added to one or more notes. So they would automatically adjust their interpretation.
And what if someone didn't want the interpretations to take effect? There could be a menu option or a check box allowing to turn off interpretation.
After all it would be just a matter of making an option that already exists work automatically. :)
What do you think about it?

Discussion

  • This caught my eye, and I might take a nibble after all. Hrm.

    This really is a good idea, and it's something that could be built out of existing parts with a small amount of new wiring to string it all together.

    I see it fairly clearly, and with luck it might not take more than one evening.

    • assigned_to: D. Michael McIntyre

    • milestone: Will Accept Patch --> 12.12

     
  • Thank you for accepting my idea. I will like so much to see it working and I believe it will be very useful to many users.

     
  • I never got that done, but it's still a good idea. Reminding myself of this.

     
  • I think it's a really desirable feature. If we imagine that we are trying to create a realistic sequence so almost every instrument would neeed the interpret function all the time. Among the most popular instruments only organs and harpsichords would not need dynamics, so this where switching off one of the interpretation options would be fine. And for harp and drums articulation could be left on or off because in reality they keep sustaining until they fade. But in almost all situations some interpretation or all switched on all the time would prove helpful. Thank you for reminding yourself of this.

     
    • Group: 12.12 --> Staff Picks
     
  • OK, thinking about a real implementation...

    Instrument makes good sense as a place to hang this. Probably put it in the instrument parameters box, turned on by default. You'd only want to turn it off for organ and harpsichord, and... ?

    Needs some per-instrument configuration page type thing where you adjust which interpretations to apply. Not too hard.

    Fire it every time you insert an event when entering manually or step recording...

    Which brings me to an important question before I go on...

    If I enter a note in isolation some distance away from a dynamic, select only that note, and apply the interpretation, does it adjust for that dynamic? In other words, does the interpreter scan backwards beyond the selection?

    The answer is yes, yes it does. That's good news!

    I can probably add some GUI bits and then wrap the whole thing up in a MacroCommand to add an interpret command to the insert-a-note command. Not sure what the actual commands are off the top of my head.

    Hmmmmm... It's a good bit of fiddling, but probably no more than one day of work. Unless I run into some unforeseen obstacle, this seems like a viable idea that is likely to see light.

     
  • Very interesting! You came up with good ideas about how implementing it.
    What I had in mind is that automatic interpretation would work the same way the adjust/interpret command does. Currently it has a box where we can check if we want to apply all available interpretations or only some of them. So I imagine that it could happen automatically. And you brought a really important question about where it would be implemented in the guy. Really "instrument" or "track" would be a nice place to put it.
    Going back to my example in a Harpsichord Concerto such as BWV 1052 strings would have all interpretations applied all the time but the harpsichord would have articulations (leggato, sttacato) turn on but dynamics and hairpins turned off. On the other hand on Handel's harp concerto the harp could have controller 64 switched on except on stops and it would make it unnecessary for interpretation to have articulation on.
    In order that it works right it really have to happen the way you said. Even if we enter a note far from the dynamic interpretation should be applied when note is inserted. I also imagine other situations. When we insert a note initially it is expected to be played with +/-90% of the written duration. But at the moment we mark it with tenuto it is then expected to be played with 100% duration, or +/-40% if we mark it with sttacato.
    Thank you for the attention. I'm excited about the possibility of it coming true! For 3 years I use Rosegarden and I really enjoy its realistic interpretation and it's hability to connect to other synthesizers and manage more than 16 channels. I imagine that if you implement this requested feature instead of waiting the long time Ubuntu/Mint takes to update I will compile Rosegarden myself to test it. :) Thanks.

     
    Last edit: Fernando A. Martin 2013-10-02
  • I started to dive into the code with a serious eye toward implementation. There are a lot of things I hadn't considered.

    Many different actions need to invoke the interpreter. Add a tenuto, invoke the interpreter. Add a slur, invoke the interpreter. Add a crescendo hairpin, invoke the interpreter.

    Some of these actions really do need to work on a larger area of the composition than the one you will have selected at the time you are performing the action. Add a crescendo, it will interpret the notes you selected, but the louder dynamic won't be in effect for notes that follow unless you go in and re-interpret those notes manually.

    I've entered a line of notes, and now I go back and add the dynamics. I never add the dynamics to an empty score and then fill it with notes. When I enter the dynamic, no notes are selected, so I have to go back and re-interpret those notes manually.

    There are a lot of situations where manual selection is necessary to allow the interpreter to work well. I can think of ways around that, but none of them strike me as a good idea.

    I offer a counterproposal:

    How about a new "interpretations toolbar" for the notation editor. The toolbar features checkable items to control the four types of interpretations that are available, and a big button to click to make it go. Once you have everything set up like you want, you just hit the [I] button periodically, and you don't have to go through the business of making a selection and choosing options each time.

    It isn't quite what you're dreaming of, but it's much more practical to implement, and it seems to me it would be rather convenient. You still have to click a button manually from time to time, but it's still a more streamlined process than Ctrl+A Alt+J I Enter.

    This also offers the maximum flexibility to fine tune the performance safely. Sometimes you want to adjust velocity manually or use the matrix to tweak the performance durations, and if you did that but forgot to turn off the auto interpreter, you might not realize your hand work had been destroyed until much too late. With the interpreter needing to be invoked manually, but more convenient to access, you'd be less likely to misuse it by accident.

    The more I think about it, the more it seems to me that this interpret toolbar is a pretty good way of improving things without creating a huge number of potential problems to work through. It gets my vote.

     
    • I think you really grasp the point! And you thought about it deeped than I did.
      I really use Ctrl+A Alt+J I Enter and it becomes tiring to do it hundred times in a long composition. But I never thought what harm interpret on all the time could cause.
      I didn't find an arpeggio function in Rosegarden (similar to what is played when you have an arpeggio symbol added to a chord in Musescore). If it has I missed it. So in piano pieces, after the whole segment has been interpreted, sometimes I double-click each note of a chord and change its starting time and duration slightly to make it sound like a fast arpeggiated chord. I never thought that this hard work would be destroyed if my request was made true the exact way I imagined it!
      I agree with you in the idea of a interpret toolbar and a button to click on everytime we want interpretation to be applied. It also gets my vote too. Thank you.

       
  • Then the biggest question is how to represent it sensibly on a toolbar.

    One idea is to have a row of icons, and all but the make-it-go button are checkable push buttons with floating tool tips to help clue you in as to their purpose:

    [I] [p ff] [< >] [beats] [slurs]

    Another idea is to have a make-it-go button and a configure-it button:

    [I] [edit]

    The configure-it button would pop up a dialog equivalent to the one that currently runs when you perform this action through the menu. In fact, it would probably be able to just recycle that same dialog.

    So far as my opinion, I think the row of push buttons seems like the better idea, but it's hard as the icon designer to come up with a neat way to say "articulate slurs, staccato, tenuto, etc." in 32x32 pixels, and that's one of the easy ones. Stress beats in a little picture? No matter how good my best effort is, users will probably have to read the tooltips to figure out what the icons represent, and all of this reduces the chances of anybody but you or me ever discovering and using the new feature.

    What I'll probably do is start by trying to design the icons for the push button idea. If I come up with something satisfactory, I'll go that way, and if I don't, I'll fall back on the cheaper idea.

     
  • I think people may know about the new feature in release notes. Rosegarden has many functions and I believe it's likely that many users don't know them all or use only the ones they need. So users interested on it will probably will be the ones who already use it. New icons in the interface also call a lot of attention. I myself for example, always lie to try new icons and buttons to find out how they work. :)
    Do you appreciate some ideas? All buttons could have some background color, what already happens in Rosegarden, because black-and-white icons are not attractive. So text dynamics icon could be p f in a Roman font, italic and black like dynamics are written in a score. Hairpin icons could be < > symbols. Stress beat could be the drawing of the five lines of a staff with a darker bar similar to that one used in the end of a composition. Slurs, sttacato, tenuto icon could be the drawing of a slur, a sttacato dot and a tenuto in the same icon. And at last the make-it-go button could have the picture of two conductor batons and a small star in the extremity of one them, and a more distinctive color to that button. (Batons meaning interpretation and stars mening that it will be done magically.)
    One question: The make-it-go button will work without needing to select all? (It probably would make things easier.)

     
  • I like the idea of the baton with a star. A magic wand for music.

    As to the question of whether this should automatically work on everything without needing to select all, I think I'd better make that configurable with another button. Making it work on everything without the extra step is great most of the time, but it all depends on what you're doing.

    If I've entered everything by hand, running interpretations on everything is great. If I've played a live performance or imported one, then I usually only interpret passages I've had to edit by hand, to blend them into the live data.

    It's important not to break the second use case, but if the interpret function is hanging off a button, the button is going to be my preferred method of using this function.

    I'll work it out. Tonight I'm having a party and I will be getting drunk, so I will probably code this tomorrow. :-D

     
  • Yes. I think those will be the best methods and I guess using the buttons will be my favorite too. About your party, no problem. I spent one day and a half without internet connection here. Everything is OK. :)

     
  • I just committed the "first draft" of this in revision 13439.

    I ended up using a music stand with "magical sparkles" coming out of it for the "apply interpretations" button. Hopefully everything is self-evident.

    I tested it, and it seemed a little bit off. The idea I went with is:

    If you already have a selection, apply the interpretations against that selection the same way you would do if you went to Adjust -> Interpret and clicked through the dialog.

    If you don't have a selection, select all, then apply the interpretations.

    In practice, this doesn't feel quite like I hoped. See what you think, if you can ever get your notation editor to display anything useful.

    I think what's happening is some one random nearly invisible thing somewhere is selected, so the interpretation doesn't seem to do anything.

    I also note that the interpreter has dramatically different effects depending on the size of the selection. Select a few notes next to a fff and they go all the way to red velocity. Select everything, and those same notes get a much lower velocity.

    Well, anyway, it's a rough draft. Let's fine tune it. It's a feature!

     
  • I went back to fix a big bug and refine all of the behavior a little bit. You sometimes end up with empty selections, and instead of trying to solve maybe 500 weird selection problems, I just ignore empty selections and select all in that case.

    With these refinements, it seems to work pretty reasonably to me. If there is a selection, I apply interpretations to the selection. If there isn't, I apply them to everything automatically.

    It seems to be working rather well now. I'm done with it until somebody finds another bug, or until I decide these icons need more work.

     
  • Finally I was able to test the new feature. The new toolbar is pretty and pleasurable. I had the sensation that its effect is as good as the menu functions but easier to access. I think that's what we had imagined. Very good!
    Can you give me two more hints: The version of Rosegarden I compiled is crash everytime I have some selection and the click on edit/copy or ctrl+c. That doesn't happen in the distro's version. Here is the output of the command line when the crash occurs:
    QObject::connect: Cannot connect (null)::insertableNoteOnReceived(int, int) to Rosegarden::NotationView::slotInsertableNoteOnReceived(int, int)
    QObject::connect: Cannot connect (null)::insertableNoteOffReceived(int, int) to Rosegarden::NotationView::slotInsertableNoteOffReceived(int, int)
    Falha de segmentação (imagem do núcleo gravada)
    (Literally translating the last sentence that was displyed in portuguese:)
    Segmentation failure (core image recorded)
    And the other question:
    Is it possible to launch Rosegarden without it automatically launching the jackd process?

     
  • You don't have to translate Portuguese for me. It's close enough to espanhol.

    To stop jackd from running, update and use Settings -> Configure Rosegarden. Go to the Audio page, and hopefully the rest is obvious. (If you want to see this option written in Portuguese, find us a new translator. We haven't had a Portuguese translator for some time now.)

    Concerning the crash, I had another look through this. I don't think this is a debug build Qt warning crash, I think it is something entirely more evil.

    I opened this bug report:

    https://sourceforge.net/p/rosegarden/bugs/1406/

     
    Last edit: D. Michael McIntyre 2013-10-08
  • I compiled using the command ./configure --with-qtdir=/usr --with-qtlibdir=/usr/lib/x86_64-linux-gnu.
    I tried the same compilation in my PC and in my netbook who have the same distro and in both the crash occurred.
    If you want to tell me how I can deal with debugging if I'm willing to do it (unless it's extremely complicated or extremely time-consuming).
    I found interesting that you would like someone to try the new version before it will be released and I'm eager to try it. Today I've been playing some melodies and I was thinking that it would be fine to sequence them with the new feature but felt frustrated for the crashes.
    I'm not a programmer to create or change codes. But if trying the new version is helpful for the project I'll be glad to contribute this way.

     
  • We have instructions on a wiki somewhere to help with debugging, but I have let myself stay so long that I am late for work, and must hurry to get going. I will find the links later.

     
  • I updated and compiled with the same commands I did before.
    I did some short tests and had no crashes and no problems to display notation. Computing is a very curious science. Sometimes problems come and go and we just cannot explain why or how.
    But now the features are wonderful! One click in the interpretation button and segments are interpreted. And we can launch Rosegarden without jack and make alsa connections with it. (As for translation it's no problem for me. I use rosegarden in english since 2010 so if I try to launch it in portuguese I get a bit confused to find the options I want.)
    Great work! Thank you again.

     
    Last edit: Fernando A. Martin 2013-10-09
    • Sometimes problems come and go and we just cannot explain why or how.

      The answer is usually pointers.

       
    • status: open --> closed