Add support for all quarter tone accidentals #318

Closed
Huji opened this Issue Dec 7, 2015 · 88 comments

Projects

None yet

8 participants

@Huji
Contributor
Huji commented Dec 7, 2015

Please consider adding support for quarter tone accidentals.

These include the Western notation for half-sharp, half-flat, sharp-and-a-half and flat-and-a-half, all of which are explained on https://en.wikipedia.org/wiki/Accidental_%28music%29#Microtonal_notation (and a picture us also available).

These also include the Iranian notation for half-sharp and half-flat, which are depicted in Persian Wikipedia's pages on sori and koron, respectively.

Ideally, a different identifier should be used for the western and eastern half-notes, so they can coexist in the same sheet if need be. An example of when this is needed is when sheet music is being written for many instruments (as is used by conductors) some of which are oriental instruments and some western instruments but all can play quarter tones.

-- UPDATE --

As shown below, vexflow already supports the Western quarter tone accidentals. There is need for support of Iranian accidentals though.

@0xfe
Owner
0xfe commented Dec 7, 2015

VexFlow already supports microtonal accidentals. Are these not sufficient?

screen shot 2015-12-07 at 2 19 40 pm

@Huji
Contributor
Huji commented Dec 7, 2015

Oh I didn't find hat in the documentation. It would be great if you would direct me to where these are explained (this can benefit those who find this thread in the future too).

I am going to modify the title of this issue and amend the original request; the only thing that is left to done is to add support for the oriental signs (links to which were provided above).

@Huji Huji changed the title from Add support for quarter tone accidentals to Add support for oriental quarter tone accidentals Dec 7, 2015
@0xfe
Owner
0xfe commented Dec 7, 2015

Documentation is way behind. Best place to learn about how to use the API is the tests/ directory, which is always current.

It looks like the Oriental accidentals links you provided are in Arabic. Do you have any english text that I can read?

@Huji
Contributor
Huji commented Dec 7, 2015

That page is not in Arabic, it is in Persian. But both languages use similar scripts!

You can ready more about it on this web page: https://sites.google.com/site/240edo/about24-edo

The person who invented this notation, Ali-Naghi Vaziri, was an influential musocologist from Iran. Iranian music system very frequently uses quarter tones (in its Dastagh's). My intention, to be honest, is to use VoxFlow to create notations for each of these Dastgah's, based on Vaziri's book and other books (such as this one published by Hormoz Farhat in English) and upload to English Wikipedia to expand those relevant articles.

@SalahAdDin

I have the same question for arabic and turkish maqam and i want help with it, use the same symbols that Mus2.

@Huji
Contributor
Huji commented Dec 8, 2015

@SalahAdDin you are absolutely correct. The maqam's are shared between Arabic, Turkish, and Persian music, and have had influences on other Mediterranean music too. The notation requested above can be essential for notation of these music genres.

@SalahAdDin

Yes, i have a two papers about it, we need six accidentals more i think, if you want i can put here.

@Huji
Contributor
Huji commented Dec 11, 2015

@SalahAdDin please provide a link to the papers and/or a screenshot that shows and explains the six accidentals.

@SalahAdDin

I hope that this aren't bad, you can see a example here: http://www.mus2.com.tr/explore/
And here are the papers:
223_ISMIR_2012.pdf
Abjad_JIMS_071203.pdf

@ozanyarman

Hello! This is Assoc. Prof. Dr. Ozan Yarman from Istanbul specializing in maqam music theory (tunings/tone-systems) and music technology applications (DAW pitch bends, scale tuning files and the like). I had communicated along the same lines with Mohit Muhanna in a personal e-mail correspondance dated 27 March 2013. The official tone-systems for the Arabic, Persian and Turkish main branches of Maqam music, while purporting to represent the needed microtonal pitches on paper and in practice, will undoubtedly fail in several critical/problematic scales or modes when played in exact by computer software.

For a synposis of the intonation situation, please refer to the intro section of our publication:

http://www.ozanyarman.com/files/Yarman36.pdf

where we say: "... it is impossible to perform authentic music in such modes based on the standardized 24 pitches to the octave systems of the diametrically opposed cultures of the geography, without detuning the strings, adding or shifting frets as required, or employing an ad hoc (e.g., unmethodical) mandal configuration."

The article above highlights one of the tuning solutions I proposed, with the pertinent accidentals font downloadable here:

http://www.ozanyarman.com/files/Yarman36.ttf

Calculations and videos are accessible below (in Turkish, with Google Translate to English option):

http://www.ozanyarman.com/yarman36.html

Other solutions by me include a 79-tone qanun tuning I expounded in my doctorate dissertation and explained in the links below:

http://www.ozanyarman.com/files/doctorate_thesis.pdf
http://www.ozanyarman.com/79toneqanun.html
https://www.youtube.com/watch?v=y4XuVBuGa08

My latest alternative tuning suggestion is a light-weight replacement of the official Arel-Ezgi-Uzdilek (AEU) 24-tone Pythagorean tone-system for Turkish Art music, while relying on the same array of accustomed accidentals. Yarman-24a, which was the first variant as an AEU substitute was compared to histogram measurements of live recordings and came out to be the best match:

http://www.ozanyarman.com/files/theoryVSpractice.pdf

An improved Yarman-24c variant is demonstrated in these youtube videos:

https://www.youtube.com/watch?v=fP1elrsk5QM (on bowed tanbur)
https://www.youtube.com/watch?v=qZXAv8GyHQg (on acoustic guitar)
https://www.youtube.com/watch?v=-QcYgslHq9k (on TouchKeys)
https://www.youtube.com/playlist?list=PLAs4xTDckBEw4gVFwypqaZwKW6Ih9KtJ6 (on my TouchKeys)

Notice that, Andrew McPherson, the designer and inventor of TouchKeys, has already incorporated Yarman-24c among the experimental tuning mapping options in his control software.

Should there be any need to expand the microtonal capabilities of VexFlow with results that would more-or-less satisfy Maqam music enthusiasts intonation-wise, do please get in contact with me personally or in group e-mail correspondence:

ozanyarman@ozanyarman.com

May VexFlow,
around the world spread and grow. :)

Cordially,
Dr. Oz.

@Huji
Contributor
Huji commented Dec 12, 2015

@SalahAdDin Thanks for the articles; really good reads. However, in both those articles, the Western notation for quarter-tones is used. VexFlow already supports those accidentals (which include half-sharp, sharpt-and-a-half, half-flat, and flat-and-a-half). See the first comment from @0xfe above.

@ozanyarman Thanks for your comment as well. Very informative. But what you focus on here is about issues relating to microtonal music "when played in exact by computer software". VexFlow is not a tool for playing music in computers, it is a tool for annotation of music. Imagine if you want to write a online book (or an article like those posted by @SalahAdDin); you need a way to write the musical annotation for the Maqams. VexFlow allows you to do that (and just that) in HTML5.

@0xfe it is becoming apparant to me that the Turkish music may be using the western quarter-tone accidentals for notation. Therefore I am going to, yet again, change the request here and specify the need for Iranian accidentals.

@Huji Huji changed the title from Add support for oriental quarter tone accidentals to Add support for Persian quarter tone accidentals Dec 12, 2015
@Huji Huji changed the title from Add support for Persian quarter tone accidentals to Add support for Iranian quarter tone accidentals Dec 12, 2015
@ozanyarman

@Huji

You're welcome. Please note that Arel-Ezgi-Uzdilek tone-system utilizes the array of accidentals given in page 39, Fig. 3.6 of my doctoral dissertation:

http://www.ozanyarman.com/files/doctorate_thesis.pdf

Compare with the older Rauf Yekta notation in the table on the same page. Pages 33 and 36 delineate AEU and Yekta-24 notations in full respectively.

Page 80, Fig. 4.13 demonstrates the 20th Century contender tone-system by Ekrem Karadeniz, which encapsulates 41 pitches per octave out of 106 equal divisions of the octave.

There are a significant number of scores written in each of the tone-systems mentioned above, while AEU is the official notation system in circulation today.

Dr. Oz.

@0xfe
Owner
0xfe commented Dec 14, 2015

Hi Folks,

I'm open to adding new accidentals if that will help.

I don't know a lot about microtonal music, so what I will need is some agreement on what is missing and what should be added. In particular:

  • What specific accidentals should be added?
  • What should they be called (in English)?
  • What VexFlow accidental symbol should they use?
  • Vector data for each of the accidentals.

If someone wants to take this on and send me a PR, that would be great too. Thanks.

@Huji
Contributor
Huji commented Dec 14, 2015

The scope of this issue has been narrowed down to Iranian quarter tone accidentals. In that context, the answers are:

  • Two accidentals are needed: sori and koron.
  • The can be called exactly that: sori and koron.
  • To the best of my knowledge, VexFlow's font doesn't have glyphs for those accidentals.
  • If you would show me what tool you use to edit the vector fonts to create new glyphs, I will happily create the accidentals for you.

And I will happily fork and create a PR (once I know how to deal with the fonts).

@ozanyarman

The most commonly used AEU accidentals in Classical Turkish music notation are:

+1 comma = irha / komma diyezi (comma sharp)
+4 comma = bakiyye diyezi (limma sharp)
+5 comma = küçük mücenneb diyezi (apotome sharp)

-1 comma = irha / komma bemolü (comma flat)
-4 comma = bakiyye bemolü (limma flat)
-5 comma = küçük mücenneb bemolü (apotome flat)

(where "irha" actually signifies more accurately quarter-tone alterations as seen in various Arabic maqams.)

Please refer to page 39, Fig. 3.6 of my doctoral dissertation:
http://www.ozanyarman.com/files/doctorate_thesis.pdf

Dr. Oz.

@SalahAdDin

Doktor, Selam
I want to do a full completly app for notation and play oriental music open source. I hope do this in Turkey in a master, but i don't know i which university.

At future i hope begin with this and all help in this library will be more useful.

Thanks :D

@0xfe
Owner
0xfe commented Dec 15, 2015

@Huji Unfortunately I lost the tool that I used about five years ago to create the vectors from the fonts. But I could write one up again. If you can create a TTF or OTF file with the new glyphs, I can convert them to the vexflow JS font format.

@0xfe
Owner
0xfe commented Dec 15, 2015

Also, here are some instructions if you want to create new entries in the font file yourself:

Each character in the font is indexed by it's code (e.g., v0). The structure consists of the following fields:

"x_min": left-most x value 
"x_max": right-most x value
"o": a long string consisting of repeated commands followed by coordinates.

You can get the width of the character by x_max - x_min.

The repeated commands in "o" are:

m: MoveTo(x,y)
l: LineTo(x,y)
q: QuadraticCurveTo(cpx, cpy, x, y)
b: BeizerCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)

The cp* parameters are coordinates to control points for the curves. All coordinates are scaled (multiplied) by the factor point_size * 72 / (Vex.Flow.Font.resolution * 100).

You can look up the implementation in Vex.Flow.Glyph.renderOutline() for how the parameters are used on a HTM5 Canvas.

@SalahAdDin

Doktor, Selam
I want to do a full completly app for notation and play oriental music open source. I hope do this in Turkey in a master, but i don't know i which university.

At future i hope begin with this and all help in this library will be more useful.

Thanks :D

@ozanyarman

Dear SalahAdDin,

Why don't you take a look at the marvelous Mus2:

http://www.mus2.com.tr/en/

You may like to get in touch with Utku Uzmen and M. Kemal Karaosmanoglu to give Mus2 a shoulder boost. It's been neglected for quite some while, and I would like to have the programmers implement some major improvements that they already have been informed about.

Mus2 is very economical and can do a lot of things microtonally. If you can familiarize yourself with the program and wish to proceed upon it, write to me privately.

Cordially,
Dr. Oz.

@SalahAdDin

Abi, which programming language use mus2? i'll want to do like it but open source.

@ozanyarman

SalahAdDin, Halil Kirazlı already made quite a headway with his Suzidil project before he sort of abandoned it. Maybe you should proceed on that trail:

http://sourceforge.net/projects/suzidil/

Dr. Oz.

P.S. I think Mus2 is based on Qt framework.

@SalahAdDin

Thanks abi, i want make something like this, and this library it's very useful. Now i'm learning play Ney.

Which programming language it's the base for Mus2?

@Huji
Contributor
Huji commented Dec 21, 2015

@0xfe thank you for the response. I figured you are using Gonville Glyphs. I will create the vector versions for you and will even make an effort to add them back to Gonville itself!

@SalahAdDin

Please.

@alejandroiglesias

Hi, I would like to chime in, help, and see this feature grow. I'm a student of all the traditions mentioned so far (Arabic, Turkish and Persian). All the traditions use different symbols as accidental, even though some symbols are shared between Arabic and Turkish traditions but with a different meaning:

Arabic accidentals

Arabic accidentals

Turkish accidentals

Turkish accidentals

(Source: http://www.oud.eclipse.co.uk/notation.html)

You can see the symbols shared but for different pitches (an Arabic "one quarter" is in between Turkish 1 comma and 4 comma accidentals). In the case of just providing the symbol for the user to write it, it doesn't matter, but there has to be awareness of that and the fact that the Turkish system has more symbols while adding and naming them into the library.

As somebody mentioned, some symbols are rarely found, like the Arabic "three quarter" and the Turkish 8 comma, but there may be cases where somebody needs them.

Persian accidentals

Persian accidentals

(Source: http://96edo.com)

A thing to notice in the case of Persian music is the compound symbols for "flat koron" and "sori sharp", which I've not yet found in a sheet (though I have lesser experience in Persian Classical Music), but those could be written with a combination of flat+koron and sharp+sori, respectively.

Finally, even though you can find many resources pointing the quarter tones of Arabic and Persian music tempered exactly the middle (50 cents up/down) of two semi-tones (like in the Persian accidentals chart I referenced above), that's not actually what happens on practice. Those pitches are not tempered to 24 TET in practice as far as I'm concerned. In some cases you can realise it by just listening some recordings. Something similar happens with the theorisation of Turkish music trying to map the pitches to 53 TET intervals. Again, that is a theorization for a very rich and complex tradition, and there's no single answer about a single pitch, depending on many factors (being geographical location one of them).

As you can read on the first paragraph of @ozanyarman's thesis' summary:

The long-standing conflict between the “Arel-Ezgi-Uzdilek” System
and Turkish Maqam Music practice has been established through computer
analyses of audio recordings by master musicians such as Neyzen Niyazi
Sayın and Tanburi Necdet Yaşar. Results incontrovertibly manifest the
delibarate employment of multifarious middle second intervals peculiar to
the genre, yet evaded by the current model. These middle seconds are
roughly expressible as 2/3, 3/4, and 4/5 tones, and often referred to by the
protagonists of the Music Reformation in Türkiye during the early 20th
century as “quarter-tones”.

Again, this is my understanding being a student on those traditions and I hope something with more experience can correct me if I'm wrong.

So, what is the status of this feature? Is there any progress made? Any help needed?
I'm currently starting to draft an app to help people tune microtones and would need to render a staff with all the accidentals in a given tradition.

Thanks and have a good time.

@mscuthbert
Contributor

Are all of these accidentals in the SMuFL agenda / Bravura Font? (www.smufl.org) If they are then perhaps this could be listed as a subset of the "support SMuFL" ticket?

@alejandroiglesias

@mscuthbert i haven't looked at Bravura, but i could find a PDF presentation for November 2.0 which is a SMuFL-compliant font, with all its symbols, and has all the accidentals needed for the three aforementioned traditions. It is my guess that Bravura will also have those.

@infojunkie
Contributor

Thanks @alejandroiglesias for listings the accidentals (for these music cultures). For reference, one can view the Gonville glyphs used by Vexflow by browsing the page src/glyphs.html. This page and the source file src/tables.js show the currently available accidentals:

  • one quarter sharp / one comma sharp: glyph code v4f/v78, Vex.Flow.accidentalCodes.accidentals "+"
  • one quarter flat / 4 commas flat: glyph code vb7, NO VEX ENTRY
  • 3 quarters sharp: glyph code v51/v13, Vex.Flow.accidentalCodes.accidentals "++"
  • 3 quarters flat: NO GLYPH, NO VEX ENTRY
  • 1 comma flat: glyph code v57/vab, Vex.Flow.accidentalCodes.accidentals "d"
  • 5 commas sharp: glyph code v8d, NO VEX ENTRY
  • 8 commas sharp: glyph code v7a, NO VEX ENTRY
  • 8 commas flat: glyph code v39, NO VEX ENTRY
  • koron: NO GLYPH, NO VEX ENTRY
  • sori: NO GLYPH, NO VEX ENTRY

Adding missing Vex.Flow.accidentalCodes entries for which glyphs exist is trivial, and just requires inventing new mnemonics.

Adding missing glyphs is much more challenging and would require fixing Gonville itself as per @Huji's comment above.

Note: I had to hack the file src/glyphs which did not show the entirety of the glyphs. I had to change the canvas_height calculation to:

var canvas_height = ((counter + 1) / (800 / (60 * 2))) * 60;

I will open another ticket for that if there isn't one already.

@SalahAdDin

Wow, will be great!

@infojunkie
Contributor

If I'm not mistaken, even Steinberg's Standard Music Font Layout (SMuFL) does NOT support all Arabic accidentals listed above. I found the following:

@infojunkie infojunkie added a commit to infojunkie/vexflow that referenced this issue Mar 10, 2016
@infojunkie infojunkie Support Arabic microtones #318 a15b725
@infojunkie
Contributor

I forked vexflow and added support for accidentals that are present in the Gonville font. These are:

  • one quarter flat / 4 commas flat: glyph code vb7, Vex.Flow.accidentalCodes.accidentals "bs"
  • 5 commas sharp: glyph code v8d, Vex.Flow.accidentalCodes.accidentals "+-"
  • 8 commas sharp: glyph code v7a, Vex.Flow.accidentalCodes.accidentals "++-"
  • 8 commas flat: glyph code v39, Vex.Flow.accidentalCodes.accidentals "bss"

Updated the tests, you can check the page tests/flow.html under Accidental > Microtonal.

For some reason, the file src/fonts/vexflow_font.js did not contain all the glyphs from src/fonts/gonville_all.js, so I updated it.

@infojunkie
Contributor

@0xfe should I submit a pull request with this?

@SalahAdDin

👍

@infojunkie
Contributor

@SalahAdDin, since you were interested in #141, would you be able to test my fork and comment here?

@SalahAdDin

Ok, please, say me that i have to do for text your fork.

@infojunkie
Contributor

Depends what you wanted to do with VexFlow in the first place... but at least, git clone my repo, and then follow build instructions to build and run tests. Navigate to the page tests/flow.html and find Accidental > Microtonal to see the new accidentals.

@SalahAdDin

Ok, i'll go do it.
Ok, i run npm test and i have this errors in bash:

> vexflow@1.2.41 test /run/media/salahaddin/Datos/Proyectos/Trabajo/vexflow
> grunt test

Running "concat:vexflow" (concat) task
Source map build/vexflow-debug.js.map created.
File build/vexflow-debug.js created.

Running "concat:tests" (concat) task
Source map build/vexflow-tests.js.map created.
File build/vexflow-tests.js created.

Running "qunit:files" (qunit) task
Testing tests/flow.html ......................................................................................................................................................................................Error: Problem parsing d=""
Error: Problem parsing d=""
....Error: Problem parsing d=""
Error: Problem parsing d=""
...............................................................................................................................................................................................................................................................................................................................................................................OK
>> 2344 assertions passed (6404ms)

And here are the microtonal accidentals:
seleccion_035

@infojunkie
Contributor

Great, thanks! The errors Error: Problem parsing d="" already appeared in the main repo so no need to worry about them. I've fixed the bad placement of the note width legend in a new commit.

Looks like VexFlow is ready to accept all accidentals supported by Gonville! I'll be following up with the Gonville creator, you can follow the issue here: infojunkie/music-l10n#6

Also, VexTab needs to be modified to parse the new accidentals. Will work on this next.

@0xfe
Owner
0xfe commented Mar 10, 2016

@infojunkie,

Thanks for working on this.

As mentioned earlier I don't know enough about these types of accidentals to make a good decision. If we can get consensus on this thread that what you've done so far is the right approach and direction, I'm happy to review the PR for merging.

Mohit.

@infojunkie
Contributor

Sounds good, thanks!

@Huji
Contributor
Huji commented Mar 10, 2016

Please allow me to review this as well, working towards consensus.

On Thu, Mar 10, 2016 at 6:00 PM, Karim Ratib notifications@github.com
wrote:

Sounds good, thanks!


Reply to this email directly or view it on GitHub
#318 (comment).

@SalahAdDin

The idea is put all Asian accidentals and other, so, will be necessary use other svg fonts.

@infojunkie
Contributor

I don't think there's any font today that captures all possible music symbols, although SMuFL seems to be the best contender. Adding SMuFL support in VexFlow is a much bigger undertaking than the simple changes I've made here.

@0xfe
Owner
0xfe commented Mar 11, 2016

It might be worth exploring how to convert the SMuFL fonts into the VexFlow
font format -- the format is pretty simple, and there are multiple TTF
converters around. I think it would take a day of hacking to figure all
this out, and just pull in the specific glyphs we need.

(It would also be long-term valuable to migrate from Gonville to SMuFL.)

On Thu, Mar 10, 2016 at 7:03 PM, Karim Ratib notifications@github.com
wrote:

I don't think there's any font today that captures all possible music
symbols, although SMuFL seems to be the best contender. Adding SMuFL
support in VexFlow is a much bigger undertaking than the simple changes
I've made here.


Reply to this email directly or view it on GitHub
#318 (comment).

Mohit Muthanna [mohit (at) muthanna (uhuh) com]

@infojunkie
Contributor

SMuFL is definitely a great choice. But even when VexFlow uses it instead of Gonville, the accidentals I added will be needed. It's not an either/or situation.

@SalahAdDin

But, how many asian accidentals and other symbols there are? How many did you put in your fork?

@infojunkie
Contributor

I just added the 4 that I mentioned here: #318 (comment)

@Huji
Contributor
Huji commented Mar 12, 2016

@infojunkie I checked your repo. It looks good except you changed the release date without updating the version number. Please update version number too.

@0xfe once @infojunkie creates a pull request from his repo, please go ahead and approve it. It will partially solve this issue, so please keep the issue open. I will hopefully work with him to add the missing accidentals to Gonville, and then we can put them back in VexFlow and completely close this issue.

Great work @infojunkie !

@infojunkie
Contributor

Fixed version and submitted pull request ^^

@infojunkie
Contributor

The PR was merged! To summarize, VexFlow now supports the following new accidentals:

  • one quarter flat / 4 commas flat: glyph code vb7, Vex.Flow.accidentalCodes.accidentals "bs"
  • 5 commas sharp: glyph code v8d, Vex.Flow.accidentalCodes.accidentals "+-"
  • 8 commas sharp: glyph code v7a, Vex.Flow.accidentalCodes.accidentals "++-"
  • 8 commas flat: glyph code v39, Vex.Flow.accidentalCodes.accidentals "bss"

This issue is still open because the following accidentals are missing (from the Gonville font):

  • Arabic 3/4 flat
  • Persian koron
  • Persian sori
@SalahAdDin

👍

@Huji Huji changed the title from Add support for Iranian quarter tone accidentals to Add support for all quarter tone accidentals Mar 26, 2016
@Huji
Contributor
Huji commented Mar 26, 2016

@0xfe can you update My VexFlow to the latest version so I can test the new additions there? I tried http://my.vexflow.com/articles/3917 but did not get the desired output.

@infojunkie
Contributor

@Huji I think VexTab needs additional fixing to see the new accidentals - as far as I understand, it uses a different syntax that needs to be mapped to VexFlow.

@Huji
Contributor
Huji commented Apr 13, 2016

FYI, the fonts listed here contain sori and koron (look for the Downloads section) and can be used to extend Gonville.

@infojunkie
Contributor

In a related development, SMuFL now includes the full set of Arabic quarter tone accidentals: w3c/smufl#44

@0xfe
Owner
0xfe commented Jun 13, 2016

@infojunkie Would you mind creating a brief wiki page here about VexFlow's microtonal support?

@infojunkie
Contributor

Sure, will get to it shortly.

@0xfe
Owner
0xfe commented Jun 13, 2016

Thanks! 👍

@SalahAdDin

Wow, what's about this?

@infojunkie
Contributor

https://github.com/0xfe/vexflow/wiki/Microtonal-Support, let me know how I can improve it.

@0xfe
Owner
0xfe commented Jun 16, 2016

Looks good. Thanks very much!

On Thu, Jun 16, 2016 at 3:39 AM, Karim Ratib notifications@github.com
wrote:

https://github.com/0xfe/vexflow/wiki/Microtonal-Support, let me know how
I can improve it.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#318 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AAOuk0R_jMAJrUbg4xNN40XLVkqQ-kmUks5qMP2wgaJpZM4GwaLb
.

Mohit Muthanna [mohit (at) muthanna (uhuh) com]

@Huji
Contributor
Huji commented Aug 29, 2016

@0xfe what does the ha parameter do?

@Huji
Contributor
Huji commented Sep 1, 2016 edited

@infojunkie I just checked SMuFL and even that doesn't have the Iranian microtonal accidentals. See all SMuFL glyphs here (you need to have the Bravura Text font installed, and go to the Result tab). So switching to SMuFL will not allow us to close this issue, as of yet.

@infojunkie
Contributor

@Huji : If you mean koron and sori, then SMuFL does specify support for them: https://w3c.github.io/smufl/gitbook/tables/persian-accidentals.html - and since this link renders the actual character with the Bravura font, I have to assume that it is present.

@Huji
Contributor
Huji commented Sep 2, 2016

Oh, I was looking at the wrong range of Unicode characters (after U10000).

@Huji
Contributor
Huji commented Sep 2, 2016

@0xfe just to make sure my question doesn't go unnoticed: what does the ha parameter in the font definitions do?

@Huji
Contributor
Huji commented Sep 2, 2016 edited

@0xfe @infojunkie also, I have created the sori glyph:

'vd0':{'x_min':-10.890625,'x_max':299.4375,'ha':294,'o':'m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90'}

You can add it to the glyphs.html by hand to test it,it'll look like this:

capture

Would it be okay if I create a pull request and have it added to vexflow_font.js? If so, I will also create the koron glyph and create a pull request for that too.

@Huji
Contributor
Huji commented Sep 2, 2016

And here is the glyph for koron:

'vd1':{'x_min':-20,'x_max':320,'ha':257,'o':'m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200'}

capture

@infojunkie
Contributor

Fantastic stuff! PR plz!!

@Huji
Contributor
Huji commented Sep 2, 2016

I will wait for #446 to be merged, then I will submit a PR. The advantage is that the addition of new glyphs using the new tidier format is easier to follow in diffs.

@infojunkie
Contributor

I also submitted a PR to support all accidentals in EasyScore: #451

@Silverwolf90
Collaborator

@Huji I'm not sure ha serves any purpose anymore -- I always figured it must be some acronym related to the height of the glyph, but it's very cryptic and didn't seem to produce expected results when used for glyph dimensions. But now we are analyzing the path itself to extract more accurate glyph dimensions. I can't find an instance of this property being used.

@Huji
Contributor
Huji commented Sep 4, 2016

I figured it has to do with height too (and guessed that "ha" means "height
adjustment") but when I wrote my own code
https://jsfiddle.net/629myn9f/38/ to edit glyphs by trial and error I
realized that the "ha" parameter is effectively never used and I can write
code that ignores it completely yet generates similar output as VexFlow.

Thanks for the email though!

On Sat, Sep 3, 2016 at 3:46 PM, Cyril Silverman notifications@github.com
wrote:

@Huji https://github.com/Huji I'm not sure ha serves any purpose
anymore -- I always figured it must be some acronym related to the height
of the glyph, but it's very cryptic and didn't seem to produce expected
results when used for glyph dimensions. But now we are analyzing the path
itself to extract more accurate glyph dimensions. I can't find an instance
of this property being used.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#318 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLg2zdciPj7gpD0t2VkojaIGdILPNks5qmXocgaJpZM4GwaLb
.

@Huji
Contributor
Huji commented Sep 4, 2016

That is great Karim!

I am thinking for sori and koron we should also define new acronyms for
VexTab. I suggest "s" and "k". So for instance C sori becomes "Cs" and D
koron becomes "Dk". That way they would not be confused with other quater
note accidentals.

What are your thoughts?

On Sat, Sep 3, 2016 at 8:50 AM, Karim Ratib notifications@github.com
wrote:

I also submitted a PR to support all accidentals in EasyScore: #451
#451


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#318 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLo1xD6862AR-azEizcMaviFoO1bRks5qmRisgaJpZM4GwaLb
.

@infojunkie
Contributor

"s" and "k" sound good to me. I can add these to the relevant places once your PR for the glyphs is merged.

@infojunkie
Contributor

Actually, @Huji, it would fantastic if you could also add the 3/4-flat accidental to the new glyphs: https://w3c.github.io/smufl/gitbook/tables/arabic-accidentals.html (U+ED31)

@Huji
Contributor
Huji commented Sep 5, 2016

I will gradually work on all quarter note accidentals; I started with sori
and koron only because they are the easiest to create.

stay tuned!

On Mon, Sep 5, 2016 at 7:19 AM, Karim Ratib notifications@github.com
wrote:

Actually, @Huji https://github.com/Huji, it would fantastic if you
could also add the 3/4-flat accidental to the new glyphs:
https://w3c.github.io/smufl/gitbook/tables/arabic-accidentals.html
(U+ED31)


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#318 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLkJafTRikFivBEwRXe0BHTnDMLcYks5qm6ZQgaJpZM4GwaLb
.

@infojunkie
Contributor

I also edited the Microtonal Support wiki page https://github.com/0xfe/vexflow/wiki/Microtonal-Support - if anyone has a good suggestion on how to embed the accidental glyphs without creating a separate image for each one, please let me know :-)

@Huji
Contributor
Huji commented Sep 5, 2016

@infojunkie the problem there is that d is mentioned both for "1 comma flat" and for "1 quarter-tone flat" in two separate rows; if the glyph is the same then we should collapse them together somehow.

@infojunkie
Contributor

Thanks - yes they are on two different rows because they mean two different things in Arabic vs Turkish systems... Feel free to change the layout if you have a better idea.

@Huji
Contributor
Huji commented Sep 6, 2016

I think the minimum to do was to sort them, which I just did.

@SalahAdDin

👍 for arabic and turkish and iranian quarter tone accidentals!

@Huji
Contributor
Huji commented Sep 12, 2016

Alright, I created #461 but I need your help with it. I beautified the gonville_all font so you can better see the differences. In a second commit, I added the vd0 and vd1 glyphs. But when I build the project, they don't get added to build/vexflow-debug.js and I am not sure why. I am not familiar with grunt so I don't know how it decides which glyphs to take from gonville_all.js and which ones not to take. Any advice?

@infojunkie
Contributor

Thanks @Huji will review and attempt to fix as soon as I get some time.

@infojunkie
Contributor

@Huji: it would be great to update the microtonal wiki to reflect the sori and koron additions https://github.com/0xfe/vexflow/wiki/Microtonal-Support

@Huji
Contributor
Huji commented Jan 2, 2017

Just updated it. Since Wiki is updated and #461 has been merged, I am going to close this issue.

@Huji Huji closed this Jan 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment