Note Input by Dubbing In Automatic Real Time?

• Sep 18, 2018 - 04:38

So MuseScore is totally awesome. This I have come to believe. I remember MuseScore in the early days, so kudos to all who have done such great work to make it what it has become today. Once I got the gist of the Automatic Real Time (ART) Note Input ability, I found it to be good. Very good.

But every great discovery brings with it new questions. Here are my questions. If they have already been done, then please let me know.

1.) The first idea may not be so simple. Subdividing. The way the "ART Note Input" works is sort of like what I'll call "additive". Set ART Note Input to record; play a note and hold it while the metronome ticks away; and, if you count two beats, you'll get twice the note value your set your input value to be. I call that "additive" because it takes the least common multiple and builds upon it. What it wont do, unfortunately, is subdivide the designated input note time value, which makes it feel kind of odd, if you want to subdivide your input. Subdividing seems possible, I think, but I dont understand why it isn't done yet.

2.) The second idea seems simpler: Dubbing. Once you get one track of music notated, you've actually got something cool to work with - assume the first track you laid down was some cool accompaniment or bass line. You could solo over it. But MuseScore isnt to the point where it record a track while playing another one back. Right now, MuseScore CAN playback, and it CAN record - but it can only do one or the other at any given point. Why can't both processes be run simultaneously?

3.) The third also seems simple - probably the simplest of them all: "Auto-Appending Measures" in ART Note Input mode. What happens now is, you have to set your measures in advance of using the automatic note input recordings - it's not so bad... if you forget, you'll just run into a dead end - but one possible workaround is to append like 5000 measures, and then just jam away... The only problem is, I accidentally rendered an mp3 today, when I forgot to delete all those measures - and for forty seconds of music, I got a two hour mp3... nothing terrible, but it made me think an "Auto Append" feature might be cool, if it's possible.

I wish I was a better programmer than what I am. I'd be happy to build this stuff myself, but I am having some trouble figuring it out.

Anyway, I hope some of these ideas can inspire some great new developments.

  • Wm


1.) Subdivision is quite a lot harder, as you need some kind of smallest value to which subdivision is allowed. Meaning, if you think you've played a note during "half a beat", is it really half a beat or 5/11ths of a tuplet (to make an extreme example) or 15/32nds or … ?

2.) See and add your voice to #150961: Playback during Semi-Real-Time-automatic MIDI note input

3.) I like the auto-append proposal, perhaps even for other input modes as well. Although I see and use the added value of not having auto-append as well (especially during transcribing from an existing print).

In reply to by jeetee

I followed the link you posted, and I gave a shout-out back to this thread.

Am glad you liked #2 and #3. :)

Also, I kind of know what you mean re: #1, and I think I have an explanation on how to accomplish subdivisions. However, I just wrote it out, and it was so long and tedious - it's hard to know if my writing wasn't confusing. That said, I am almost certain I have the right idea, but I'm holding-off from posting the explanation until I have had a chance to review it for clarity. I'm pretty sure I can tell programmers how we could program subdividing, but I want to make sure it's crystal clear, or I fear I'll lose people's attention with respect to something that could really create something quite cool for everyone.

Bear with me a day or two, please. I'll post more on it soon.


In reply to by jeetee

To accomplish an automatic recording in subdivisions, I am going to have to make some assumptions about the way ART-NI already works, and then try to build upon them. I'll also describe the way Fruity Loops Piano Roll works, as an introductory side item.

MuseScore seems to identify note input a few different ways. One way is via the Time Signature Values. I'll call them TSVn for the numerator "measure" value; and TSVb for the denominator "beat" value; and another is by what I'll call a "DNIV" for "Designated Note Input Value", which the user sets prior to recording.

At first glance, it might seem like the DNIV = the TSVb, but this is not true. In fact, the DNIV may be greater than, equal to, or less than the TSVb. In any case - for recording purposes - I am regarding the DNIV as the LCM (Least Common Multiple) unit of time, during automated recording. So, the DNIV = LCM.

To create a subdivision feature, I am proposing (based upon my speculations) a few different things.

The first would be to set a recording "while" loop, like in a video game, to log the input at regular chronological intervals. The rate of capture would thus be a chronological quantity expressed in terms of milliseconds as the LCM. This is the way Fruity Loops seems to capture input in their Piano Roll. It also seems an efficient way to avoid unnecessary processing time because it avoids nested loops during the scan process.

The second idea would be a quantization routine that would round the captured chronological input to nearest rhythmic values. That would account for odd stuff like triplets, etc. I do not sense the quantization need overwrite the chronological input, although it's obviously all editable.

But there might be a simpler way.

When we use ART-NI, we set the note input value, which - when complete - gets explicitly stated in the score in a sort of "additive' way. By "additive", I mean, ART-NI just kind of works like a regular old typewriter keyboard. Hit a key and it appends to the list whatever value the user designated. If the LCM of a manual typewriter is a letter, then the ART-NI value is the letter, and whenever you type a letter it all adds up to form a word.

It seems like only three or four values are in effect: 1.) the DNIV, 2.) the beat, and 3.) the number of beats per measure. I simply propose adding a fourth value, which I'll call an "NoS Value", for "Number of Subdivisions". The default NoS Value would just set NoS = 1 = DNIV = LCM, but, if the DNIV = quarter note and the NoS Value = 2, then the LCM would actually be an 8th note; or, if the NoS Value = 4, then the LCM is = 16th note.

It may not be as precise as recording in terms of milliseconds and then rounding to a quantized value at edit time, but a "NoS Value" could still do a lot.

What I'm trying to figure out is, the NoS Value would be the LCM, but - since it may or may not be used - how could it exist as a ghosted note, or as a note held over many times, yet be "silently overridden" so the user could focus on relating to a noticeable beat. The way it is now, we regard the DNIV as the LCM, and the user identifies the DNIV by either playing it, holding it over, or (in the event of a rest) typing the right arrow key. But the idea I'm proposing is to let the NoS Value almost impercetibly be the LCM - and then somehow use the perceived DNIV at a higher level in an outer loop. MuseScore already does something like this with respect to measures when it uses the lower note at the beat and the upper note value as the number of beats to proceed to the next measure. What I am trying (so ineptly) to propose is to let the NoS Value work like the UPPER TSVn number in a time signature, and then let the DNIV be like the time signature's TSVb "beat" value (in the LOWER position). If we can get MuseScore to record notes per measure and proceed to the next measure, then we should be able to do the same with recording subdivisions per DNIV note and proceed to the next DNIV. That's the idea.

I think those last sentences were as clear as I can get it, so I hope it makes sense. On the other hand, even if it does make sense, then it may not be doable or working in the right direction for some reason. But I'm pretty sure it should work. I just dont know how to implement it.

In either case, please let me know if I am barking up the right or wrong tree...

In reply to by myMelodies

A recap - once more - in nutshell...

" If we can get MuseScore to record X notes per measure and then proceed to the next measure, then we should be able to do the same with recording subdivisions per DNIV note and then proceed to the next DNIV. That's the idea."

But right now the Automatic Real-Time Note Input Value we set just prior to recording has no Number of Subdivision Value at all...

The idea is to create a number of subdivisions variable, and then apply the same loop logic used for measures to the note input value...

D***... this is hard to explain...

Do you still have an unanswered question? Please log in first to post your question.