Discussion of to-dos for Jianpu linked staff based on existing PRs
Hi!
This is perhaps the latest work about #141581: Add support for Jianpu numbered musical notation.
I haven't posted anything before... But for long, I've been following the PR about Jianpu on Github by byan61 and later the rebased version by ericfont. These two PRs still need improvements and no work has been done ever since.
Now after digging into the codes of current Jianpu implementation, I feel motivated to try to get back on track with this project.
Till now, I have made some improvements according to some suggestions from other users posted in PR's conversations, also with my own ideas(they are listed in the to-dos below). Some of them haven't been finished yet.
Jianpu branch of my fork of MuseScore: https://github.com/songchaow/MuseScore/tree/jianpu
I'll continue to work on this in the future, and I'm looking forward to your suggestions for new to-dos and existing ones.
Thank you for your attention.
Regards,
songchaow.
To-dos
-
(completed, and always will be done) Rebase to current master branch.
-
(completed) Remove duplicate standard notes displayed in Jianpu staff.
-
(completed) Replace the font for Jianpu number. (I choose
CHWJP4C
provided by Rui Fan on this page. I think it's more widely adopted.) -
(Fixed) Grace notes don't get smaller in Jianpu staffs.
-
(Fixed) Locations of underlines are sometimes not correct. Some phenomenon related to this:
-
(solved) The Jianpu beam incorrectly goes down when the notes go above B.
-
(solved) The underline's horizontal position is not correct when occurring in grace notes.
-
-
(working) The octave dots below numerical notes should be placed below the underline. However they are above the underline in current implementation.
-
(not started) Current implementation only supports translating an existing standard staff to a jianpu staff. But the feature of real-time editing a standard staff with the jianpu staff changing in sync is also needed.
Things that need discussion
-
How should Jianpu staff deal with multi voices?
As descripted in the Jianpu manual provided by Rui Fan, Jianpu staff sometimes can be split into different voices temporarily, like this:
Jianpu uses multi staffs to cope with multi voices. Actually, Voices and staffs are somewhat the same concept in Jianpu. I mean Jianpu doesn't seriously distinguish the two.
If we use the voice facility in MuseScore, they will be rendered like this(ignore the rectangles, they are used for debugging). It's different from the convention and I don't know if it's OK.
-
Jianpu staff doesn't have Clef types.
In Wikipedia example shown below(Amazing Grace), the two notes
5
in the first measure are not actually in the same octave.In terms of standard staff, a Bass Clef would be added at the front of the third staff. But we cannot tell it from Jianpu staffs as they have no clefs.
Maybe we can add an invisible clef in front of Jianpu staff.
Comments
I'm very glad to see someone picking this up... hopefully this feature will make it after all.
I don't read C++ very well but the last pull request looked unacceptable to me from a software architecture standpoint (friend classes, needlessly modifying core files etc...) It'll probably be easier to get your branch merged if it is implemented in a nicer way.
"(working) The octave dots below numerical notes should be placed below the underline. However they are above the underline in current implementation." If I recall correctly, this was the previous developer's own non-standard notation in order to better deal with multiple voices or something. Please do change it to standard notation.
"How should Jianpu staff deal with multi voices?"
The way a jianpu staff "splits" into two as in that jianpu manual would not be possible to achieve by using multiple staffs in MuseScore, so I'd suggest treating this as a function that pertains to invidual staffs. Aside from that, we need to distinguish between polyphonic notation (multiple voices; as in that Jianpu Manual example) and chord notation (as in your MuseScore example). With polyphonic notation, I think the staff should temporarily be shown as two staffs (but still be programmed as one staff) with rhythmic beams and bar lines for both voices; with chord notation, there is still only one barline and one rhythmic beaming at the bottom.
One more comment on your picture: as soon as the octave dot of the lower voice disappears, the upper voice drops down, which is confusing to read. The spacing should stay constant, so "reserve" some space for that octave dot even if it is not being used. Then again, you could have multiple octave dots and it would be silly to reserve space for that all of the time. Maybe you should reserve space for dots that are used elsewhere in the same measure or in the same system.
In reply to I'm very glad to see someone… by Thingy Person
Hi Thingy Person!
Thank you for your suggestion and knowledge of polyphonic notation and chord notation you told. I'm not professional at music theory, and didn't differentiate the two seriously, though I've seen the two are both used widely in reality.
friend classes
lasconic has also deprecated the use of friend classes in PR conversations. I'm not quite experienced at designing class hierarchy. I guess a base class for StandardNote and JianpuNote could be created?
Octave dots
Indeed, the previous developer's non-standard notation(placing dots right after note numbers) may be useful for chord notation, where all notes in one chord share the same rhythmic beaming and octave dots for each note must be notated separately.
So I'll follow the standard when there's no chords.
And there's another problem with current implementation: the octave dots are split into two columns(perhaps in order to save space). Here is a case for 2 dots. Very weird I think.
I'm also working to discard this feature.
Multi voices
Displaying multi staffs for multi voices(polyphonic notation) is ideal for standard. But I'm not sure if I can implement displaying 2 staffs for a few measures while there's only one Staff object in global. I'll look into ways of doing this when it's neccessary.
"with chord notation, there is still only one barline and one rhythmic beaming at the bottom."
It sounds reasonable, and easier to implement, but I still feel confused to have such a new layout for Jianpu. I've never seen multi notes stacked vertically in one staff for Jianpu... It seems Jianpu standard has split staffs for both polyphonic notation and chord notation.
Anyway, it's a good thought. I'll consider this again when my progress reaches there.
As for the picture with rectangles, it's only for demo and not fully supported yet ;). And yes, the spacing should be constant.
In reply to Hi Thingy Person!… by songchao
"I'm not quite experienced at designing class hierarchy. I guess a base class for StandardNote and JianpuNote could be created?"
I only have a tiny bit of training in software architecture and absolutely no experience, so you're better at this than me. If it were me, I'd base myself on other staff types like tablature.
"Displaying multi staffs for multi voices(polyphonic notation) is ideal for standard. But I'm not sure if I can implement displaying 2 staffs for a few measures while there's only one Staff object in global. I'll look into ways of doing this when it's neccessary."
Maybe if you think of it not as two staffs, but as two series of notes, with their own beams and barlines, on one staff? Like chord notation, but where there are additional beams between the numbers.
"It sounds reasonable, and easier to implement, but I still feel confused to have such a new layout for Jianpu. I've never seen multi notes stacked vertically in one staff for Jianpu... It seems Jianpu standard has split staffs for both polyphonic notation and chord notation."
Are you sure? Take a look at the accompaniment here:
https://i.pinimg.com/originals/85/17/5c/85175cb0b7bf9ec6e5f35b801dd783c…
Without chord notation, I imagine it would be very annoying to read music for instruments like the zheng, pipa or ruan.
In reply to "I'm not quite experienced… by Thingy Person
Sorry for the late reply.
"Maybe if you think of it not as two staffs, but as two series of notes, with their own beams and barlines, on one staff? Like chord notation, but where there are additional beams between the numbers."
Yes, this makes sense.
And I was wrong indeed... the score piece you provided is a great reference. Then I can feel free to implement chord notation and other stuffs.
Hi, I had a look through the repository again and love the work that you're doing, but it seems like you're adding quite a bit of jianpu-specific code to some core files. It's probably fine, but maybe now would be a good time to get some attention from the project leaders so that we can be sure that it's being implemented in an acceptable way. I'll spread the word if you want.
Here is a link with the changes so far for my own convenience:
https://github.com/musescore/MuseScore/compare/master...songchaow:jianpu
In reply to Hi, I had a look through the… by Thingy Person
Hi!
Actually, most changes to core files were committed by byan61.
"maybe now would be a good time to get some attention from the project leaders so that we can be sure that it's being implemented in an acceptable way. "
I'll consider making a PR when I'm done with the seventh point, then other developers will get noticed and discuss ways of implementation.
Meanwhile, you can feel free to encourage others to give advice on current codes. But the current implementation hasn't got significant achievement yet (till now, I've merely made some position adjustments), and might not draw much attention...
how to change the beam position on top ?
like this notation here .. and how to change the flat and sharp like this one ?
In reply to how to change the beam… by Odod
finally i made it but needs more works to change the sharps and flats
Hi again. Do you have any idea whether the work needed to get this PR up to speed with MuseScore 3 is manageable? I can't tell from experience, but I've accepted the possibility that it's too far behind to reasonably catch up; whatever the case, I greatly appreciate the effort you put into this and hope that this initiative will see the light of day some other time.
For what it's worth, I think this is a good resource with a lot of Jianpu scores, although there's staff notation strewn in as well:
http://www.summerthundermusic.com/index_files/repertoire.htm
In reply to Hi again. Do you have any… by Thingy Person
Hi, so sorry for my silence.
Indeed, now I have been busy working on my graduation thesis and another MuseScore project, which is somewhat more tractable than jianpu project. For the jianpu project, I found it important to make a code refactoring and large amounts of base codes would be affected. This would require more effort than I thought, and it's a pity that I had to set the project aside for now...
But don't worry about whether it's too far behind to catch up. With git tool, I can easily rebase this code patch to current codes of MuseScore 3, and this can be done in just a few hours!
Thank you for your consistent support and your resources. The scores are a good reference, and I believe there's someday I can resume on it.
In reply to Hi, so sorry for my silence… by songchao
hey Song Chao! thanks for doing this. I am new to musescore... could you point me exactly where to click and copy the codes to make the latest version run on muse 3? thanks much!!! v grateful!
In reply to Hi, so sorry for my silence… by songchao
Hi,
I am also looking for a way to download your codes so that I can add your fixes to their plugin. How do I do this? Please help!
Thanks
This is something mostly resembles as a clef in numbered musical notation scores (Jianpu.)
In reply to This is something mostly… by Winston Sung
Rather than including Jianpu support in the code MuseScore installation, I wonder if this might be even better supported if it were to be somehow created as an extension?
In doing this, it could be possible to bundle with corresponding templates, palettes, and even soundfonts for traditional instruments.
It could also be possible to update and deploy independent of the deployment cycle for the core installation.
In reply to Rather than including Jianpu… by Daniel
Currently extension only are a convenience method of packing the mentioned files (templates/palettes/soundfonts/plugins) for distribution, nothing more. That means that you can just as well copy and paste those files into place yourself and the effect would be identical.
What none of those can do though (and rightfully so) is alter the MuseScore code. And that is exactly what is needed for proper Jianpu support.
Maybe something like S-Music, but linked. This way to edit jianpu:
In reply to Maybe something like S-Music… by Sunny2019
Download S-Music here.
In reply to Download here. by Sunny2019
I believe you're referring to http://www.a1soft.com/smusic/
In reply to I believe you're referring… by jeetee
Yes.
In reply to Maybe something like S-Music… by Sunny2019
The program is too old and the project seems to be frozen. Much more dynamic and functional project - http://musicwriterxu.com/ But It is also buggy.
Nevertheless, I'd like to ask - are there any automation tools for translating jianpu into musescore western scores?
Hi,
Firstly, I am a computer dummy. I can see that you have address some of the issues I am looking to fix such as:
1) the dots above or below the number, not beside it
2) underlines for eighth notes.
How do I add your code to my existing Jianpu plugin? I don't know how to navigate github.
Please help!