-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Keep original Humdrum duration #1796
Comments
I don't know if it would be useful to include
There will be complications related to multiRest: I could either give the duration of one measure, or the duration of all of the measures summed together. Probably the latter is best, and then the multiRest count could be used to calculate the duration of the full multiRest. There will be other sorts of things to deal with such as two-note tremolos and repeat markers which do not exist in the Humdrum data, but I can generate the There are also rhythms that are otherwise unrepresentable in graphic notation, such as the duration of the mRest in this example: The duration of the whole rest is 5 eighth notes, or 5/8th of a whole note, which is represented as When converting into MIDI data, |
I think it would be good to have them always present when converting. For MIDI output it sound good to prefer the |
Also, if I add
The Or to preserve some indirect rhythmic information:
or to be more precise if extended regular expressions are allowed:
This is because A complication being that There are two additional minor complications: (1) Not a problem in the definition, but a caveat: Breves (double whole notes) are traditionally represented as (2) Already mentioned: Since |
OK, I will have it always convert, and an option to suppress it can be added in the future if necessary (or it will be easy to remove by post-processing). It will depend on the purpose of including |
Another considertation for the definition of
This encodes the tie states of notes:
This would be useful for MIDI conversion as well as analysis using Without this information, it is otherwise complicated to match How to translate the durations of notes with disjunct ties should be considered further. This will depend on the purpose of In other words, the second 16th note would best be converted into |
I would leave tie information out, as this is what |
OK. That sounds good. |
Also: (1) Do you want the complication of the (2) We could also disallow symbolic values in |
Implemented with commit ae12c90 I adjusted the Test example: **kern
*M4/4
4c
8qd
2c
12cL
12d
24.e
48fJ
=
*M2/1
0c
=
3%2c
3%2d
3%2e
=
*M4/1
00c
=
0...c
4d
=
*M3/4
*^
20%3ccL 2.g
20%3dd .
20%3ee .
20%3ff .
20%3ggJ .
*v *v
==
*- MEI transcoding: <?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http:https://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http:https://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http:https://www.music-encoding.org/ns/mei" meiversion="4.0.0">
<meiHead>
<fileDesc>
<titleStmt>
<title />
</titleStmt>
<pubStmt />
</fileDesc>
<encodingDesc>
<appInfo>
<application isodate="2020-11-01T10:42:04" version="3.1.0-dev-c4f2cd7-dirty">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workList>
<work>
<title />
</work>
</workList>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000000612106679">
<score xml:id="score-0000001230284823">
<scoreDef xml:id="scoredef-0000001957649138" midi.bpm="400">
<staffGrp xml:id="staffgrp-0000000900295103">
<staffDef xml:id="staffdef-0000000866567159" n="1" lines="5">
<clef xml:id="clef-0000000714128493" shape="G" line="2" />
<meterSig xml:id="metersig-L2F1" count="4" unit="4" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L1">
<staff xml:id="staff-0000000052432288" n="1">
<layer xml:id="layer-L1F1N1" n="1">
<note xml:id="note-L3F1" dur.recip="4" dur="4" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L4F1" dur.recip="0" dur="8" oct="4" pname="d" grace="unacc" accid.ges="n" />
<note xml:id="note-L5F1" dur.recip="2" dur="2" oct="4" pname="c" accid.ges="n" />
<tuplet xml:id="tuplet-L6F1-L9F1" num="3" numbase="2" bracket.visible="false" num.format="count">
<beam xml:id="beam-L6F1-L9F1">
<note xml:id="note-L6F1" dur.recip="12" dur="8" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L7F1" dur.recip="12" dur="8" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L8F1" dots="1" dur.recip="24." dur="16" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L9F1" dur.recip="48" dur="32" oct="4" pname="f" accid.ges="n" />
</beam>
</tuplet>
</layer>
</staff>
</measure>
<scoreDef xml:id="scoredef-0000001109176401">
<meterSig xml:id="msig-0000001769715647" count="2" unit="1" />
</scoreDef>
<measure xml:id="measure-L10">
<staff xml:id="staff-L10F1N1" n="1">
<layer xml:id="layer-L10F1N1" n="1">
<note xml:id="note-L12F1" dur.recip="1%2" dur="breve" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L13">
<staff xml:id="staff-L13F1N1" n="1">
<layer xml:id="layer-L13F1N1" n="1">
<tuplet xml:id="tuplet-L14F1-L16F1" num="3" numbase="2" num.format="count">
<note xml:id="note-L14F1" dur.recip="3%2" dur="1" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L15F1" dur.recip="3%2" dur="1" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L16F1" dur.recip="3%2" dur="1" oct="4" pname="e" accid.ges="n" />
</tuplet>
</layer>
</staff>
</measure>
<scoreDef xml:id="scoredef-0000002027439410">
<meterSig xml:id="msig-0000001051136921" count="4" unit="1" />
</scoreDef>
<measure xml:id="measure-L17">
<staff xml:id="staff-L17F1N1" n="1">
<layer xml:id="layer-L17F1N1" n="1">
<note xml:id="note-L19F1" dur.recip="1%4" dur="long" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L20">
<staff xml:id="staff-L20F1N1" n="1">
<layer xml:id="layer-L20F1N1" n="1">
<note xml:id="note-L21F1" dots="3" dur.recip="1%2..." dur="breve" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L22F1" dur.recip="4" dur="4" oct="4" pname="d" accid.ges="n" />
</layer>
</staff>
</measure>
<scoreDef xml:id="scoredef-0000000211142435">
<meterSig xml:id="msig-0000001027920201" count="3" unit="4" />
</scoreDef>
<measure xml:id="measure-L23" right="end">
<staff xml:id="staff-L23F1N1" n="1">
<layer xml:id="layer-L23F1N1" n="1">
<tuplet xml:id="tuplet-L26F1-L30F1" num="5" numbase="6" bracket.visible="false" num.format="count">
<beam xml:id="beam-L26F1-L30F1">
<note xml:id="note-L26F1" dur.recip="20%3" dur="8" oct="5" pname="c" accid.ges="n" />
<note xml:id="note-L27F1" dur.recip="20%3" dur="8" oct="5" pname="d" accid.ges="n" />
<note xml:id="note-L28F1" dur.recip="20%3" dur="8" oct="5" pname="e" accid.ges="n" />
<note xml:id="note-L29F1" dur.recip="20%3" dur="8" oct="5" pname="f" accid.ges="n" />
<note xml:id="note-L30F1" dur.recip="20%3" dur="8" oct="5" pname="g" accid.ges="n" />
</beam>
</tuplet>
</layer>
<layer xml:id="layer-L26F2N2" n="2">
<note xml:id="note-L26F2" dots="1" dur.recip="2." dur="2" oct="4" pname="g" accid.ges="n" />
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> |
Looks good. But you know Humdrum better than me ;-) Is "q" more of a visual marker or does it belong to |
Here is the original The problem is that grace notes were not considered in the original system, as well as non-integer divisions of the whole note (other than augmentation dots which are included). To fix the latter problem, I implemented a fractional generalization such as Originally Since If I were redesigning So values in **recip **recip
*sym *num
0 1%2
q 0
8q 08
16q 016
4 4
32 32
1024 1024
*- *- How to represent in Tecnically the
Or to only allow purely numeric
or to be overly pedantic:
Using purely numeric |
That is a good definition for symbolic
with the exception that I noticed that
I see that
Or if the pure numeric form should be used that disallows
(I needed to add |
What is the status of this? |
For the time being (i.e. until MEI allows it) I would prefer the unchanged, original pure |
I don't want to preserve the What should that option name be? Perhaps The current MEI implementation would be the same as the newer implemtation of
When a new implementation is allowed in MEI, the main question will be how to represent grace notes: Either by adding a |
When importing from Humdrum,
**recip
values are converted to@dur
. It would be nice to keep the original values additionally in@dur.recip
(see https://music-encoding.org/guidelines/v4/attribute-classes/att.duration.gestural.html).Should be an easy task for @craigsapp.
The text was updated successfully, but these errors were encountered: