Vexflow: Add support for all quarter tone accidentals

Created on 7 Dec 2015  ·  93Comments  ·  Source: 0xfe/vexflow

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.

feature request

All 93 comments

VexFlow already supports microtonal accidentals. Are these not sufficient?

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

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).

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?

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.

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

@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.

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

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

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

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:

[email protected]

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

Cordially,
Dr. Oz.

@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

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.

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.

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).

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.

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

@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.

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.

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

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.

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

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.

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?

@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!

Please.

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.

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?

@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.

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.

Wow, will be great!

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:

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.

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

:+1:

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

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

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.

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

> [email protected] 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

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: https://github.com/infojunkie/music-l10n/issues/6

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

@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.

Sounds good, thanks!

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

On Thu, Mar 10, 2016 at 6:00 PM, Karim Ratib [email protected]
wrote:

Sounds good, thanks!


Reply to this email directly or view it on GitHub
https://github.com/0xfe/vexflow/issues/318#issuecomment-195089444.

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

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.

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 [email protected]
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
https://github.com/0xfe/vexflow/issues/318#issuecomment-195108812.

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

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.

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

I just added the 4 that I mentioned here: https://github.com/0xfe/vexflow/issues/318#issuecomment-194749196

@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 !

Fixed version and submitted pull request ^^

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

:+1:

@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.

@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.

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

In a related development, SMuFL now includes the full set of Arabic quarter tone accidentals: https://github.com/w3c/smufl/issues/44

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

Sure, will get to it shortly.

Thanks! 👍

Wow, what's about this?

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

Looks good. Thanks very much!

On Thu, Jun 16, 2016 at 3:39 AM, Karim Ratib [email protected]
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
https://github.com/0xfe/vexflow/issues/318#issuecomment-226410879, or mute
the thread
https://github.com/notifications/unsubscribe/AAOuk0R_jMAJrUbg4xNN40XLVkqQ-kmUks5qMP2wgaJpZM4GwaLb
.

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

@0xfe what does the ha parameter do?

@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.

@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.

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

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

@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.

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

Fantastic stuff! PR plz!!

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.

I also submitted a PR to support all accidentals in EasyScore: https://github.com/0xfe/vexflow/pull/451

@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.

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 [email protected]
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
https://github.com/0xfe/vexflow/issues/318#issuecomment-244547424, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLg2zdciPj7gpD0t2VkojaIGdILPNks5qmXocgaJpZM4GwaLb
.

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 [email protected]
wrote:

I also submitted a PR to support all accidentals in EasyScore: #451
https://github.com/0xfe/vexflow/pull/451


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/0xfe/vexflow/issues/318#issuecomment-244530956, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLo1xD6862AR-azEizcMaviFoO1bRks5qmRisgaJpZM4GwaLb
.

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

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)

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 [email protected]
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
https://github.com/0xfe/vexflow/issues/318#issuecomment-244660638, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFKLkJafTRikFivBEwRXe0BHTnDMLcYks5qm6ZQgaJpZM4GwaLb
.

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 :-)

@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.

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.

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

:+1: for arabic and turkish and iranian quarter tone accidentals!

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?

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

@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

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

Hi @infojunkie, I need microtonal accidentals and key signatures for Turkish Folks music. Here is the link to the SMuFL glyphs page. http://www.smufl.org/version/latest/range/turkishFolkMusicAccidentals . Actually, I only need just two of them. (The others are not used, at least for the song notation of instrument Baglama). What I need #3 (3 comma sharp) and b2 (2 comma flat). But until SMuFL support provided, I need to find a way to render these Turkish folks music accidentals using VexFlow. Note that the existing provided Turkish Microtonal Accidentals are used by Turkish -Classical- Music not by Turkish -Folks- Music. May be there are pitch overlapping but symbols (glyphs) and names are referred differently. Would you provide some help please?

I need also because i play Ney, so, i'm playing turkish folk music.

@eeskikoy I'm currently trying to use the structure of the Gonville JS font format to add the Arabic 3/4-flat glyph. So far, I understand that a glyph is made of basic 2D operations, namely moveTo, lineTo, bezierCurveTo and quadraticCurveTo. Now I need to assemble these to make a glyph. Rereading this thread, I found that @Huji's fiddle is still online: https://jsfiddle.net/629myn9f/38/ - sounds like a great environment to make new glyphs.

I also updated the Wiki with images of each supported accidental. Looks much better :smile:

Thanks @infojunkie, SMuFL (bravura) has already SVG, OTF glyph files which contains the accidentals that I need. I just need to convert the SVG path of them to the glyph meta data definitions of vexflow_font.js.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

CrystalShardz picture CrystalShardz  ·  4Comments

rowild picture rowild  ·  5Comments

sug1no picture sug1no  ·  6Comments

jeroenlammerts picture jeroenlammerts  ·  3Comments

sug1no picture sug1no  ·  7Comments