How do I offset an instrument just a bit, so it plays a few milliseconds after another instrument ( gives reality to the musicians)??
Hi all: I have never used offsets before. Maybe it is time. I am adapting a new song to Musescore 3.62, and the flute is playing a hairs-breath after the singer. Can I offset the flute just a tiny bit to the right for a run of measures to mimic the musicians in the orchestra? If so, how? Thanks in advance
Frank
Comments
Can't do it. Not built into MuseScore. And, I would say, it should not be.
Do that in a DAW.
I'll be thrilled when MuseScore 4 and MuseScore 3.7 get the options:
• to delay a "track" (in milliseconds)
• to prelay a "track" (in milliseconds)
Use cases
1) As in your situation, sometimes a library's note onset timing is too early or too late, and therefore it doesn't align well with libraries with more "standard" note onset timing. Depending on the library you may be able to attenuate this via a push/pull setting— an option I frequently see in Kontakt libraries.) In the absence of that—AND in addition to that—we'd greatly benefit from +/- ms options via a Mixer Audio FX plugin.
2) To my ear there's little realism when all instruments play precisely at the same time. Setting a temporal spread between instruments will make score playback lighter and clearer. Everything all at once is weighted mud.
Generally speaking, whenever a DAW project sounds heavy I:
• leave the melody front most (0ms change)
• I delay any harmony (10 to 20ms)
• I further delay the chords (15 to 25ms)
• I further delay the bass (15 to 30ms)
• And generally, I set the percussion the furthest back (delayed 15 to 40ms)
Works like a charm!
scorster
In reply to I would be thrilled on the… by scorster
So if I understand both your comments, Musescore's virtual player has no way to delay a track by a few milliseconds to mimic the true sound of live musicians? If so, that really is a bummer. Surely there must be a way! I am totally not familiar with DAW's and honestly don't want to get into them, even though they can delay tracks if you know how to play with them. There really is no work-through or plugin in Musescore? Ugh! Does Polyphone enable me to do so someway? (it is able to open a. .sf2 file and play with it). Is there perhaps a plugin I can use in Musescore?
In reply to So if I understand both your… by fsgregs
It would be possible in Polyphone but less than ideal because it would be inflexible. Have a play with BSG's articulation plugin mentioned below, specifically DockArticulate.
In reply to It would be possible in… by yonah_ag
I downloaded DockArticulate a long time ago, but have never used it and have no idea what it does. I just checked it out in MS 3.62, and still don't really know what it does. If you think DockArticulate could delay or accelerate notes in a track by a tiny bit, please just email me a short screenshot of the menu from the plugin with the fields filled in. Otherwise, if an actual new plugin is not difficult, would you be willing to make it? Several Musescore users would be as grateful as me. Thanks in advance.
In reply to So if I understand both your… by fsgregs
Two things come to mind:
Any real player who played behind the beat for an entire song, even by a few milliseconds, would not have a job very long. It is the goal of every real musician to play correctly, in sync with all the other players, all the time. Sometimes there may be problems. But not for an entire piece. There are other ways.
Listen to recordings of professional musicians. Then listen to a recording of an Elementary School band. Bless their hearts, the school band does all the things that over the years I've heard people say they wish they could get software to do. They may not be on the beat, or quite in tune, and much more, No thanks.
I've used three different VSTs that were supposed to be professional grade. They are all boring, and lifeless. Not much better than Basic sounds. If you guys use any of them, I'm not surprised you want to liven thing up.
Some more things come to mind.
For heaven's sake, pan your scores. This is critical. And use lots of dynamic and tempo changes. Subtle, of course.
I find Muse sounds much more "realistic". Far from perfect. But much more expressive.
In reply to Two things come to mind: … by bobjp
Re 1. My thoughts exactly – but as a solo guitar player I have no experience of playing with others in a group. I did experiment with random offsets to note start times, (via a plugin), to see if it would 'humanise' the playback. It didn't: it sounded like a beginner in an Elementary School band! Humanisation actually took me a lot more manual effort in my scores, involving deliberate rubato and dynamic changes based on careful listening to different performances of the pieces.
I've been to a few classical concerts and witnessed quite a spread of violins, so maybe having several violins in a score and, as you say, panning them would help. Could there be enough front-to-back distance in the violin section that there would be a noticeable time difference, (e.g. milliseconds), in the audience hearing them?
In reply to Re 1. My thoughts exactly –… by yonah_ag
yonah_ag wrote > I did experiment with random offsets to note start times, (via a plugin), to see if it would 'humanise' the playback. It didn't: it sounded like a beginner in an Elementary School band!
Misguidedly most "humanize" functions simply randomize note onsets, and indeed that would sound like a bunch of musicians with bad timing.
The solution would be to:
• set temporal point x milliseconds ahead or behind the beat (i.e. leading or following)
• set a refined amount of focused randomization around that temporal point
• temper the randomizing to be weighted toward "leading" or "following"
When I set the temporal point "ahead of the beat" I also like to weight some very subtle randomizing toward "leading." Conversely, when I set the temporal point "behind the beat" I like to weight randomizing toward "following."
The effect can be quite convincing. It gives the notes room to breath and be heard ... rather than glibly leaving them stacked in a self-eclipsing heap.
Could there be enough front-to-back distance in the violin section that there would be a noticeable time difference, (e.g. milliseconds), in the audience hearing them?
Bingo! The placement of instruments on the soundstage naturally impacts how the audience perceives the music, and I mean this specifically in terms of the temporal affect and the way the "leading" instruments are clarified and focused for the audience by the precedence effect.
In reply to yonah_ag wrote > I did… by scorster
Thanks for the input. I should've known that you'd have some practical guidance to help shape the plugin. (You may find some testing heading your way!)
One issue will be the milliseconds requirement since, (as you know), each note duration in MS is defined in per mille units, ‰, of the note's face value. So, at 60 bpm tempo: a quarter note of duration 1000 will have an absolute duration of 1 second; an eighth note of duration 1000 will last 0.5 seconds etc. The offset duration will need to follow this scheme, so an eighth note will need double the ‰ duration offset to achieve the same millisecond time offset as a quarter note etc.
In reply to Two things come to mind: … by bobjp
Bob: Thanks for the post. Because MS 4 does NOT allow either hairpins or Dynamics marks to be edited for volume, I can't use it. I use Musescore specifically to adapt actual songs to sheet music, and then let the virtual player play it. It gives me great joy in my old age to adapt entire symphonies (I am now 77 yrs old). In so doing, I mimic the actual song musicians closely, using their own timing. Frequently, I must edit hairpins and dynamics to change their volumes to better match the song, using the Inspector in MS 3.62. Since MS 4 does not provide this option, I cannot use it, so it may be more realistic, but not good for me.
I will try to alter panning a bit, but really, a new plugin that can play an instrument with slight differences in play time, is much preferred.
Very easy via a plugin in MS3.6.2 or, better, in MS3.7.
Example:
https://musescore.org/en/project/articulation-and-ornamentation-control
In reply to https://musescore.org/en… by yonah_ag
Yonah_ag: I swear I answered this in detail, but it is not here, so ...
I visited the above link and examined the plugin. As I mentioned above, I already have DockArticulate but don't understand how I can edit a track on one or more notes with it to force the MS player to play that track either a tiny bit before or after the other tracks. If it can do so, please help me out by explaining what to do. Alternatively, I and others in MS 3.62 or 3.7, would be soooo grateful if you were able to write a new plugin that allowed one or more notes in a track to be accelerated or delayed by a very short amount, be they violins or others, to better mimic real musicians.
Should be possible via the piano roll editor.
In Mu3 that is, not in Mu4, where that feature (and quite a few more) had been removed,
In reply to Should be possible via the… by Jojo-Schmitz
Re: Jojo-Schmitz • Mar 18, 2025 - 06:08
"Should be possible via the piano roll editor."
This is why a plugin is so easy in MS3 and I already use the note OnTime in the TAB Ring plugin so it shouldn't take long to get something up and running.
I'm only familiar with classical music (string and symphony orchestras) and have played the violin in many orchestras with many different conductors, some of them famous. "The conductor is the one in control and you must follow him/her."
The MS playback is a nice feature which I only use to track down errors in my engraving. So, out of a sort of ignorance, the realism of the music output is of second priority for me. I understand if other users want to prioritise realistic output as well, but was that really the primary intention with MS? There are much be tools for this on the market, e.g. DAWs.
Having said that, an orchestra must follow the conductor. As an example, assuming you are sitting at violin 1 at one of the last desks and you try to follow the rythm from the double bass on the other side of the stage (maybe 10-15m away), there will inevitably a time delay which could be considerable and unwanted. In this case and for critical parts, every musician must visibly (no time delay) follow the conductor. In the auditorium however, and depending on where you are sitting, there could be a time delay when you listen to the different instruments.
In reply to I'm only familiar with… by strandtts
Very interesting. Always so useful to hear from people with real experience.
In reply to I'm only familiar with… by strandtts
I have played a few different instruments in several different kinds of groups. And played several different kinds of music. And conducted a performance of one of my pieces. There is nothing quite like playing trumpet in a large orchestra because I was usually in the center towards the back. I was surrounded by some of the best music ever written. Violins on one side. Cellos on the other. In my case, it was not so much about delay as it was about being immersed in the music.
OTOH playing guitar or drums in a rock-type band is totally different. Everyone has their own monitor. And it may be set up to hear everyone or just certain things. Just depends.
And all these groups sound different in different situations. Large hall, small room, outside. All different.
FWIW, my experience with many years of notation software is this. I can spend a lot of time tweaking my score to sound just the way I want. And I can and should do it. The problems is that I set up playback using my nice headphones. But then I listen to it on my home sound system. Then on my car stereo. Even different headphones. The quality and balance is slightly different on each system. The trumpets might be louder at a certain place on the home system and too quite in my car. What's the matter with them. Are they trying to get fired?
I don't write for solo guitar. But I can imagine that it is particularly...challenging to make it playback well. Hats off to you yonah_g for even trying.
In reply to I have played a few… by bobjp
I've mixed live sound for pop/rock bands and having their own foldback monitors really does help. In-ear foldback is even better. I don't know how you hear yourself in an orchestra if you are positioned anywhere near to a violin.
Solo Guitar playback tweaking is made easier by the fact that there's no competition with other instruments. I mix in mono and pan it equally across the soundstage. So my efforts can be concentrated on 'human musicality' within the limits of the software and my ability and patience.
In reply to I have played a few… by bobjp
Bob and Yonah_ag.: I applaud your ability to play live in a band or orchestra. I cannot even read music at normal speed (I read 1 slow note at a time), but I excel in using MS 3.62 to write complex scores and have the player play them. I didn't care before about all instruments playing their notes at exactly the same time, until I loaded a new song to adapt this week, and noticed that a few instruments were playing slightly before or after the main singer was singing. In the past I used fermatas to pace the song, but I finally realized the real problem was what we have all said; namely, that orchestra musicians come close to syncing their instruments to the main melody but usually play offset by tiny amounts, either before or after, perhaps due to their physical position in the orchestra. Because Yonah-ag suggested that the piano roll editor and maybe the DockArticulation plugin can offsync notes played by small amounts, I've tried them and at least the piano roll editor can help tweak the player but it is very time-consuming. I would love to be able to load a plugin that allows me to mimic real musicians by offsetting one or more instrument notes by small amounts easily. That's why I await Yonah's plugin.
In reply to Bob and Yonah_ag.: I… by fsgregs
Whoa! I cannot play live in a band. I'm strictly an at home soloist. I can operate a 32 track, 4 bus mixing desk to give house and foldback sound, (plus recording out feed), for a band playing a live gig.
The piano roll editor is the key to success here because the time-consuming effort is replaced by plugin code making all the adjustments for you. It is a very speedy process and would not usually take more than 1 - 2 seconds, even with a large score.
In reply to Bob and Yonah_ag.: I… by fsgregs
Sometimes, depending on the size of the room, instruments in the very back of the group, are asked to "anticipate" the beat. This is usually percussionist because of the sharp, clean attack.
Violins aren't really that loud. Not compared to a trombone. But even so hearing oneself isn't a problem.
To me, playback sounding "human" or "real" are two different things. "Human" to me denotes "sloppy". "Real" would be as produced by real players. There is no software that can produce a "real" sound. Though some might get more close than others.
In reply to Sometimes, depending on the… by bobjp
Well, real players are still human.
Even if software eventually produces 'real' music there's nothing like seeing and hearing real people performing real music live.
Anticipating the beat? That sounds tricky!
In reply to Well, real players are still… by yonah_ag
It is tricky. An orchestra isn't just a bunch of people crammed together sawing away on their instruments. They are no longer individuals, but now are all striving to live and breathe together as one. The listen to each other and all work together. Consider percussion sound. unlike other instruments, their initial sound is very crisp and clean. It is possible that in certain situations, and because they are usually in the back of the orchestra, that their sound might be perceived as being late. So they anticipate the beat. That is different from playing ahead of the beat. Human players all work together to produce as perfect a sound as possible. It is always interesting to me that people seem to think that to introduce timing and pitch differences into playback make it sound human. Humans don't do that. But we all get to do what we think we must.
You actually don't need a DAW for this - you can use Audacity. It's super handy for all kinds of audio editing tasks.
With your score open and the menu bar focused in MuseScore, press File and then Export.
Select WAV as the export format. For the highest quality, choose a sample rate of 48000 Hz.
You'll see a list of checkboxes for each instrument. Check all of them except "Main Score" - this ensures each instrument is exported separately.
Once the process is complete, you'll have individual WAV files, each with one instrument sound on its own track.
Import the audio tracks into Audacity and adjust the timing as needed. You can also apply additional effects here.
So, while you can't directly adjust timings in MuseScore, exporting the audio and editing it in Audacity is a great workaround - especially if, like me, you don't have access to a full DAW. Hope this helps!
Stickman Games - Play Online for Free!
Your Ultimate Hub for Free Stickman Games Online
Stickman Games
Plugin v0.3 can adjust +/- milliseconds but no variation yet
BeatOffset 0.3.qml
Maybe this will give an idea as to whether the idea is worth pursuing.
In reply to Plugin v0.3 Can adjust +/-… by yonah_ag
Yonah: Thank you so much for this effort. I tried it and although there is a field to enter a beat millisecond change and I do so, although I click "Beat it", it doesn't appear to stick. When I return to the note I just changed, it again reads 0 milliseconds. Is it supposed to do that? Also, what would be a usual change in ms, if a musician did play notes slightly after or before the other instruments? Would it be a 10 ms difference, or a 100 ms difference, or ...?
In reply to Yonah: Thank you so much… by fsgregs
In most DAWs you can set an offset per track. Thus you see that value as a property of that track. And you can always access the value and change it.
yonah_ag has created something more nuanced, and that allows you to set an offset for not only an entire MuseScore Part/Instrument, but also for any note or selection. And so the plugin's offset value doesn't reflect properties of notes in the score, it only shows a value that it will impart. It other words, it's a setter ... rather than a getter (or a property inspector.)
My hunch is that Instrument/Parts don't have any concept of delay/prelay. And indeed yonah works around that by altering each note's ontime property.
Pretty slick for a first draft!
Regarding amount of milliseconds to apply
I strive to set an offset that barely imparts a JND [Just Noticeable Different] ... in other words, when two sounds may be considered still perceptually "fused" (they sound like one event) but with sufficient offset to highlight/focus the front most instrument for the listener.
Perceptual fusion varies depending on the instrument. If I recall correctly:
• percussion and clicks are noticeably offset (unfused) even as low as 5 to 10ms, nevertheless I often mix digital percussion about 20ms delayed (depends on the library.) Note that most library instruments have a push/pull setting, so you can offset a track even if your DAW doesn't offer that option as a track property.
• for most other instruments I set an offset between 15 and 30ms, but sometimes more works, particularly in a complex mix.
In terms of the Precedence Effect, classically speaking, at 30ms sounds become unfused and the listener hears two distinct onsets.
In reply to Plugin v0.3 Can adjust +/-… by yonah_ag
LOVE IT!
This is fantastic!!
I just applied -18ms (an 18 ms delay) to the accompaniment part of a simple duet. Makes the duet sound more spirited and delightfully lighter to my ear.
Wonderful that an immediate Undo removes all added offset, which makes it easy to start over, or to compare before and after.
I worry a bit about getting lost in the process, so I'm wondering:
• is there a PRE property that indicates if a note starts at a point offset from their "face value onset"?
• alternately, is there a way for the scorist to know if notes have been offset?
• would it be possible to "reset/quantize" the notes back to "face value" onsets?
. . .
Would you consider attempting to make your "offset" plugin work in MuseScore Studio? I have more sophisitcated libraries in MS4 (Native Instruments, Mozart, Korg) so ultimately a v4 plugin could prove more useful. Well, only when MS4 starts using note velocity again. And when it honors the LEN property, and ...
scorster
In reply to LOVE IT! This is fantastic!!… by scorster
I would be interested in hearing a couple audio files. One with and one without the plugin.
Replies re v0.3
• This is a first draft release for getting user feedback so may have bugs.
• Beat Offset works by setting the note ontime in PRE.
• The results can only be seen in PRE but should, of course, be audible.
• If it doesn't appear to be working then please share a score and details of the plugin settings.
• I have no idea what offsets make sense. I'm only the bricklayer who wrote the code but see scorster's comments above for some ideas on this.
• Once a useful range is known I can make the range on the input box more appropriate.
• It operates note by note on all 4 tracks (voices) of the selected staff.
• It requires a range selection, NOT individual notes.
• The whole staff option requires at least1 measure to be selected.
• The variation setting will be easy to implement if you still think that it would be useful.
• Using an offset of zero resets notes back to "no beat offset".
• If would be possible for the plugin to have an option to identify notes whose ontime value is not zero, probably by adding a stave text, either an asterisk, the millisecond value or (-) (+) indicators.
• A note on the first beat of the score cannot be brought forward because it would imply a negative tick position which is meaningless to Musescore.
• Once all required features are present, tested and debugged I will publish the plugin to Musescore's plugin forum for general use. It will work in MS4 once MS4 has a PRE with plugin access.
In reply to Replies re v0.3 • This is a… by yonah_ag
Yonah_ah:
OK, I tried the Beat-it plugin in my "test" score (using MS 3.62), by delaying a percussion track. It worked great. You are a genius. But ...
(1) The Beat-it menu remains on the screen, behind the score after I finish with it. If I use it 10 times in a score on different tracks, I will have 10 different beat-it menus on screen but I won't know which edit it applies to. Can you make the menu disappear after it is closed?
(2) The effect works fine on a track but when I reopen the notes on that track and activate the Beat-it plugin again, everything shows "0" again in the offset. I have no idea what I previously did to those notes. Can you show the previous changes I made to those notes, if in fact I made any? That would help me understand if I need to edit the Beat-it menu more or less.
(3) I regret that I don't know what "ontime in PRE" means in your post above. I will do anything you wish, but could you please tell me what "PRE" means and where I can find it? It is not in my Beat-it menu.
(4) i would love to advise you on what "Variation" might do, but I don't know what it is supposed to do. It might be very useful. Can you elaborate a bit?
Thanks again so much.!
In reply to Yonah_ah: OK, I tried the… by fsgregs
Yonah_ah: I just realized the "PRE" applies to the Piano Roll Editor. There is an "ontime" field at the top. What should we set in it before we use Beat-it? Should it be zero then we edit the track with Beat-it?
In reply to Yonah_ah: I just realized… by fsgregs
You don't need to do anything with it in PRE. The plugin sets this ontime value so this is currently the only place where you can see the change which the plugin makes.
In reply to Yonah_ah: OK, I tried the… by fsgregs
(1) Close it after use or move it after it's opened so that you can see it.
(2) The plugin currently defaults to offset=0 when it opens. If you keep it open then you will avoid this reset. As per response to scorster above: yes, an indication would be possible.
(3) Solved
(4) Variation is % value amount by which to randomly vary the offset. Is it even needed? No idea.
In reply to Yonah_ah: OK, I tried the… by fsgregs
What millisecond value did you find useful?
In reply to What milli second value did… by yonah_ag
First, setting the millisecond delay or pre-lay to 100 ms or less, seems to work fine. However, personally, I don't think you need to fool with it to set limits. Let folks set it at any range they wish, short of 1 second (1000 ms). Of course, this is your choice. Maybe a max of +/- 300 ms would be OK if you must set a limit.
Secondly, Variation does seem to be a wonderful idea. Having Beat-it randomly vary the delay or pre-lay by X%, would be a wonderful option. I think it would make the effect of mimicking players that much more realistic. Please try to add it as you originally thought.
In reply to Yonah_ag: First, setting the… by fsgregs
OK, I must be going nuts. I retested Beat-it and the PRE and now found they agree in online and the Beat-it menu. Both say 30 ms. Sorry for any prior report. They do seem to work fine.
In reply to Yonah_ag: First, setting the… by fsgregs
If only it was that simple! They are not expected to be the same except under particular circumstances. The ontime is not in milliseconds but in ‰ of the note's face value. Note face values are in ticks and there are 480 ticks in a 1/4 note. A 1/4 note lasts for 1000 ms when the tempo is 60 bpm, (or more usefully for the calculation 1 bps).
Here's my derivation of p, the ‰ offset required for an offset of m milliseconds:
If I've made a mistake then please let me know where.
In reply to If only it was that simple!… by yonah_ag
Yonah_ag:
If only I could understand the math you just outlined. Although I am a scientist, the math appears to be a bit beyond me. That said, if you cannot add a workable +/- variation to the beat that works in all timing beats of notes (1/8, 1/4, 1/3, 1, etc.), we understand. If we want to fine-tune Beat-it to set a + or - ms value measure by measure throughout the song, we will have to just do it. It is just wonderful that you have created this great plugin. Thanks so much!
In reply to Yonah_ag: If only I could… by fsgregs
I can easily add a % variation but it might have to wait until next weekend.
The maths is basic algebra to produce a formula for the required ontime ‰ offset for: any note face value f in ticks, any beats-per-second tempo b, and any user specified millisecond offset m.
The tempo is available in MS at every note so the formula continues to work even when the score tempo changes. If you wanted a different millisecond offset according to changes in score tempo then you would have to BeatIt accordingly - but I think that this would be an unusual requirement.
In reply to I can easily add a %… by yonah_ag
Thanks Yonah_ag: Someday, I'd love to know your real name so I can stop calling you "Yonah_ag". Anyway, we can certainly wait til next week for the plugin to be finalized. Super job!
In reply to Thanks Yonah_ag: Someday, I… by fsgregs
Try "Andrew" ;-)
In reply to Try "Andrew" ;-) by Jojo-Schmitz
🙂
As you can see on my GitHub profile: https://github.com/yonah-ag
In reply to 🙂 by yonah_ag
Aha!!! Andrew! Can we call you that, or ...
In reply to Aha!!! Andrew! Can we call… by fsgregs
Hi Frank, sure, you can call me Andrew.
It's more personal than yonah_ag, (and easier to type!)
In reply to Thanks Yonah_ag: Someday, I… by fsgregs
"fsgregs" ain't any better ;-)
In reply to "fsgregs" ain't any better ;… by Jojo-Schmitz
😆
In reply to "fsgregs" ain't any better ;… by Jojo-Schmitz
JoJo: My actual name is "Frank Gregorio". You all can call me Frank if you wish. I'd be honored!
Frank
In reply to JoJo: My actual name is … by fsgregs
If I only hadn't that very bad names memory
...
In reply to Yonah_ah: OK, I tried the… by fsgregs
Re: Plugin UI goes behind main window.
If you're on Windows, press Alt-Tab to reselect the plugin window.
Maybe MacOS and Linux have an equivalent key press.
In reply to Re: Plugin UI goes behind… by yonah_ag
On MacOS I use Cmd ~ to cycle through app related windows, and indeed that brings undocked MuseScore plugins to the front.
Version 0.4 : Random Variation
I'm not sure that this really adds anything. If it does then some more processing will be required to avoid the possibility of overlapping notes in the same voice due to different random offsets added to, or subtracted from, the user defined offset.
I don't like the way that I have implemented the random offset, (as a % of the final result instead of as a % of the user input millisecond value), so the version is just for testing to see if it adds anything. I'm hoping that it creates such a mess that we don't want to touch it with a barge pole. If it does improve scores then maybe it could always be applied as a random reduction in the offset so as to avoid the possibility of overlaps.
Any thoughts on how the plugin could show the results in the score?
BeatOffset 0.4.qml
In reply to Version 0.4 : Random… by yonah_ag
Thanks for version 0.4 of your new plugin!
Further experiments with "beat offset" of 10 to 18ms always sound great on my test duet. (Although I think Start time offset would be a better name for the setting.)
BTW, do processed notes end as they would before applying the plugin? I think that would be smart and safe. Or does the plugin affect the "tail" of the note too (i.e. it's stopTime)?
Ultimately I expect that focused-weighted randomizing will yield sweet results. Currently however, even with Variation at 50%, I can't say I'm hearing anything.
I'll have a chance to look at it again perhaps late tomorrow. And I'll try it on some more complicated scores.
In reply to Thanks for the new version… by scorster
Start Time Offset is better.
The duration of the notes remains unchanged, full PRE duration is kept, so a note brought forward will end earlier to preserve its length.
Randomisation of offset could be tricky to implement. Say the current note gets brought forward by 15 ms and the next note gets brought forward by 20 ms. If these are back to back 1/4 notes in the same voice then they now overlap.
At the moment the plugin is really simple but to prevent this sort of overlap I would need to introduce score mapping as per TAB Ring. If these randomisations are really not going to make a noticeable difference then it's a lot of effort to implement.
Clearly, with a real player, there will be a relationship between offsets of consecutively played notes in a voice because the first note has to finish before the following note can start. The player physically can't overlap notes in the way that a software algorithm can.
In reply to Thanks for the new version… by scorster
I wonder how it would sound to mix the offset stave playback with the non-offset stave playback. Would it improve the perception of the instrument or make it 'blurry'?
In reply to Version 0.4 : Random… by yonah_ag
Re: "maybe it could always be applied as a random reduction in the offset so as to avoid the possibility of overlaps."
Actually I don't think that this would help. Overlap would still be possible.
In reply to Re: "maybe it could always… by yonah_ag
Some quick thoughts on randomizing around an offset without mapping the entire score:
Regarding the focused randomization, the two essential factors would be:
• the extent of allowed randomization (what I’ll call the window)
• how the window is positioned (i.e. weighted) relative to the Offset value
Examples of 11ms wide windows:
-5 to 5ms <— evenly weighted
-2 to 8ms <— weighted toward Leading
-7 to 3ms <— weighted toward Following
Say the user chooses an 11ms window
and then chooses the values 0 - 10ms for fully weighted toward Leading
So the plugin gets a random number within the weighted window.
It then adds that number to the offset calculated startTime.
Something like:
min = 0;
max = 10;
random = Math.floor(Math.random() * (max - min + 1)) + min;
calculatedStartTime = calculatedStartTime + random; <-- translated to ‰
Regarding LEN:
Could you keep the end of the note at a fixed point to avoid collisions between back-to-back notes of the same pitch? Perhaps:
LEN = LEN - random;
In reply to Some quick thoughts on the… by scorster
I like this idea but there needs to be a constraint on the window width as a proportion of the offset or overlap can still happen.
Example using start and stop times in ms from the beginning of the score:
Note A | Start @ 1000 ms | Len = 500 ms | Stop @ 1500 ms | followed by
Note B | Start @ 1500 ms | Len = 500 ms | Stop @ 2000 ms |
(This is 'perfect legato', no gap between consecutive notes.)
Offset Duration | -20 ms |
Random Window | -10 to +10 ms | evenly weighted.
Length Adjustment | Len = Len - Random | as you suggested.
Randomiser runs and generates:
Rand A | +10 ms | Start Note A = 1000 - 20 + 10 |
Rand B | -10 ms | Start Note B = 1500 - 20 - 10 |
So applying the -20 ms fixed offset, the random offsets above, and the length adjustment:
Note A | Start @ 990 ms | Len = 490 ms | Stop @ 1480 ms |
Note B | Start @ 1470 ms | Len = 510 ms | Stop @ 1980 ms |
So Start B overlaps Stop A by 10 ms and Note B has lengthened to 510 ms due to the Len - Random calculation,
i.e. 500 minus -10 = 510.
I think that the random window width has to be constrained to a maximum of 50% of the absolute value of the start time offset.
What about the increased duration of Note B? Inaudible?
In reply to I like this idea but there… by yonah_ag
> Note A | Start @ 1000 ms | Len = 500 ms | Stop @ 1500 ms | followed by
> Note B | Start @ 1500 ms | Len = 500 ms | Stop @ 2000 ms |
> (This is 'perfect legato, no gap between consecutive notes.)
Yes
> Offset Duration | 20 ms |
> Random Offset Variation | -10 to +10 ms |
> Length Adjustment | Len = Len - Random | as you suggested.
Not sure I follow. Offset Duration is the plug-in's Start time offset?
I'm super busy today and for a few day, so not able to give this the attention it is due, but based on the remainder of the prior post it's likely we're thinking along different lines. Or I'm just failing to understand due to my harried state.
Anyway, the topic will be percolating in the back of my mind!
In reply to Note A | Start @ 1000 ms |… by scorster
This is based on your idea unless I've misunderstood.
Yes, Offset Duration is the plugin Start Time Offset, (corrected to -20 ms in my post).
Edited some terms to match your post.
No hurry. Percolation often helps.
In reply to Version 0.4 : Random… by yonah_ag
Re: "Any thoughts on how the plugin could show the results in the score?"
Maybe small blue numbers for prelay and red for delay, probably with a prefix or some punctuation to make the texts identifiable for programmed removal without accidentally hitting other stave texts.
Maybe <• for prelay and •> for delay, (as long as these don't mean anything musically.)
In reply to Re: "Any thoughts on how the… by yonah_ag
Andrew:
Your marks suggestion of > or < seems just fine. They don't have any music connotation except for the > symbol but with the asterisk mark also present, it would be OK as long as the player does not interpret the > as an volume accent. If it does, then a ^ or < mark alone might be OK.
In reply to Andrew: Your marks… by fsgregs
Ah! > could be confusing, so best avoided.
In reply to Re: "Any thoughts on how the… by yonah_ag
Sounds good.
I like your idea for the option of identifying the plug-in results in-score, however I suggest the adding +/- signs:
• prelay: a small blue text number WITH a preceding minus sign
• delay: a small red text number WITH a preceding plus sign
BTW, my DAW (Logic Pro) indeed indicates a track delay with a positive value, and a negative value invokes a prelay. So we're in good standing with that convention.
In reply to Sounds good. I like your… by scorster
I'll probably add a space before the + or - sign to reduce the possibility of matching user created stave texts starting with + or - and thereby make my texts easily removable without deleting other texts. This space won't be visible and I can adjust the horizontal position of the text if the space gap looks too big.
Sorry, no plugin update this weekend but hopefully next.
Plugin v0.6
NoteTimeOffset 0.6.qml
In reply to Plugin v0.6 [inline… by yonah_ag
Fantastic!! Now that we can set Offset Min and Offset Max values the user can have randomization within temporal a window.
I just ran the NoteTimeOffset plugin on a melody track. My modus is to have the melody lead the accompaniment tracks, and I wanted a randomization window of 12ms. So I chose the following values
• To prelay the melody I set Offset Min to -13ms and Max to -2ms
• Alternately (since the test score was a duet) I could delay the accompaniment track with Offset Min to 2 and Max to 13
Thanks SOOO much!
Few suggestions / Requests:
1) Max updates automatically and assumes the value of Min when I change Min. This is a problem when I have Max the way I want, and just want to experiment with Min.
2) The Offset Notes button trigger the processing, so I think of it like an "Okay" button. In UI the Okay button is usually located on the lower right. If that seems reasonable maybe switch the positions of the buttons so Reset Notes is on the left.
3) It would be wonderful to be able to "inspect" the onset timing of a selected note. You had mentioned the possibility of peppering the score with text objects that show the value with a plus or minus sign. I'd like to see that, for notes with non-zero offsets ... with an easy option for clearing them from the score. Or, as in your Down/Up bow tracker, perhaps the offset of the selected note could display in the plugin panel.
Kudos on yet another useful plugin!
scorster
In reply to Fantastic!! Since we now… by scorster
I too have tried out the new plugin. You are the best, Andrew.
Sadly, I had no idea how to use the plugin for random values, but reading Scorster's post taught me that I can enter both - and + values in Min and Max. I too support some kind of color or note text on any note or measure that the plugin is used on. So, if I set violin 1 at a prelay of say -5 to -15 ms, and set violin 2 at a delay of say +10 to +20 ms, everything would work out fine. Time will tell. I can't wait until it is all done.
In reply to I too have tried out the new… by fsgregs
Full documentation will come with the completed plugin, similar to this documentation for the TAB Ring plugin: https://sites.google.com/view/tab-ring
but hopefully my response below to scorster has made things a bit clearer.
Since I have no use for this plugin I am relying on you and scorster for feedback. 🙂
In reply to I too have tried out the new… by fsgregs
You can't do -5 to -15, it has to be -15 to -5.
Min must be <= Max.
The plugin checks for this and will not allow processing if not true.
In reply to Fantastic!! Since we now… by scorster
There are 3 processing routes thru the plugin:
1) Set ontime to zero and len to 1000‰
2) Set ontime to a fixed offset in ms.
3) Set ontime to a random offset within a user defined window.
Using the reset button triggers (1) and so does setting Min = Max = 0. This processing function is the quickest because there are no calculations, it's a straight 0 and 1000‰
Using the Min/Max Offsets triggers process (2) or (3).
If Min = Max then this is a fixed ms offset, which triggers (2). This does the ms to ‰ calc for each ontime but doesn't touch len since there is no possibility of overlaps.
If Min < Max then the randomiser process is triggered whereby the ontime is randomised within the user specified window and len is adjusted to stop overlap. This is the slowest route.
• As you noticed, changing Min also changes Max. This was to prepare for mode (2) and I thought users would always change Min first. I will decouple them.
• I don't think you can set Min -2 and Max -13 as this would be stopped with an error message.
Min must be <= Max so you probably had Min -13 and Max -2.
• I'll move the Offset Notes button as suggested.
Should it read Offset Notes or OK?
• Inspection texts will come soon but not with a popup because these rely on the onScoreStateChanged signal which is poorly implemented. These texts will be easily removable.
In reply to There are 3 processing… by yonah_ag
Andrew:
Thank you so much for this great plugin. I do urge you to give it a try when all done. It is making my scores more realistic when used.
Anyway, I am reiterating our request to see if something unobtrusive could be used in the score itself to tell us that a particular set of notes (or single note) has been edited in timing by the plugin. It is so much more useful than launching the Piano Roll Editor, stopping the playback and clicking on different lengths of notes to see whether their Online and Len settings have been changed by the plugin.
For example, if I set the piano track with the plugin to vary 7 bars of its playback by a random (-30ms to -10 ms), then use the plugin to set 6 bars of the piano track to a random (+40ms to +10 ms), maybe you could place a small red dot in front of the beginning of the 7 bars of the (-ms) edit and a small red dot in back of the last (-ms) edit, and a small blue dot in front of the 6 bars of the (+ms) edit, and a small blue dot at the end of the last (+ms) note. In a third case, I might set a string of 6 bars to vary by -20ms to +40 ms using the plugin. The sheet music would have a red dot at the start of the 6 bars and a blue dot at the end of the 6 bars. That way, by looking at the score as it evolves, I can instantly tell if I used the plugin to set random - or + timing values to a particular length of notes.
It might look like this:
or
or
Is this possible?
In reply to Andrew: Thank you so much… by fsgregs
It's possible and easy. I just need to find some time amidst family and work commitments.
The reason that I have no use for the plugin is simple: all my scores are for solo guitar so there are no other instruments competing for attention in the playback.
I'm quite surprised that the plugin is actually beneficial but you and scorster both confirm that it is and I can't really argue with actual listening experience.
In reply to There are 3 processing… by yonah_ag
Yonah_ag asked • I'll move the Offset Notes button as suggested.
Should it read Offset Notes or OK?
I think OK is best.
In reply to Yonah_ag asked • I'll move… by scorster
v0.7
• Use Texts On to show millisecond offsets.
• Use Musescore's Undo to remove them.
• Plugin option to remove them will be available soon.
• Probably need some formatting options, e.g. size, position.
• Decoupled Min / Max
NoteTimeOffset 0.7.qml
In reply to Yonah_ag asked • I'll move… by scorster
What Next?
• Recouple Min / Max to prevent Min > Max. This way I will no longer need to validate them before processing and it won't interfere with the order in which you set them.
• Add option to remove texts.
• Restrict the range to ± 99 as this seems more than sufficient. Any thoughts?
• Consider linking offsets across voices of the same stave at the same point in time, e.g. guitar scores in 2 or 3 voices. (Tricky!)
• Pre-empt complaints about changed ontimes messing with some articulations, with swing and with TAB Ring. (No obvious fix comes to mind).
In reply to Button now says OK but it… by yonah_ag
Andrew:
I just tried V7. A bit confusing to me.
(1) What exactly is "Texts On"? I tried it and it seems to do nothing. No text appears in the score. Will this be something like the colored dots I suggested before? If so, the tab is not needed. If I do edit the timing of a track with the plugin, I don't think the text should be optional. Little dots should appear, or not. Just my thoughts.
(2) If I click "Texts On", the menu goes away and I can't then click "OK" to activate the timing changes. The two boxes need to work independently.
(3) The message at the bottom still instructs the user to "Press Offset". It should read, "Press OK".
FYI
In reply to Andrew: I just tried V7. A… by fsgregs
V7 = typo? It's 0.7 and the first official release will be 1.0.
(1) Did you have any measures selected? The results are as per my image above. I don't use standard notation at all but it should work the same in standard notation as in TAB. I have used coloured texts to show the millisecond offsets, (blue=early, red=late), but coloured dots as an option would be possible.
(2) The menu never goes away unless you close the dialogue. It's probably behind the main window. There is nothing in the code to disable the OK button. All buttons are independent. Please check for a message on the dialogue's status line.
(3) Oops! Will fix.
If it's still not working then please upload a short score snippet in mscz format that I can test.
In reply to (1) Did you have any… by yonah_ag
yonah_ag wrote "1) I have used coloured texts to show the millisecond offsets, (blue=early, red=late), but coloured dots as an option would be possible."
I LOVE the way you've included the option to display the noteTime effect with colored numeric text objects. (A surprise bonus is that I can compare randomization by pressing OK, Show, followed by OK, Show ... And a single press to Hide clears all those indications.)
re: 2) When you leave the plugin within the bounds of MuseScore's window, a click on MuseScore's window brings the score to the front, eclipsing the plugin. This is normal. On MacOS I use Command ~ to bring the plugin window to the front—that's the standard command for cycling through applications windows.
a) I remember to place the plugin outside of MuseScore's main window. When I don't I use command ~ to view the plugin.
b) maybe this is a good candidate for a docked plugin?
In reply to yonah_ag wrote "1) I have… by scorster
The OK, Show twice bonus is unintended but I'll leave it in. The single hide is deliberate and actually deletes all the ontime texts in the stave.
I'll try a dockable version.
v0.8 Show / Hide texts for offsets
NoteTimeOffset 0.8.qml
In reply to v0.8 Show / Hide texts for… by yonah_ag
Andrew: OK, we are getting much closer. However, forgive me but respectfully, there are a few more things I suggest you may want to fix.
(1) When I used V8 of the plugin to adjust two measures of the "Strings" track (in blue below), I set "Min" to +10ms and "Max" to +40ms (see screenshot). The random span in my view would be 40-10 = 30 ms. I then had to click the "OK button on the plugin menu to activate the change. Great! The menu then disappeared behind the sheet music. Since I wanted the edit to also TELL me I had set random timing of the Strings to a random span of 30 ms, I had to navigate behind the sheet music and reactivate the plugin menu. Then, I clicked the "Show" tab. Small red #s now appeared on the sheet music, but they were at the very top of the score above the first instrument, which I did not edit. It is as if I used the plugin on the solo soprano track (1st track) instead of the "Strings" tracks (4th & 5th tracks). In fact, there was nothing above or next to the Strings track to tell me THAT was the track I edited. Here is a screenshot of the problem:
Honestly, the text showing the plugin's usage needs to be directly above the instrument track that was edited, NOT placed at the top of the page. In this case, the tiny numbers should appear above the notes in the Strings track.
(2) Maybe I am not getting it, but I thought I set the plugin to have a random span of 30 ms. Yet the small numbers appearing at the top of the page show +39 and +31. Both are larger than 30 ms. Did I not understand this, or is this something you need to correct?
(3) I recommend that if we use the plugin to set - ms values, you use small red numbers. If we set the plugin to +ms values, you use blue numbers. If we set the plugin to a span varying from - to +, you use both red for minus and blue for +. It would appear clearer to users.
(4) I don't think it should take two activations of the plugin menu to turn on text labels. The menu when it appears should allow the user to click BOTH the "OK" and "Show" boxes without the menu box going away. When closed, the menu would then close.
FYI
In reply to Andrew: OK, we are getting… by fsgregs
@fsgregs
re 2)
Your values (10 and 40ms) mean that onsets will occur within that window, so it could be any value between 10 and 40ms.
The black vertical line in the following image shows where the note would start with no offset.
The lavender rectangle shows a temporal range of possible start times based on the variance allowed (e.g. your settings of Min = 10 and Max = 40ms)
In reply to @fsgregs re 2) You values of… by scorster
Confirmed. This is exactly how min and max work. This means that you can have 30 ms wide ranges with different centres.
In reply to Confirmed. by yonah_ag
Suggested layout and labeling changes:
In reply to Suggest layout and labeling:… by scorster
What should the delete button do?
Hide already deletes all the texts.
Looks like we need colour options as Frank prefers red for early rather than for late.
In reply to What should the delete… by yonah_ag
> Hide already deletes all the texts.
Ah, so it does!
Then maybe just display your original Show button and a Delete button. Hide implies that the texts are extant, not purged, just invisible.
In reply to > Hide already deletes all… by scorster
I was hoping that you wouldn't notice! Yes, hide does suggest they are still extant. Delete was a bit long for the button but I'll sort something out. Maybe the buttons don't all have to be the same width.
In reply to I was hoping that you wouldn… by yonah_ag
@yonah_qg wrote > I was hoping that you wouldn't notice!
Ha ha! Such an excellent response!!
@yonah_qg wrote > Maybe the buttons don't all have to be the same width.
Agreed. In some cases, particularly when buttons are stacked vertically, they look better at the same width. But here different button widths would not bother me.
In reply to @yonah_qg wrote > I was… by scorster
"Hide" is OK to get rid of the numbers, but "Reset" does that too. In thinking about it, if we don't want numbers visible, we don't have to click on "Show". There will be no numbers. If we first Show the #'s and then decide to get rid of them, clicking "Hide" can work, provided the numbers simply disappear, not vanish entirely. They will still be there if we click "Show" again.
Alternatively, I can "Reset" the affected track (to (0)) which should also make all the numbers permanently vanish, then I can redo the track with either the same Min/Max or a different set, but NOT click "Show". The only way I will then be able to tell if that track has been randomly edited, is through the PRE. In other words, I don't think you need a "Delete" in the menu. Hide is OK as long as it just makes the #'s invisible, not disappear permanently.
My opinion LOL
In reply to "Hide" is OK to get rid of… by fsgregs
fsgregs wrote > "Hide" is OK to get rid of the numbers, but "Reset" does that too.
Hide removes the numbers by deleting them, and it does so without changing the offsets applied by the user
Reset resets all noteStarts = 0 (and as yonah_ag points out, it also resets LEN values to face value durations, i.e. LEN = 1000)
In reply to fsgregs wrote > "Hide" is OK… by scorster
Correct on both points.
Reset does not touch the numbers. It also sets len to 1000 because random window reduces len.
In reply to "Hide" is OK to get rid of… by fsgregs
Hide/Delete does actually need to delete the numbers, otherwise the next time you Show you will get 2 sets of numbers on every note in the measure range. Show is lazy: it has no idea that there might already be an offset text showing at any particular note so it will just add another one.
I could check for this duplication but there are bug fixes to attend to first.
Reset probably should delete all the offset texts. It will at the next version.
(Hide deletes every offset text in the stave).
In reply to Hide or Delete does need to… by yonah_ag
@yonah_ag wrote Show is lazy: it has no idea that there might already be an offset text showing at any particular note so it will just add another one. I could check for this duplication but there are bug fixes to attend to first.
I kinda liked that's multiple presses to Show would add multiple rows of numbers. That allowed me to compare ramdomizations, but that more of a debugging/troubleshooting technique and probably of little interest to the average user.
In reply to @yonah_ag wrote Show is lazy… by scorster
Update 0.8.3
Hide has been renamed to Remove.
NoteTimeOffset 0.8.3.qml
(Add texts has been left as lazy. Maybe there could be an option. Dunno).
In reply to Update 0.8.3 Reset also… by yonah_ag
Wow! So far, so good! I have not found anything in 0.8.3 that needs changing. The OK, Show, Reset and Remove buttons work fine, the small numbers appear on the right lines in blue or red, the Remove button removes the numbers and the Show button returns them, the Reset button resets everything and makes the numbers vanish for good, the Setup button shows me the colors of the numbers ... Wow! Andrew, you may be close to a final version of this great plugin. I for one will use it with every score I adapt. What a great effort! (smile)
In reply to Wow! So far, so good! I… by fsgregs
.
In reply to Update 0.8.3 Reset also… by yonah_ag
A few things to report on MacOS:
1) nothing happens when I click color Hex code
2) clicking Font deletes all numbers (doesn't offer a font Size choice, and maybe Font Size is a better name)
3) Default vertical docked plugin panel size too short (only tested on MacOS 13.5.2)
Dragging the bottom of the docked plugin downward reveals the eclipsed area
4) the checkbox for Select Whole Stave is a little too far left, and overlaps its label.
Really enjoying this plugin!
In reply to A few things to report on… by scorster
Basically the same situation in v0.9.0:
• The panel height issue remains, but it's easy to workaround
Regarding the Hex color fields:
• I can't select any portion of the Hex value
• No action occurs when I click the color swatches. Are they supposed to open a color picker?
In reply to Basically the same situation… by scorster
Andrew and Scorster:
OK, I agree that in V0.9.0, the Hex color values are not selectable, nor or the color swatches selectable. However, I was able to replace the Hex color value for Min and Max by using the Inspector menu to get into the colors, then copying the HEX color for the text I wanted, then returning to the plugin menu and backspacing the plugin Hex Min values, then pasting in the HEX text color from the inspector. The color swatch in the plugin then changed to the color I chose from the Inspector. I then did the same for the Max colors. If you can get the plugin menu to work, fine; otherwise, the bug can be worked around through the steps above.
Scorster is also correct that the plugin docked menu has its entire bottom cut off when first loaded up. If we undock it and drag it to the top just under the word, "Inspector", the bottom of the menu then appears OK, but we have to undock the menu to get it to be seen. I would agree that this bug needs fixing.
Andrew, after playing with it all more, I found that for some reason, the plugin requires us to select at least two measures of a stave in order to select the entire stave for plugin editing using the little check box. As long as we do that, all Stave edits work fine, including the 1st track-stave I complained about yesterday. It is so minor that you don't really need to do anything about it, except mention in the "directions" that at least two bars/measures have to be selected for the plugin to work.
In reply to Andrew and Scorster: OK, I… by fsgregs
@Frank
The hex inputs and swatches sound like they are working correctly for you. The expectation is to copy/paste from Inspector. You say that you can backspace these fields but that they are not selectable. These 2 statements are contradictory so I don't understand. If you can backspace them then you must've been able to select them. ??? (You can also manually type hex codes in these input boxes.)
I'll have to have a play with the plugin height.
You shouldn't need to select 2 measures. Mine works with 1 selected.
Does the font size spinner work? (This should size the stave texts.) Does the font Y offset work? These font settings should be made before pressing Show.
In reply to Basically the same situation… by scorster
@scorster
😮
(1) When I enter a hex code the corresponding colour swatch changes. I have no idea why you can't select them. The colour swatches themselves have no action, they are just to confirm the hex code.
(2) On mine the font input box steps up and down the size in 0.5 increments and the value is used when adding the texts. The Y value offsets the texts vertically on the stave. Yes, it could say font size. Originally there was another input on the row to select Musescore's auto-placement positioning.
(3) I wonder why mine is so different?
(4) Seems to be because the font size is larger for the texts on MacOS. I can either try to change the font size to match Windows or move the checkbox, which will separate it a bit too much on Windows.
Clearly my QML layout knowledge is deficient. Maybe I should try Grid Layout.
In reply to 😮 (1) When I enter a hex… by yonah_ag
@Both: Can we continue the discussion at the bottom of the thread? It's getting tricky to find new posts when they are in the middle and we're losing width due to the amount of indentation. Thanks!
In reply to Andrew: OK, we are getting… by fsgregs
(1) Move the dialogue before using it or make your main window smaller. I'll make 0.8.1 dockable for you to try as an alternative.
Yes, the numbers should be above the selected instrument track, so you have found a bug. If you share a score snippet I'll fix it. All my scores are solo guitar tabs.
(2) You set a window of +10 to +40 ms. Both +31 and +39 are within this range so this is correct. See scorster's explanation and image above.
(3) I'll make the colours selectable. For me, red makes sense for + since the notes are late. Being late feels more like red than blue.
(4) It only takes 1 activation of the plugin to press any of the buttons any number of times. The dialogue does not close until you press the close button. You must've clicked on the Musescore main window to bring it to the front. This is how Musescore works and I have no control over it – but see point (1).
In reply to (1) Move the dialogue before… by yonah_ag
Andrew & Scorster:
Thanks for both for the replies. I am using MS 3.62. I did not move the Main sheet music page or bring it to the front of the plugin menu intentionally. When I launched the plugin and its menu appeared in front, as soon as I made the edits to timing and clicked either OK or Show, the menu vanished and dropped behind the main page. I had to call it back up to bring it to the front so I could click the other tab (Show or OK). Clicking OK or Show should not make the plugin menu vanish behind the main page. Only when I close it with the X in top right should the menu vanish. Making it dockable or forcing it to remain in front of the main page until closed, should do the trick.
Honestly I have no love of the colors red or blue. You can leave them as Red for + and blue for - if you wish. I'll get used to it.
Thanks for explaining why 10-40ms allows "39" to be in that range. I get it now.
Thank you both for finalizing this great plugin. I am already using it for several of my +20 separate tracks in the score I am working on. I can hear the difference.
If you need a score to work on to assure that the tiny numbers appear above the correct instrument track, I have over 90 of them. Here is one score that has several instruments in it to play with. Please make sure you bring all instruments to MS default using the Mixer menu first, since I use lots of custom soundfonts.
Glad I found the # position problem. Looking forward to the next version.
Frank
In reply to Andrew & Scorster: Thanks… by fsgregs
As I said, I have no control over making a dialog plugin stay on top. You could raise an issue for this on Jojo's GitHub for consideration in 3.7 Evo. Try the docked version of the plugin that I've added below, 0.8.1.
In reply to Andrew & Scorster: Thanks… by fsgregs
I'll add colour settings in the next version which will give you 24-bit colour depth, i.e. over 16 million different colour choices. It's easy to do and gives users free choice.
Thanks for the score. The mixer won't matter because I only use my own custom soundfont which has around 10 guitar variants, 1 piano and nothing else. The score will be enough to help me to debug the issue.
Thanks for the feedback.
In reply to Andrew & Scorster: Thanks… by fsgregs
20+ tracks in a score =
😮
That doesn't even bear thinking about.
In reply to 20+ tracks in a score 😮 by yonah_ag
Yeah, I get a bit carried away with some of my adapted scores. Every since I began adapting symphonies, the # of tracks has gotten a bit ... large. There is one guy on the MS website who posts scores with over 40 tracks in them. Now HE ISSSSS nuts!
In reply to Yeah, I get a bit carried… by fsgregs
That makes you only half nuts. 😉
In reply to That make you only half nuts… by yonah_ag
Sooooo true!
In reply to v0.8 Show / Hide texts for… by yonah_ag
v0.8.1 - same as v0.8 but starts docked. (No other changes)
Interestingly, on undocking it stays in front of the main Musescore window.
NoteTimeOffset 0.8.1.qml
In reply to v0.8.1 - same as v0.8 but… by yonah_ag
Andrew: I just discovered V8.1 and tried it out. When I launch a score I am working on, I have both the inspector and the virtual keyboard docked already (see screenshot below). They help me to get right to work. Then, if I launch Plugin V8.1, it's menu nicely docks on the right in front of the Inspector, but behind the virtual piano (see screenshot below). Can you make it so that the menu appears in front of all other docked menus? That way, I won't have to search for a place to move it to.
Looking forward to having the numbers appear above the right instruments.
In reply to v0.8.1 - same as v0.8 but… by yonah_ag
Andrew: I just discovered V8.1 and tried it out. When I launch a score I am working on, I have both the inspector and the virtual keyboard docked already (see screenshot below). They help me to get right to work. Then, if I launch Plugin V8.1, it's menu nicely docks on the right in front of the Inspector, but behind the virtual piano (see screenshot below). Can you make it so that the menu appears in front of all other docked menus? That way, I won't have to search for a place to move it to.
Looking forward to having the numbers appear above the right instruments.
In reply to [inline:Clipboard 9.jpg] … by fsgregs
I have no control over this layering but you should be able to drag it elsewhere, including undocking it. Maybe if I made it taller then all the contents would be visible. You could try this by changing the height setting in the plugin code then reloading plugins.
or you might be able to: undock it, make it taller, redock it. This would show whether a height change would be a solution.
Your palettes panel is also obscured by the piano keyboard.
In reply to [inline:Clipboard 9.jpg] … by fsgregs
There's too much wasted vertical space in my plugin. I really need to squish things a bit more closely and match the inspector's spacing.
In reply to [inline:Clipboard 9.jpg] … by fsgregs
I seem to recall that a plugin can select docking to be on the left or on the right, so it could open on the pallets area if that would make more sense. (It won't help with the overlap.) The width of your panels may dictate whether this is helpful or not. Again, try dragging and resizing the plugin's panel.
In reply to I seem to recall that a… by yonah_ag
Andrew:
OK, I undocked the plugin menu and dragged it to the top of the Inspector. To my delight, it not only assumed a fully readable position, but became a clickable 2nd menu next to the Inspector. I could then select either the plugin menu or the inspector and leave it running to edit other instruments. See screenshot below.
So, just remove the command to dock it, and when I use the plugin, simply open the menu at the top of the inspector as in my example. Problem solved. Also, you might want to change the directions at the bottom of the menu to say, "Select measures Set Min - Max Press OK &/or Show
In reply to Andrew: OK, I undocked the… by fsgregs
That looks better although I still need to strip some vertical space. You can probably make Inspector the first tab of this multi-tabbed panel by dragging it before the Note Time Offset tab.
• Does Musescore remember this laoput next time you start a session?
• Does Inspector now get obscured by the piano keyboard?
The status bar's initial message is just a quick tip on basic plugin usage. Reset, Show and Hide are optional commands so are not in this message. The documentation will detail the full usage, or since this is a simple plugin I could just add a popup text box for the documentation triggered by a Help button. The status line is also used to display processing information.
In reply to That looks better although I… by yonah_ag
Andrew:
The Piano virtual keyboard is set to always be on top, but when docked at the bottom, the Inspector menu is always behind it. So no, it is not obscured. Regarding remembering things, I absolutely hate having to keep requesting things, but ...
I used the plugin to set a random timing edit to my grand piano. If I recall, I set it to -20ms Min and +40 ms Max, and set the entire staff to exhibit it. Great. However, when I closed the plugin menu and reopened it later, it reset to "0" Min and "0" Max, even when I re-clicked on the Piano track. I know you wanted it this way, but I could not easily tell what parameters I used on the piano. I know that when you move the tiny numbers to the right track for version 1.9, I will see some tiny numbers above the piano track, but it will not tell me what exact values I used. Therefore, can you somehow pick up the initial values that I entered into the plugin menu (-20ms Min to +40ms Max) if I re-click on the piano track or any other track I already edited? The plugin menu should not always read a default zero (0) if in fact, I have already edited a track.
In reply to Andrew: The Piano virtual… by fsgregs
Saved setting for plugins are usually the last thing that I put in place. It will happen eventually but it the code needs to be written as these things come for free with a plugin. This will save the last used min/max, selected colours, text size etc.
I can't save the settings per stave per score as this would need to be stored in the mscx file, which is maintained by the core MS program. This is not plugin territory.
You could add a manual stave text to display the settings that you used, hiding it when not needed, but you would need to update it on changing settings and re-applying offset.
In reply to Saved setting for plugins… by yonah_ag
Ah Ha! I understand. Since the plugin can't record it, I think adding a manual "hidden" note on any instrument track/stave I edited to tell me what values I used in the plugin and what measure numbers I began at, makes the most sense to track. Great idea! Here is an example screenshot:
I'm not sure the plugin recording the "last" set of values used, makes worthwhile sense. If we do what I/you proposed above, the hidden text note will suffice, yes?
One minor last thing. The faint blue color of the tiny text numbers is a bit hard to discern. Either make it a darker color blue, or make all the #'s Bold text.
In reply to Ah Ha! I understand. I… by fsgregs
As I said before, there will (eventually) be user definable colour settings. Until then you can edit the plugin code and use your own preference. The blue colour can be found by searching for "#0000EE". You can use Musescore's inspector's colour picker to generate these hex codes:
I tried bold text but it looked 'smudgy' in small font sizes. There will also (eventually) be a font size setting in the app.
In reply to As I said before, there will… by yonah_ag
OK, thank you. i will edit the color. Great job!
In reply to OK, thank you. i will edit… by fsgregs
0.8.2 Colour editing easier as it's moved to the top of the plugin.
NoteTimeOffset 0.8.2.qml
Also removed wasted vertical space so the UI is not so screen greedy.
Proper font colour and size controls will appear at a later release.
Next job is to fix the stave text positioning - but this is for another day!
In reply to 0.8.2 Colour editing easier… by yonah_ag
Thank you as usual. I was able to edit the color of the + MS values to a deeper blue. Looks very good and by dragging the plugin menu to the top, I undocked it and placed it open in front of the Inspector menu (or behind it if I clicked on the Inspector). Super job!
In reply to Thank you as usual. I was… by fsgregs
Andrew:
First, in adjusting the color of the MAX values, I got to examine your entire plugin's code. Holy Cats! You did such a great job. The code is a LOT more complex and detailed than I imagined. Soooo good! Thank you so much.
That said, I discovered another little bug. In the score I am working on, I used the plugin on two separate instruments (piano and drums). I set "OK" and "Show" and two sets of numbers appeared (on the top line only but that will be fixed). I then tried hiding the numbers from the piano track only by selecting it and clicking the "Hide" tab in the plugin menu. To my surprise, BOTH sets of numbers vanished (even the drum's #'s), and when I changed my mind and clicked "Show" again on the piano track, no numbers reappeared, not even the drums numbers. In fact, when I clicked on any track in the score and clicked "Hide" in the menu, all the numbers vanished and would not return.
You need to set the plugin so that if I choose "Hide" for a track that I edited, the plugin only makes those specific numbers disappear. All the other numbers from other tracks and other edits, remain. I have not reset the track to ignore the plugin. If I then change my mind and select "Show" again for the track I edited, the original numbers simply reappear. Lastly, if I choose "Hide" for a track I did NOT edit, nothing happens to the existing numbers.
Hopefully, is that possible?
In reply to Andrew: First, in adjusting… by fsgregs
This bug is related to the texts displaying on the first stave only so I'll clear it up at the same time, (but I might need reminding).
Note: A track does NOT correspond to an instrument in the score. Internally there are 4 tracks per stave, corresponding to the stave's 4 voices.
So, a 20 stave (instrument) score will have 80 tracks, numbered 0 to 79 from the top. The staves would be numbered 0 to 19 from the top.
This matters because hide and show are for a stave NOT for a track.
See track in the Properties section of the Cursor class:
https://musescore.github.io/MuseScore_PluginAPI_Docs/plugins/html/class…
In reply to v0.8.1 - same as v0.8 but… by yonah_ag
Side note: With the TAB Ring plugin wasn't there a reason we abandoned making it dockable? I think having it dockable restricted some needed functionality?
In reply to Side note: With TAB Ring… by scorster
There was a reason, (can't remember exactly what), but it wouldn't restrict plugin functionality. Possibly related to Qt Grid Layout positioning of controls when resizing the window. Also dialogue mode would make the panel unpleasantly wide. I have stopped using Qt Grid Layouts and now just use simple (X,Y) positions so the resize issues won't be relevant any more.
Update 0.8.3
See above: https://musescore.org/en/node/376281#comment-1288969
In reply to Update 0.8.3 Reset now… by yonah_ag
Andrew: Ahhh ... still at least one bug in the plugin. I loaded the plugin up and tried to assign a random edit to track one, which is a solo soprano voice. So far, it has over 100 notes, as the singer is singing lots of words. Unfortunately, when I set the Min to -10ms, and Max to +30 MS and clicked OK and Show as I had done on all other tracks, the plugin froze and just said "Processing". I waited over 3 minutes and still no change. I then "Reset" everything, retried it with OK but without the "Show" and it still froze. Either the plugin does not like the .sf2 soundfont I am using for the solo voice or there is something wrong with track 1 that is locking up the plugin. Here is a screenshot: Also, the PRE went nuts, showing values for track 1 of Len 750 and Onset of 250. Len should not have been under 970, no?
Help!
v0.9.0 : Saveable Settings
NoteTimeOffset 0.9.0.qml
In reply to v0.9.0 : Saveable Settings … by yonah_ag
@yonah_ag asked > Can we continue the discussion at the bottom of the thread? It's getting tricky to find new posts when they are in the middle and we're losing width due to the amount of indentation. Thanks!
Good point!
@ yonah_ag wrote
(1) When I enter a hex code the corresponding colour swatch changes. I have no idea why you can't select them.
I restarted MS 3.7. Now when I click in the Hex field I get a blinking cursor, which I had seen before. But still I can't drag-select or double click to select. Interestingly, I can backspace to delete and type to enter digits. But often when I reenter the Setup area and clicking doesn't even result in a blinking cursor.
BTW, the term Setup has implications that likely don't apply, so I'd recommend labeling the button Settings.
The colour swatches themselves have no action, they are just to confirm the hex code.
Good to know!
(2) On mine the font input box steps up and down the size in 0.5 increments and the value is used when adding the texts. The Y value offsets the texts vertically on the stave. Yes, it could say font size. Originally there was another input on the row to select Musescore's auto-placement positioning.
I get the 0.5 increments
(3) I wonder why mine is so different?
(4) Seems to be because the font size is larger for the texts on MacOS. I can either try to change the font size to match Windows or move the checkbox, which will separate it a bit too much on Windows.
re: 3) and 4)
I know. It's not fun when I've accomplished some serious functional coding only to find mysterious or untenable issues with the UI.
Clearly my QML layout knowledge is deficient. Maybe I should try Grid Layout.
Yeah, maybe it's worth another go with Grid Layout. Seems like there would be some benefits like constraint based options.
Good luck!
Thank you for this plugin and the others that I find so useful.
0.9.1 : Layout
• Made some changes to try to work with both Windows and MacOS. Hopefully the dialogue no longer gets cropped vertically when docked.
• Tested setup page and it is fully working for me. Changes don't apply until you next press Show, i.e. this does not update texts already added to a stave.
• The Y setting controls the vertical position of the texts. Use negative for higher, positive for lower.
• The colour swatches are for display only: they have no action in themselves. The hex input boxes can have values entered manually or pasted from the inspector.
• Selection definitely does not need 2 measures. Even a partial measure is enough:
NoteTimeOffset 0.9.1.qml
In reply to 0.9.1 : Layout • Made some… by yonah_ag
Panel height issue is now fixed in 3.7 on MacOS!
Hex values are still not editable, and in the incarnation I see that the numbers overflow the size of the text field. And you can see in the image that the cursor is also outside the field. Hopefully this affords some insight. Important to mention, I can edit the text field of the spin boxes! (Use spin boxes and put something in front of the arrows?)
Do you think it's a matter of the "secondary" panel?
You definitely deserve this good news. When I do finagle (click to enter the field, right arrow as far as I can, backspace to delete and type a value) a #FFFFFF Hex value results in a white swatch!
I'm thinking it would be better to display the revision number in the main panel. Which you had done originally.
In reply to Panel height issue is now… by scorster
0.9.2 : UI Updates
• Wider input boxes for hex values
• Version number moved to main screen
Re: "I can edit text field of the spin boxes". This is correct, you can enter values manually if your don't want to use the spinbox controls.
NoteTimeOffset 0.9.2.qml
In reply to 0.9.1 : Layout • Made some… by yonah_ag
Andrew: You did it. The plugin menu now shows up in Windows 10 when first called up, except the very bottom with the message. The plugin also now works great in only a partial measure (see top stave below). I don't know if I did something wrong before, but it works now. Here is a screenshot: Please note that I had to raise the placement of small numbers in the Y axis to -5, to clear all the other MS characters in the song. You might want to edit that axis to default to -5 or so.
Regarding the HEX color box, clicking in it to change it does not select anything. You cannot mouse scroll across the numbers or change just a few internal characters to remove them like most other texts. You have to position the cursor at the end of the numbers and then backspace to remove the entire set, then paste a new set into the boxes. No big deal for me ... I can just do that, but if the Hex numbers were clickable, that might be better for folks that are more used to it. It's up to you. Other than that and increasing the menu box to show the bottom message, I think the plugin is about done. Wonderful job!
In reply to Andrew: You did it. The… by fsgregs
OK, it needs to be a bit taller still.
When I click in either of the hex input boxes I get a cursor and can delete forwards or backward or press A to select the whole contents. There does appear to be no mouse selection available so I'll look into that. However, once you've chosen your preferences you shouldn't need to make changes very often.
The best Y value for my scores is -3.0 but whatever you last chose will be saved for next time so we both get to save our own preferred value.
In reply to OK, it needs to be a bit… by yonah_ag
Andrew: In the Setup Hex boxes, I can place a blinking cursor inside either of the boxes, but scrolling over any of the numbers does nothing in Windows 10. The cursor doesn't move nor select anything. CTRL+A' does select all 8 characters and Pressing "Delete" deletes them, but this needs to be in the instructions. I then have to place the cursor at the beginning of the Hex box & hit "Paste" to paste a new 8 character color in from the Inspector. Then, the color swatch changes to the color I selected and I do the same with the 2nd box. All good, but it might be easier if the cursor in the Setup boxes could scroll and select all the numbers, as is typical in other Windows apps. If that is too difficult, fine, but just make sure the instructions are clear on how to change colors of the numbers.
AGH ... still a bit more to adjust in 0.9.2. I used the plugin on 6 of my 19 staves (piano, warm pad and 4 drum tracks). When I saved, closed and then reopened the score, all 6 staves were still properly showing their edits, UNTIL I chose to change just the Piano stave. I "Reset" and "Remove" the values in the Piano stave only and to my surprise, ALL 6 staves reset and all 6 sets of numbers vanished. Doing something to the top Piano stave removed everything. Obviously, this was not intended, so ...
In reply to Andrew: In the Setup Hex… by fsgregs
I don't use a mouse on input boxes, (in fact on most things I prefer keyboard shortcuts), but I don't know why mouse selection is not available. I'll look into it but given how little these inputs are going to be used it doesn't seem to be a major issue. I could probably add code so that clicking the swatch clears the hex input.
After changing the piano stave, were the actual note offsets removed, (piano roll editor), or just the texts? If it was just the texts then Show should put them back.
In reply to There is nothing to scroll… by yonah_ag
Andrew:
OK (1) When I click either "Remove" or "Reset" on the Piano stave, the numbers in ALL 6 edited staves vanish, but are still there, just hidden. I have to clicking "Show" on EACH of the other five staves to restore the numbers. FYI
The Plugin menu is still too small on Windows 10. When I launch it, the bottom message is still not visible. It looks like this:
BTW, I now can click on the Setup HEX numbers to scroll across them, delete them and replace them with Inspector colors. That is now done in 0.9.3. Good job as always!
In reply to Andrew: OK (1) When I click… by fsgregs
Seems like the height needs to be different on different computer setups. I'll see if it can be made a definable setting.
The numbers are never "still there but hidden". There is no logic in the program to hide them, only to show them and delete (remove) them. At least the offsets are being kept on the note's play event info, (as seen in PRE). Anyway, I'll look for a fix.
In reply to Andrew: You did it. The… by fsgregs
@fsgregs wrote Regarding the HEX color box, clicking in it to change it does not select anything. You cannot mouse scroll across the numbers or change just a few internal characters to remove them like most other texts. You have to position the cursor at the end of the numbers and then backspace to remove the entire set, then paste a new set into the boxes.
... I can place a blinking cursor inside either of the boxes, but scrolling over any of the numbers does nothing in Windows 10. The cursor doesn't move nor select anything. CTRL+A' does select all 8 characters and Pressing "Delete" deletes them, but this needs to be in the instructions. I then have to place the cursor at the beginning of the Hex box & hit "Paste" to paste a new 8 character color in from the Inspector. Then, the color swatch changes to the color
You're on Windows?
This is the same behavior I'm encountering on MacOS.
Additionally I can click into the Hex fields only on my first trip to the settings area. If I close the settings area, or click on the score, I have to quit the plugin and start a new session before I can click into the Hex fields.
In reply to @fsgregs wrote Regarding the… by scorster
Very odd! I can freely edit the hex fields as often as I want without quitting the plugin. I can reactivate the score window then go back to the plugin and all still works. I'll have to do some research.
Do the settings get saved properly for the next session?
0.9.3 : UI Updates
Clicking the swatch clears the hex input down to "#", ready for manual typing.
NoteTimeOffset 0.9.3.qml
In reply to 0.9.3 : UI Updates The hex… by yonah_ag
Kudos!
• The issue with plugin panel height is resolved. There's a little extra space at the bottom now, but I do not mind that.
• No more problems with Hex input cursor, except when I switch to another app and back. On returning to (reactivating) MuseScore there's no blinking cursor in the Plugin's Hex field. Fortunately I can select, paste, etc. It's just a little disorienting when the cursor fails to appear. Also, once in this state, a focus issue arises: delete keypresses no long affect the contents of the field, but they are received by the score!
Re: Clicking the swatch clears the hex input down to "#"
That's handy, particularly given the prior issue, but it's a likely tripwire for those expecting a color picker but find they've inadvertently cleared the current setting. Makes me want a Cancel button, or Reset to Prior settings, or Reset to Default color.
Alternately, on field-click, you could select the Hex digits, but given the fix, people now have the wherewithal.
In reply to Kudos! • The issue with… by scorster
Nearly there! You could iterate the plugin height downwards until the perfect value is found. It's at the start of the UI definition.
Ah! It will indeed be a tripwire. I could add a small x button for each field but I wonder if there's any point. It's so easy to clear these fields manually and they shouldn't see much use.
It sounds like there is something going wrong with the focus on MacOS.
Do the settings actually get saved for use between Musescore sessions.
In reply to Nearly there! You could… by yonah_ag
Nearly there!
Indeed!
Do the settings actually get saved for use between Musescore sessions.
Yes. I have not seen an instance where the plugin fails to save settings. (Where are those stored? Score Properties?)
I made the following change in a text editor and saved
height: 225;
And this is a good fit.
To my surprise, the display difference appears only after restarting MuseScore. Closing and reopening the plugin didn't work.
In reply to Nearly there! Indeed! Do the… by scorster
You would need to reload the plugin via the plugin manager to avoid a restart.
Frank reports that it is still getting cropped on his screen so I wonder if I can add a saveable setting for plugin height. I'll have a go.
The settings get stored in Musescore3.ini on Windows, not sure about MacOS. This is not something that I have any control over.
In reply to You would need to reload the… by yonah_ag
Andrew:
I have my Windows desktop screen at 125% of normal because my 77 yr old eyes are a bit dimmer, so I suspect the height of the plugin window may have to do with my screen. When I edited the "Height" in the plugin to "340", the entire plugin menu was visible and great for me. The values also were permanent in the plugin. Whenever I loaded it, the "Height" read "340" in the code. Given that folks may have their own Windows desktop settings, or use Apple software, maybe you can boost the height to 330 or so, and add a line in the instructions to adjust the "Height" in the plugin using any text editor, if the bottom line of the menu is not visible, or is too visible.
For me, that leaves only the problem with "Remove" removing ALL text on all staves when clicked. It needs to remove only the text on the one stave a user clicked on, and leave the others alone.
FYI
0.9.4 : UI + Offset Texts
I could not make the height dynamic from with the plugin so this has to be done manually by changing the height property of the UI dialogue. I have moved this to the top of the code for ease of access:
Remember to reload plugins (or restart Musescore) when you make changes, otherwise they won't take effect. The piano keyboard needs to be opened before the plugin because Musescore's renders the layout differently if you do this the other way around, (just try it to see for yourself).
NoteTimeOffset 0.9.4.qml
Time to write the documentation as we must be close to 1.0.0. If either you have a short excerpt in MSCZ format which showcases the effect (before and after) then please post for inclusion in the documentation. This may also be useful in this thread for any other interested Musescorers.
In reply to 0.9.4 : UI + Offset Texts … by yonah_ag
Andrew:
Boy, I am now very confused. Here is what I did:
Now it gets really weird. When I checked the other five staves/instruments, I discovered that SOME OF THEIR NUMBERS were still also gone, but only some of them. Specifically:
(A) the Warm Synth numbers were gone in some measures, but not others
(B) the Drum Kit notes had NO numbers in only some of the measures. Some notes WERE still showing #'s (see screenshot below)
(C) the Timp. R stave had all its numbers still present
(D) The numbers in the Concert Snare Drum stave were mostly gone, but not all of them. A few were still present (see shot below)
(E) All the numbers in the Cymbal stave were gone ... vanished.
When I clicked the "Show" button in the plugin menu, all the numbers returned on all six staves in all the right spots.
I have NO idea how or why SOME of the plugin numbers in all six staves vanished but some did not when I pressed the "Remove" button for the piano. This was not supposed to occur ... right?
I am attaching the actual MS file for you to experiment with. Remember that some of the instruments are custom .sf2 soundfonts, not default, but you can edit them easily via the Mixer menu. Let me know if there is anything I can do to help further:
In reply to [inline:clip6.jpg] [inline… by fsgregs
As you say, that's really weird and it's definitely not supposed to happen. I'll take a look.
0.9.5 Bugfix for offset text removal
@Frank: How's this version? Seems like annotations are track based, (=voice within the stave), and I had not appreciated this fact.
NoteTimeOffset 0.9.5.qml
@Frank & scorster: I'm thinking of changing OK to Apply. Any thoughts?
In reply to 0.9.5 Bugfix for offset text… by yonah_ag
Andrew: Changing "OK" to "Apply" is fine. I like it.
Unfortunately, when I "removed" the numbers from the piano score using 0.9.5, the exact same effect on the other five staves occurred. Some of the numbers disappeared but not all. Drum kit, Timp. R, Con sn, and Cym have all been previously edited by the plugin. To get them all back, I had to scroll across at least one measure in each stave and click "Show". That is OK to do but why some of the numbers vanish when I click "Remove" on the piano track, is the mystery. Here is another screenshot:
Are you getting something different on the same MS file I sent you yesterday?
In reply to Andrew: Changing "OK" to … by fsgregs
It worked for me on a 2 instrument guitar setup. I'm struggling with your score as so many instruments is doing my head in. Can you make an example with 3 instruments and 4 measures which exhibits the issue? I should be able to work with that.
In reply to It worked for me on a 2… by yonah_ag
Andrew: OK, I created a test score with 4 instruments (piano, violin, strings and warm pad) and 12 measures (attached below as Test1). I then loaded up the plugin and set all four instrument staves with the same setting (-10ms Min, 40ms Max). The Piano and Warm Pad both also have a bass stave, so I edited a total of six staves. I then "remove" the treble stave of the piano. The numbers in ALL SIX staves vanished (not supposed to). Then, when I "Show" the treble piano stave again, only the piano treble stave numbers reappeared. All the other five staves remained invisible. I had to click "Show" in all other five staves. I also tried "Remove" in the other five staves. In every case, ALL the numbers in all six staves became invisible. "Show" again made the numbers in the one stave I selected, reappear but I had to "show" all six. I could not get only some of the numbers to vanish like the other score I sent to you, but plugin 0.9.5 still needs work to make sure only the one instrument track/stave we click on vanishes when "Hide" is clicked.
To get the partial disappearance, I created a new test score (Test3), using 7 instruments and 8 measures. The file is also below. Six of the seven staves have already been edited by plugin 0.9.5 to reflect -10ms and _40ms. The top stave is untouched. All numbers should show fine.
Now, load up the plugin and click "Remove" in the piano stave only. You will discover that some but not all of the numbers in the other five edited staves vanish. A few are still visible. I have no idea what is going on, but the file will help you see the result.
Awaiting word!
In reply to Andrew: OK, I created a… by fsgregs
Thanks, I'll take a look over the weekend. We can't get to 1.0.0 with bugs like this kicking around. Maybe it's related to double stave instruments like pianos but I really don't know yet.
The plugin editor has no debug mode (where you can single step code and inspect variables), so I have to add console log outputs everywhere that I want to inspect the process. It's painstaking.
(When the offset texts vanish they have not been made invisible: they have been deleted.)
In reply to Andrew: OK, I created a… by fsgregs
Test 1 doesn't seem to match your description. It only has a piano and a drum.
In reply to Andrew: OK, I created a… by fsgregs
Test3 is ok so I'll work with that one.
0.9.6 Offset Text Removal Fixed! (Hopefully)
NoteTimeOffset 0.9.6.qml
If there are still issues then please show them in this version of Test3:
Test3-02.mscz
In reply to 0.9.6 Offset Text Removal… by yonah_ag
Andrew: Well, you seem to have fixed the problems. In using Test3, I loaded the plugin, did all the Resets and apply/add texts, and when I "removed" the text from the piano stave, only the Piano stave texts disappeared. No other staves were affected. Then when I "Add Texts" again in the Piano stave, the text reappeared in only the Piano stave, and again, no other staves were affected. GREAT!
Strangely, the PRE and the texts were not permanently affected by the "Remove" button. When I "Add Texts" again in the Piano stave, all the texts reappeared and the PRE still showed my edits to timing. I thought you said the Remove button actually deletes all the timing edits, not just hides them, but this is not what I found. Fortunately, I like it this way. If I choose "Add Texts" again without "resetting" the stave, it is nice that my prior edits are still there. Leave it alone if possible.
FYI, the very first note in each stave is NOT changed by the plugin, no matter what type of note it is. It is unaffected by my edits, even if I choose "Select Whole Stave". Frankly, I can live without it, but it is still weird. (see screenshot below)
Other than the 1st note thing, it looks like you have finally hit version 1.0.0.
In reply to Andrew: Well, you seem to… by fsgregs
@fsgregs wrote > Andrew: Well, you seem to have fixed the [text number]problems.
Nice report Frank. This is really good to hear!
@fsgregs wrote > Strangely, the PRE and the texts were not permanently affected by the "Remove" button. When I "Add Texts" again in the Piano stave, all the texts reappeared and the PRE still showed my edits to timing. I thought you said the Remove button actually deletes all the timing edits, not just hides them, but this is not what I found.
Remove: only discards the text numbers that reflect the current timing
Reset: sets note timing to their default "face value" onsets (as does Min = 0 and Max = 0)
@fsgregs wrote > Fortunately, I like it this way. If I choose "Add Texts" again without "resetting" the stave, it is nice that my prior edits are still there.
This behavior has been there from the start, and I like it too.
@fsgregs wrote > *FYI, the very first note in each stave is NOT changed by the plugin, no matter what type of note it is. It is unaffected by my edits, even if I choose "Select Whole Stave". Frankly, I can live without it, but it is still weird.**
Andrew once explained that the first note of a score can be "prelayed" which makes sense. Delay could be allowed though.
In reply to Andrew: Well, you seem to… by fsgregs
No, I said that Remove deletes offset texts from the staves, it does not delete offsets from the notes themselves, (as you have seen in PRE). Deleting them from the notes is the job of Reset, (which does also delete stave texts because they would be misleading otherwise).
Glad you like it this way because it's by design and, to me, makes sense.
You certainly should be able to delay the first note of any stave but you cannot prelay the first note because its negative ontime stops Musescore from playing the note.
To fix the text removals I needed to understand how Musescore tracks, (there are 4 of these per stave, numbered from 0 for the first stave), work in conjunction with a plugin score cursor. Whilst the effects of not the bugged remove seemed a bit random they were, in fact, not random at all but a consequence of my lack of knowledge. Phew! Took a while to put that one to bed.
In reply to No, I said that Remove… by yonah_ag
Andrew: Got it now. I can live with the 1st note not being edited in the prelay. No problem. I also understand that when I click "Add Texts" again, a new set of the same random small numbers reappears. They won't change to a new set unless I also "Reset" the stave.
I think you are done. BIG SMILE. What a GREAT job. Sorry it took such a lot of effort. Go for 1.0.0
Gratefully,
Frank
In reply to Andrew: Got it now. I can… by fsgregs
If you click Add Texts when they are already present then you will actually duplicate them although this may not be immediately apparent because they will be co-incident with the existing texts. If you were to change the autoplacement setting to true then they would not be stacked on top of each other and you would see them.
Time to write some documentation. There are potentially some other issues but they should solvable. For example, pianos have 2 staves but they get processed separately by the plugin which will result in different random offsets between the treble clef notes and bass clef.
In reply to Andrew: Got it now. I can… by fsgregs
If you really do want to prelay the first note of a stave then you could add a 1/16th rest pickup measure as the first measure of the score, although this might look a bit strange.