neanes / neanes

Neanes is a free and open source scorewriter for notating Byzantine chant in Byzantine notation.
https://neanes.github.io/neanes/
GNU General Public License v3.0
35 stars 9 forks source link

BZQ integration #68

Open Pappous43 opened 1 year ago

Pappous43 commented 1 year ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like A clear and concise description of what you want to happen.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Add any other context or screenshots about the feature request here.

Pappous43 commented 1 year ago

Good day! As you may know, since 1999, I have been developing the free BZQ parallagi program https://bzquality.wordpress.com

BZQ can also import score files from two free scorewriters, Pandouris and MK.

I am now in the process of importing Neanes-written .byzX files to my own (free) BZQ (Quality) Parallagi program https://bzquality.wordpress.com

This will provide extra capabilities to .byzX files files, like, -sound using human voice(s) pronouncing e.g. "Niiii Paaaaaaaaa" which is useful to learn parallagi -analysing quality characters e.e. petasti etc, -finding orthographical errors -finding the difference (deviation) from the average Byzantine style -appraising the ison (isokratima) used according to Helmholtz's study -other statistics etc.

In order to test my importing software I would like to ask you to kindly send me at your discretion some .byzX (not .byz) files if you have any.

Thank you in advance,

P.Katsoulis, Greece email: o9lgve@otenet.gr

Pappous43 commented 1 year ago

Good day! As you may know, since 1999, I have been developing the free BZQ parallagi program https://bzquality.wordpress.com

BZQ can also import score files from two free scorewriters, Pandouris and MK.

I am now in the process of importing Neanes-written .byzX files to my own (free) BZQ (Quality) Parallagi program https://bzquality.wordpress.com

This will provide extra capabilities to .byzX files files, like, -sound using human voice(s) pronouncing e.g. "Niiii Paaaaaaaaa" which is useful to learn parallagi -analysing quality characters e.e. petasti etc, -finding orthographical errors -finding the difference (deviation) from the average Byzantine style -appraising the ison (isokratima) used according to Helmholtz's study -other statistics etc.

In order to test my importing software I would like to ask you to kindly send me at your discretion some .byzX (not .byz) files if you have any.

Thank you in advance,

P.Katsoulis, Greece email: o9lgve@otenet.gr

Pappous43 commented 1 year ago

My apologies for the duplication. I think I have now learnt how to use this.

danielgarthur commented 1 year ago

Thank you for reaching out to me. I am aware of your program and the idea of a collaboration had crossed my mind as well. Attached to this comment are several BYZX files.

The data model is here. In particular Neumes.ts and Elements.ts will be useful. Neumes.ts contains all the possible string values that appear in the file. I apologize for some of the confusing strings used. In English, there is a lack of consistent terminology for Byzantine neumes and symbols and I made some stuff up like "Squiggle".

Also, the BYZ files are really just ZIP files. So supporting BYZ files should be as simple as unzipping the BYZ file in memory and grabbing the BYZX file inside.

Let me know what questions you have.

byzx_for_bzq.zip

Pappous43 commented 1 year ago

Thank you so much for your prompt reply.

I forgot to congratulate you on the neatness and ease of your program.

Yes, I realized that .byz is just as good. The end user should create a .byzx file for import in BZQ. By the way I was terrified a few minutes ago when I saw a different(!) kind of .byzx

in "Lord_I_Have_Cried_Tone1.byzx" which I found in your examples. I wouldn't open. I saw it was full with HTML. What is this? Are there TWO kinds of ".byzx" files or was it an old, discarded type of file? I am asking because, as I see it, I can translate simple XML kind file just like the example "1 - O All-Lauded Martyrs.byzx" from your zip file below. How can I make sure that end users will NOT try to import .byzx+HTML?

danielgarthur commented 1 year ago

There is only one kind of BYZX file. The format has only ever contained JSON. All the files in the ZIP archive that I attached should be BYZX files, which are plain text JSON files. Are you saying you saw HTML in one of the files in the archive? If so, could you paste a small sample of the file in a comment here?

danielgarthur commented 1 year ago

Did you perhaps, attempt to download the file here https://github.com/danielgarthur/neanes/blob/master/examples/Lord_I_Have_Cried_Tone1.byzx? Perhaps the HTML is the source code for that Github page. To download the file out of the example folder, you must click the "Raw" button

image

and then save the resulting file. I'm not sure why Github does not have a more obvious way to download files. Another option would be to pull down the code with git to your local computer.

Pappous43 commented 1 year ago

Indeed that is the first one I downloaded: It has a .byzx extension but it is actually .htm !!!!!!

I had a second case too: https://github.com/ilizol/neanes-examples/tree/main/kontakion_prophet_elias

There too, file kontakion_prophet_elias.byzx is a TRUE HTML file. The .byzx will be misleading to the end user if he gets the file via Github. However, if the end-user himself saves the .byzx file then there is no problem.

An appropriate warning should solve the problem.

On the other hand Github should be advised to use ACTUAL extensions.

I think.

Pappous43 commented 1 year ago

This is an example of BZQ coding

in the case of transposed notes, needed by BZQ for singing the note names with a human voice.

After the initial untransposed note, there follows the transposed one inside () until a further (un/re)transpose etc.

I am using the made-up verb "parallagize" (in Greek "παραλλαγίζω")

whereby the chanter sings the transposed note name instead of the pitch-adjacent note.

I am not implying  that you need to take any action, however you might want to include an auxiliary explicit .byzx statement eg. like

"transposedNote":  "Ni",

Pappous43 commented 1 year ago

Good day.

As I am in the process of writing the importing program

I have encountered a little potential problem:

There are neumes of combined 2-3 notes e.g. "OligonPlusHyporoePlusKentemata".

The exact positioning of auxiliary neumes (e.g. gorgon etc) determines the individual note

on which these act.

I can run many tests to determine my personal idea of what positions correspond to what Note Sequences.

That will take quite some valuable time (my concentration/speed is slow now at the age of 80),

but even worse is that there may be a discrepancy between Neanes and BZQ in the Note Sequence the result being a discrepancy in the corresponding melodies generated by the two programs .

On the other hand , you have already some internal positioning algorithm and you can determine how to properly play the score.

It therefore seems that you might easily add a few codes in the .byzx file which determine which note will be affected e.g. by an accidental etc.

Please see the attached image for more info.

Looking foreward to hearing from you.

danielgarthur commented 1 year ago

This is actually not supported yet and is related to #61. Currently there is no way to specify the correct note for accidentals and fthorai on neume groups where more than one option is theoretically possible. Right now, the playback always chooses the kentimata as the neume affected.

danielgarthur commented 1 year ago

The model has been updated to support accidentals and fthorai in "secondary" and "tertiary" positions.

Secondary = second neume to the left. E.g. the apostrofos in the combination apostrofos + kentimata over an oligon

Tertiary = third neume to the left (only applies to syneches elafron + kentimata over an oligon in which it refers to the apostrofos of the syneches elafron).

See the commit https://github.com/danielgarthur/neanes/commit/afb33874389514e975d24f02d913982a5a8fb0ce. In particular the Elements.ts and Neumes.ts files.

Pappous43 commented 1 year ago

Attached herewith are the results of the very first test of one of your .byzx files, "O House of Ephratha":

1) .bzq file with automatically generated .bzq code from the .byzx.

2) an .mp3 file generated by Bzq.exe from the .bzq file. I have added a constant pa  isokrátima, shortened the file to mono.

 This is a yet unpublished internal working "alfa".

I 'll carry on with more complicated files having combined notes.

P.S.

Regarding the recent secondary and tertiary codes, I guess existing .byzx files would have to be manually corrected to include the new codes?

On 3/5/2023 8:19 π.μ., danielgarthur wrote:

The model has been updated to support accidentals and fthorai in "secondary" and "tertiary" positions.

Secondary = second neume to the left. E.g. the apostrofos in the combination apostrofos + kentimata over an oligon

Tertiary = third neume to the left (only applies to syneches elafron + kentimata over an oligon in which it refers to the apostrofos of the syneches elafron).

See the commit afb3387 https://github.com/danielgarthur/neanes/commit/afb33874389514e975d24f02d913982a5a8fb0ce. In particular the |Elements.ts| and |Neumes.ts| files.

— Reply to this email directly, view it on GitHub https://github.com/danielgarthur/neanes/issues/68#issuecomment-1532465414, or unsubscribe https://github.com/notifications/unsubscribe-auth/A6J3LYBSMYNM3CEJWQBNASDXEHTENANCNFSM6AAAAAAVRGW2O4. You are receiving this because you modified the open/close state.Message ID: @.***>

=p [01]0$995x 6sp 100x9$160x-Ug p[house] b [of] b[Eph] n[ra] -p [tha] b [au] UD [gust] g[and] g[ho] bp[ly] Ub [cit] -p[y] p[thou] [02] p[glo] p[ry] p[of] nz[the] Ub [Proph] -p[ets] p[pre] Ub [pare] p[the] b [house] g [where] D [in] /igb/K -D[the] [03] g[Di] D [vine] g[One] b[shall] p[be] FRg [born] b[for] -p[us.]

danielgarthur commented 1 year ago

Regarding the recent secondary and tertiary codes, I guess existing .byzx files would have to be manually corrected to include the new codes?

Before the new codes were added, users were using the "neume positioning" feature that lets them drag the fthora wherever they wanted. So if someone wanted to convert that file to a .bzq, they would first have to reset the position of the fthora and then use the new feature to select the correct neume for the fthora.

Github did not accept the attachments for some reason. It may be due to the file extensions. You could try putting the files in .zip archive at attaching that, instead. I've had success with that in the past.

Pappous43 commented 1 year ago

Thanks.

Secondary and tertiary codes:

OK, I 'll finish off the program using the new feature only. This will save me a lot of necessary time!

The new BZQ release will be uploaded in a few days.

Attachments:

I have uploaded a more complete __NeanesToBzq.zip  in:

https://drive.google.com/drive/folders/15ipiasEwR1hCqVCCsT4Yey9zD6fX8GsB?usp=share_link

For realistic sound I have used "10Voices", and sometimes "VIOLIN" to emphasize the quality analysis (petasti etc). Needless to say the BZQ user can calibrate the quality analysis from 0 to 9.

On 18/5/2023 4:40 π.μ., danielgarthur wrote:

Regarding the recent secondary and tertiary codes, I guess
existing .byzx files would have to be manually corrected to
include the new codes?

Before the new codes were added, users were using the "neume positioning" feature that lets them drag the fthora wherever they wanted. So if someone wanted to convert that file to a |.bzq|, they would first have to reset the position of the fthora and then use the new feature to select the correct neume for the fthora.

Github did not accept the attachments for some reason. It may be due to the file extensions. You could try putting the files in |.zip| archive at attaching that, instead. I've had success with that in the past.

— Reply to this email directly, view it on GitHub https://github.com/danielgarthur/neanes/issues/68#issuecomment-1552290817, or unsubscribe https://github.com/notifications/unsubscribe-auth/A6J3LYAGJUPCJVXIWTTNNZLXGV4YZANCNFSM6AAAAAAVRGW2O4. You are receiving this because you modified the open/close state.Message ID: @.***>

Pappous43 commented 1 year ago

See newest translate to BZQ:

__NeanesToBzq Funeral.zip

https://drive.google.com/drive/folders/15ipiasEwR1hCqVCCsT4Yey9zD6fX8GsB?usp=share_link

https://drive.google.com/drive/folders/15ipiasEwR1hCqVCCsT4Yey9zD6fX8GsB?usp=share_linkMessage ID: @.***>

Pappous43 commented 1 year ago

Message ID: @.***>

*https://bzquality.wordpress.com/neanes/*

Neanes - BZQ Integration (alpha) uploaded

Pappous43 commented 1 year ago

Message ID: @.***>

Corrected link

https://bzquality.wordpress.com/neanes/

Pappous43 commented 1 year ago

Judging from the successfull tests, I decided to upload the first Alpha version 4 days ago. I have received about 10 likes already.

I am now in the process of finding time to sort out the multi-notes neumes.

I have translated successfully 4 Flats for "OligonPlusRunningElaphronPlusKentemata". However the Sharps are not allowed.

In the other triple-note  but double-neume "OligonPlusHyporoePlusKentemata" there is a  NEUME SELECT for 2 neumes but we actually need 3 alternatives for the total of 3 notes present (yporroi has 2 notes and both of then could have an accidental). So a Tertiary one is usefull too. Perhaps a NOTE SELECT  is clearer than a NEUME SELECT.Message ID: @.***>