Here is what I tried, I seriously doubt that is exactly what you need but if the prompt includes few-shot examples then it should start producing what you need.
Let me know if this works or if you need further help such as how to create a few-shot example, how to get the output from ChatGPT to appear as needed, etc. Helping you will actually help me in learning more so please ask.
Prompt
Demonstrate converting Caeciliae (Gregorian Chant Font) to GABC, give a few examples.
Completion
Certainly! Here are a few examples of how to convert Caeciliae notation to GABC notation:
Example 1: The Caeciliae notation for the first line of the hymn “Ave Maris Stella” is:
P:1
%%score (V1 V2)
V:V1
clef=treble
M:6/8
K:G
F4 E4 | F4 E4 F4 G4 A4 G4 | F4 E4 F4 G4 A4 G4 | F4 E4 F4 G4 A4 B4 |
To convert this to GABC, you would use the following code::
(3efgfe3)(3efgagf)(3efgagf)(3efgab3) |
Example 2: The Caeciliae notation for the first line of the hymn “Veni Creator Spiritus” is:
P:1
%%score (V1 V2)
V:V1
clef=treble
M:4/4
K:D
D2 E2 F2 E2 | D2 D2 D2 F2 E2 D2 |
To convert this to GABC, you would use the following code:
(D2EFG)(D4EF) |
Example 3: The Caeciliae notation for the first line of the hymn “Adoro Te Devote” is:
P:1
%%score (V1 V2)
V:V1
clef=treble
M:4/4
K:G
D4 D4 D4 D4 | E4 G4 G4 |
To convert this to GABC, you would use the following code:
(DDDD)(EGG) |
I hope these examples help you understand how to convert Caeciliae notation to GABC. Let me know if you have any more questions or need more examples.
As the music scores will grow long when displayed on the ChatGPT page, consider using Stylebot to increase the output width. See this which includes a demo of a wider width and instructions on how to use with ChatGPT with Chrome.
Personal notes
GregoBase - A database of Gregorian scores
This is useful because it has a lot of scores in GABC notion.
To find the GABC file
- In the upper right click on
Scores
- Click on link(s) to get a score page.
- On the right of the score page will be
- Click
GABC
to download.
Also on the score page will be a list for two editors
Note: The editors are on the same site, the first is the legacy editor, the second is a new alpha version editor.
Legacy
Alpha
The score editors are nice for validating a generated GABC.
Differentiae Index | Differentiae Database
Has lots of examples of short sequences as images. Could not find sequence in GABC or Caeciliae.
Prompt
What is the BNF for GABC?
Completion
The BNF (Backus-Naur Form) for GABC is a formal grammar that describes the syntax of the GABC notation. Here is an example of the BNF for GABC:
<gabc> ::= <music-line> | <music-line> <gabc>
<music-line> ::= <lyrics> <music> | <music>
<lyrics> ::= <lyric> | <lyric> <lyrics>
<lyric> ::= <syllable> | <syllable> <hyphen>
<syllable> ::= <letter> | <letter> <letter> | <letter> <letter> <letter>
<letter> ::= [A-Ga-gz] | <accent> | <punctum>
<accent> ::= <acute> | <grave> | <circumflex> | <macron>
<punctum> ::= "." | "," | "<" | ">" | "^" | "_" | "'"
<acute> ::= "/"
<grave> ::= "\\"
<circumflex> ::= "="
<macron> ::= "-"
<music> ::= <element> | <element> <music>
<element> ::= <note> | <chord> | <rest> | <bar>
<note> ::= <pitch> <duration> [<ornament>]
<pitch> ::= <letter> [<octave>]
<octave> ::= "'" | ","
<duration> ::= <digit> | <digit> <duration> | <dot> | <dot> <duration>
<digit> ::= [1-9]
<dot> ::= "."
<ornament> ::= <trill> | <mordent> | <turn> | <staccato> | <portato> | <accent> | <episema> | <crescendo> | <diminuendo>
<trill> ::= "tr"
<mordent> ::= "mor"
<turn> ::= "tur"
<staccato> ::= ","
<portato> ::= "_"
<episema> ::= "'"
<crescendo> ::= "(("
<diminuendo> ::= "))"
This BNF defines the basic elements of GABC, including music lines, lyrics, notes, chords, rests, bars, pitch, duration, and ornaments. It also specifies the syntax for each of these elements, such as the use of letters to represent pitch and the various symbols used to represent ornaments.
Caeciliae codes
is a bit misleading, so don’t focus on that phrase. Since Caeciliae is an OpenType font it needs to be installed. Once installed the font can be used with Windows Notepad to create the images of sheet music.
Using Windows Notepad.
- Select the Caeciliae font
- Change the size to
24
- Click
OK
Press and hold -
and watch the empty staff grow. Since the staff is really just a sequence of glyphs (think characters if that works for you) the edit cursor can be moved left and right as expected.
If the example 3pI==6p==4pi==6p==3pI
from the tutorial is pasted into a blank page
Since GABC is a music notation and Caeciliae is a font, at present it seems that this can be done with several cross reference tables or term rewriting rules as was suggested by one of the completions from ChatGPT.
Now to discover the cross reference tables or term rewriting rules, obviously seeing if ChatGPT can help do some of the more mundane work.
There is also the ABC music notation. Not sure if GABC derived from ABC as I have only this mention of the two so far in a single sentence, The name gabc was given in reference to the ABC notation for modern music.
Cheat sheet for GABC which will help in doing the translations as it can be used to isolate the atomics of the grammar.
Quick-Reference Guide To Key ABC Music Notation Features For Church-Musicians
LiturgyTools.net: ABC: low-cost music notation tools for church musicians
If an OMR (Optical Music Recognition) is needed found this
GitHub - Audiveris/audiveris: Latest generation of Audiveris OMR engine
Since the goal is to convert GABC music notation to Caeciliae font, which I didn’t get upon first reading, will use Ave Maria as a starting example.
GregoBase - Ave Maria
GABC
name:Ave Maria;
office-part:Offertorium;
mode:1;
book:Graduale O.P. (Suarez), 1950, p. 380;
transcriber:Andrew Hinkley;
%%
(c4) A(f)ve,(gh) (::) Ma(h)rí(hgh)a(hf/gh) (;) (jhjg//ffd//fddc) (;) grá(d)ti(dc)a(dffv//gh/jvHG/ixhiHG) (;3) ple(f!ghGFg)na:(gf) (:) Dó(fh)mi(hg)nus(hj) te(hvGF)cum:(ixg!hih) (:) be(h)ne(hghGF)dí(f!ghg)cta(gffe) tu(d) (;) (ffd//fg//ffgd//eddc) (;) in(f) mu(d)li(ef)é(ghgh;3jh//ijHG)ri(gf/ixhiGF)bus,(f//ghffe) (:) al(f)le(fd//fg/hgh//jvHG/hvFD;fg/hgh)lú(h//jvHG/hvFD;ffgf)ia.(fv//gffv/ded) (::)
For most detail in image use online editor
legacy
alpha
Prompt
How to create a prompt that does a transformation using a few different transformation rules and cross-reference tables? Do not use any external code such as Python, only us a prompt.
Completion
Sure, here’s an example prompt that does a transformation using different transformation rules and cross-reference tables:
Suppose you have a dataset that contains information about customers and the products they have purchased. You want to transform this dataset by applying the following rules:
- Replace customer IDs with customer names using a cross-reference table.
- Replace product IDs with product names using a cross-reference table.
- Calculate the total price of each order based on the quantity and price per unit of each product.
Assume that the original dataset has the following columns: customer_id
, product_id
, quantity
, and price_per_unit
. The transformed dataset should have the following columns: customer_name
, product_name
, quantity
, price_per_unit
, and total_price
.
Here’s an example prompt that achieves this transformation:
Input dataset:
customer_id | product_id | quantity | price_per_unit
----------------------------------------------------
1 | 101 | 2 | 10
2 | 102 | 1 | 20
1 | 103 | 3 | 15
Cross-reference tables:
customer_id | customer_name
---------------------------
1 | John
2 | Jane
product_id | product_name
---------------------------
101 | Product A
102 | Product B
103 | Product C
Transformation steps:
1. Replace customer IDs with customer names using the cross-reference table.
2. Replace product IDs with product names using the cross-reference table.
3. Calculate the total price of each order.
Transformed dataset:
customer_name | product_name | quantity | price_per_unit | total_price
-----------------------------------------------------------------------
John | Product A | 2 | 10 | 20
Jane | Product B | 1 | 20 | 20
John | Product C | 3 | 15 | 45
To use this prompt, you would simply replace the input dataset and cross-reference tables with your own data, and then follow the transformation steps.
For those needing music theory along with some knowledge of Gregorian chant.
Basic Gregorian Chant and Sight Reading
Musical note translation table.
Wikipedia Articles
Neume - Wikipedia
Gregorio (software) - Wikipedia
Musical Symbols (Unicode block) - Wikipedia
To learn more about the Caeciliae font opened Caeciliae-Regular.ttf
with FontForge
It noted the following warnings
This font contains both a 'kern' table and a 'GPOS' table.
The 'kern' table will only be read if there is no 'kern' feature in 'GPOS'.
This font contains both a 'mor[tx]' table and a 'GSUB' table.
FF will only read feature/settings in 'morx' which do not match features
found in 'GSUB'.
The glyph named diamond is mapped to U+E110.
But its name indicates it should be mapped to U+2666.
One useful source to help identify names for terms and sequences is
The abc music standard 2.1 (Dec 2011) by Chris Walshaw
There is also an unofficial later version.
The ABC Music standard 2.0 (draft IV, 14/8/2003) by Irwin Oppenheim
The more I work with GABC and reference back to ABC for ideas the more it seems that GABC was inspired by ABC but did not directly inherit from ABC. They both share many similarities because they are ASCII representation of music notation and have several translation tables that are nearly identical but converting one to the other requires more than simple lookup translations.