Skip to content

Instantly share code, notes, and snippets.

@Benitoite
Last active August 31, 2026 19:45
Show Gist options
  • Select an option

  • Save Benitoite/65f869291788bb1c68513101ef95326f to your computer and use it in GitHub Desktop.

Select an option

Save Benitoite/65f869291788bb1c68513101ef95326f to your computer and use it in GitHub Desktop.
Random long melismatic syllables
#!/usr/bin/env zsh
# Generate a complete GABC score containing random long melismatic syllables
# from a local GregoBase corpus.
#
# Usage:
# ./random_melismas.zsh [-n count] [path-to-gregobase-corpus] > melismas.gabc
#
# The default corpus is "gregobasecorpus-v0" next to this script. By default,
# ten melismas are selected, each from a distinct source file, and two are
# placed on each output staff. Every selected syllable has at least ten sung
# notes and is labeled with its GregoBase ID and exact note count.
emulate -L zsh
setopt err_return no_unset pipe_fail
readonly MIN_NOTES=12
readonly MELISMAS_PER_LINE=2
readonly MAX_ATTEMPTS=5000
readonly PROGRAM_NAME=${0:t}
typeset count_arg=1
usage() {
print -u${1:-1} -r -- \
"usage: $PROGRAM_NAME [-n count] [path-to-gregobase-corpus]"
}
while (( $# > 0 )); do
case $1 in
(-n|--count)
if (( $# < 2 )); then
print -u2 -- "error: $1 requires a positive integer"
usage 2
exit 2
fi
count_arg=$2
shift 2
;;
(--count=*)
count_arg=${1#*=}
shift
;;
(-h|--help)
usage
exit 0
;;
(--)
shift
break
;;
(-*)
print -u2 -- "error: unknown option: $1"
usage 2
exit 2
;;
(*)
break
;;
esac
done
if (( $# > 1 )); then
print -u2 -- "error: too many arguments"
usage 2
exit 2
fi
if [[ $count_arg != <-> ]] || (( count_arg < 1 )); then
print -u2 -- "error: count must be a positive integer: $count_arg"
exit 2
fi
readonly MELISMA_COUNT=$count_arg
readonly SCRIPT_DIR=${0:A:h}
readonly CORPUS_DIR=${1:-${SCRIPT_DIR}/gregobasecorpus-v0}
readonly GABC_DIR=${CORPUS_DIR:A}/gabc
if [[ ! -d $GABC_DIR ]]; then
print -u2 -- "error: GABC directory not found: $GABC_DIR"
usage 2
exit 1
fi
gabc_files=("$GABC_DIR"/*.gabc(N))
if (( ${#gabc_files} == 0 )); then
print -u2 -- "error: no .gabc files found in: $GABC_DIR"
exit 1
fi
if (( MELISMA_COUNT > ${#gabc_files} )); then
print -u2 -- \
"error: requested $MELISMA_COUNT distinct sources, but only ${#gabc_files} exist"
exit 1
fi
# Find every qualifying note-bearing syllable in one score, choose one at
# random, and return its active clef, note count, and source GABC. A nonzero
# status tells the caller that this file has no qualifying syllable.
extract_melisma() {
perl -0777 - "$1" "$MIN_NOTES" <<'PERL'
use strict;
use warnings;
my ($path, $min_notes) = @ARGV;
# Source line breaks describe the source score's page geometry. Remove them
# from a selected syllable so only the new anthology's breaks control layout.
sub without_source_linebreaks {
my ($music) = @_;
my $clean = '';
my $in_brackets = 0;
my $in_braces = 0;
for (my $i = 0; $i < length $music; $i++) {
my $char = substr($music, $i, 1);
# NABC after | has a separate alphabet, in which z is not a GABC break.
if ($char eq '|' && !$in_brackets && !$in_braces) {
$clean .= substr($music, $i);
last;
}
$in_brackets++ if $char eq '[';
$in_brackets-- if $char eq ']' && $in_brackets;
$in_braces++ if $char eq '{';
$in_braces-- if $char eq '}' && $in_braces;
# Preserve z0 (a custos without a break), but remove z/Z line breaks,
# their optional +/- modifier, and a manual custos attached to them.
if (!$in_brackets && !$in_braces
&& ($char eq 'z' || $char eq 'Z')
&& substr($music, $i + 1, 1) ne '0') {
$clean =~ s/[a-mA-M]\+\z//;
my $next = substr($music, $i + 1, 1);
$i++ if $next eq '+' || $next eq '-';
next;
}
$clean .= $char;
}
return $clean;
}
open my $fh, '<:raw', $path or exit 1;
local $/;
my $document = <$fh>;
close $fh;
my (undef, $body) = split /^%%[\t ]*\r?\n/m, $document, 2;
exit 1 unless defined $body;
my @candidates;
my $cursor = 0;
my $active_clef = '';
while ($body =~ /\(([^()]*)\)/g) {
my ($start, $end) = ($-[0], $+[0]);
my $music = $1;
my $scan = $music;
# Count only sung notes in the primary GABC voice. NABC, directives,
# polyphonic upper voices, and inline tags use letters for other purposes.
$scan =~ s/\|.*\z//s;
$scan =~ s/\[[^]]*\]//g;
$scan =~ s/\{[^}]*\}//g;
$scan =~ s/<[^>]*>//g;
my $note_count = 0;
my $first_note_clef = '';
for (my $i = 0; $i < length $scan; $i++) {
my $remaining = substr($scan, $i);
if ($remaining =~ /\A([cf]b?[1-4])/) {
$active_clef = $1;
$i += length($1) - 1;
next;
}
my $pitch = substr($scan, $i, 1);
next unless $pitch =~ /[a-mA-M]/;
my $after = substr($scan, $i + 1);
# Accidentals and manual custodes use a staff-position letter but do
# not add a sung note.
if ($after =~ /\A[xy#\+]/) {
$i++;
next;
}
next unless length $active_clef;
$first_note_clef ||= $active_clef;
# hvv is two virgae and hsss is three strophae: the carrier pitch is
# not an additional note beyond the v/s repetition run.
if ($after =~ /\A([sv]+)/) {
my $repetitions = $1;
$note_count += length $repetitions;
$i += length $repetitions;
} else {
$note_count++;
}
}
# Text since the preceding parenthesized group belongs to this group. A
# note-bearing group with visible lyric text is one complete GABC syllable;
# control-only groups such as bars and clefs are therefore excluded.
my $prefix = substr($body, $cursor, $start - $cursor);
my $visible_lyric = $prefix;
$visible_lyric =~ s/<[^>]*>//g;
$visible_lyric =~ s/\$[^\$]*\$//g;
my $is_repeat_marker =
$prefix =~ /<i>/i
&& $visible_lyric =~ /\A\s*i{1,3}j\.\s*\z/i;
if ($note_count >= $min_notes
&& length $first_note_clef
&& !$is_repeat_marker
&& $visible_lyric =~ /[A-Za-z\x80-\xFF]/) {
push @candidates, {
start => $cursor,
end => $end,
count => $note_count,
clef => $first_note_clef,
};
}
$cursor = $end;
}
exit 1 unless @candidates;
my $chosen = $candidates[int rand @candidates];
my $melisma = substr(
$body,
$chosen->{start},
$chosen->{end} - $chosen->{start},
);
$melisma =~ s/\A\s+//;
$melisma =~ s{\(([^()]*)\)}{
my $original = $1;
my $clean = without_source_linebreaks($original);
(length($clean) || $original !~ /[zZ]/) ? "($clean)" : '';
}ge;
# Physical source newlines are ordinary GABC whitespace. Flatten them so each
# result occupies one source line and only generated (z) commands break staves.
$melisma =~ s/[\t ]*\r?\n[\t ]*/ /g;
$melisma =~ s/\s+\z//;
binmode STDOUT, ':raw';
print $chosen->{clef}, "\n", $chosen->{count}, "\n", $melisma;
PERL
}
read_header() {
awk -v key="$1" '
$0 == "%%" { exit }
index($0, key ":") == 1 {
value = substr($0, length(key) + 2)
sub(/;$/, "", value)
print value
exit
}
' "$2"
}
selected_files=()
selected_clefs=()
selected_counts=()
selected_melismas=()
selected_ids=()
typeset -A used_files
# Randomly sample distinct scores. A source is reserved only after it yields a
# qualifying syllable, so unsuitable scores do not reduce the requested count.
for (( attempt = 1;
attempt <= MAX_ATTEMPTS && ${#selected_files} < MELISMA_COUNT;
attempt++ )); do
candidate=${gabc_files[$(( RANDOM % ${#gabc_files} + 1 ))]}
[[ -n ${used_files[$candidate]-} ]] && continue
if parsed=$(extract_melisma "$candidate"); then
clef=${parsed%%$'\n'*}
remainder=${parsed#*$'\n'}
count=${remainder%%$'\n'*}
melisma=${remainder#*$'\n'}
used_files[$candidate]=1
selected_files+=("$candidate")
selected_clefs+=("$clef")
selected_counts+=("$count")
selected_melismas+=("$melisma")
selected_ids+=("$(read_header _gregobase_id "$candidate")")
fi
done
if (( ${#selected_files} != MELISMA_COUNT )); then
print -u2 -- \
"error: found only ${#selected_files} distinct melismas of at least ${MIN_NOTES} notes"
exit 1
fi
print -r -- "name:${MELISMA_COUNT} random GregoBase melismas;"
print -r -- "initial-style:0;"
print -r -- \
"commentary:Melismatic syllables labeled with GregoBase ID and sung-note count;"
print -r -- "%%"
for (( index = 1; index <= MELISMA_COUNT; index++ )); do
chant_id=${selected_ids[$index]:-unknown}
print -nr -- "(${selected_clefs[$index]}) "
print -nr -- \
"<alt>$index · GB$chant_id · ${selected_counts[$index]}n</alt>"
print -nr -- "${selected_melismas[$index]} (::)"
if (( index % MELISMAS_PER_LINE == 0 || index == MELISMA_COUNT )); then
print -r -- " (Z)"
else
print
fi
done
supertitle:_;
title:Random Gregobase Melismas #1
subtitle:_;
name:random_melismas01
%%
(f3) <alt>1 · GB3493 · 15n</alt>pó(ig/ijIG//egf/ivGF/hhg) (::)
(c3) <alt>2 · GB1268 · 10n</alt>jus:(df/e!hhhf/fef.) (::) (z)
(c4) <alt>3 · GB7295 · 13n</alt>cél(hjg!/efED;hg!/hihhv) (::)
(c4) <alt>4 · GB1429 · 11n</alt>í(jvjjjvHGFgwhgh) (::) (z)
(c3) <alt>5 · GB260 · 10n</alt>rum(jh/jki/hh/fgf.) (::)
(f3) <alt>6 · GB1561 · 11n</alt>hi.(fefEC//fef/ggf) (::) (z)
(c4) <alt>7 · GB3667 · 10n</alt>xí(g/hghd//gvFEDe) (::)
(f3) <alt>8 · GB833 · 11n</alt>ná(hhgh/i_h/ihhfg) (::) (z)
(c3) <alt>9 · GB3912 · 10n</alt>tres(feed//efe/f!hh) (::)
(c4) <alt>10 · GB277 · 15n</alt>me:(ig/h!jjjh/klJ'IHjvIH) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #2
subtitle:_;
name:random_melismas02
%%
(c4) <alt>1 · GB6187 · 11n</alt>ta(ffvDC//dff//hghf) (::)
(c4) <alt>2 · GB818 · 32n</alt>pau(g_d/f_ef./d!ef'!gh'/jvIH'//jv_G_F'fd,fge___//fgF'EfvED'ewfef) (::) (z)
(c3) <alt>3 · GB840 · 10n</alt>am:(ihhvF'Effe/ff) (::)
(c3) <alt>4 · GB1476 · 20n</alt>Dó(ihhhhf/hh//ihhhhe/gxfgEDhh) (::) (z)
(c4) <alt>5 · GB4661 · 10n</alt>dá(h!iwj/kvJIjwkjk) (::)
(c3) <alt>6 · GB6249 · 37n</alt>tu(jvIHG/hvFE;gef//hhv//ijij;hj/kvIH/hvFE//fgFEf;i!jkj//kvJIj) (::) (z)
(c2) <alt>7 · GB6355 · 21n</alt>c<sp>'ae</sp>(iivHG/hf;3hj//ikJIH//ghf;4gh/igh) (::)
(c3) <alt>8 · GB5721 · 20n</alt>cél(fd//fvED;4fd/ef//hhv//ig/hf//hi//kkh) (::) (z)
(c4) <alt>9 · GB3383 · 25n</alt>ó(ixhf/gh/jjh//giHGF//,fff//fgf/ghg/hf/gf) (::)
(f3) <alt>10 · GB8107 · 17n</alt>vé(j_hjvIG'F//hiG'FhvGEffvEC) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #3
subtitle:_;
name:random_melismas03
%%
(c4) <alt>1 · GB263 · 15n</alt>le(e_d/fh//ghg/e!fg/hf/gvFE) (::)
(c4) <alt>2 · GB6614 · 10n</alt>pro(c!df//e!fhGE/fd) (::) (z)
(c4) <alt>3 · GB1162 · 11n</alt>me(d!ewf!gvFED./fvEDC') (::)
(c4) <alt>4 · GB222 · 25n</alt>ho(fd/ffd/ef/gh/jjj_i,hjIH.giH'GhvF'Ef) (::) (z)
(c3) <alt>5 · GB1399 · 16n</alt>al(fe/hvvGE//gxfgFD//egFE/fe) (::)
(c4) <alt>6 · GB3442 · 29n</alt>e(ixhiGEg//hiFD//fffdgvFE,df/hf/gefv//df!gvFEf) (::) (z)
(c4) <alt>7 · GB3458 · 41n</alt>san(dh/jjggf/gh,hggf/gh/jjggf/gh,gh!iwj!kvJIHGh,hkkj/klJIH) (::)
(c4) <alt>8 · GB3860 · 13n</alt>te.(jijHG//ixjjvHG/hiGF) (::) (z)
(c4) <alt>9 · GB3684 · 35n</alt>ti(ixdh//gih/ivGF//ggf/gg//f!gh!jjg,ixhhg/hvGF//hiHG/hw!ivHG/hi) (::)
(c4) <alt>10 · GB5146 · 10n</alt>vér(dv//fgFD//evCA//cd~) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #4
subtitle:_;
name:random_melismas04
%%
(c4) <alt>1 · GB381 · 10n</alt>lú(ghghFD'ewf/ge~) (::)
(c4) <alt>2 · GB1470 · 10n</alt>nus(ghFEfvEDCdc) (::) (z)
(c2) <alt>3 · GB6617 · 18n</alt>vo(ef//gvFE/fg//iivGF;3iiji//ivHG) (::)
(c4) <alt>4 · GB1805 · 10n</alt>tes(g/h!iw!jvIH/ivHGh) (::) (z)
(c4) <alt>5 · GB818 · 12n</alt>ne(iji//hjij/hiH'Gi.) (::)
(c4) <alt>6 · GB194 · 10n</alt>so(ixgih'/ivGF'/gffe.) (::) (z)
(c4) <alt>7 · GB3149 · 10n</alt>gnus(g.f!gwh_g_/hv_GE/f_e) (::)
(c4) <alt>8 · GB1662 · 10n</alt>runt(ih/jkJHG/hhg) (::) (z)
(c4) <alt>9 · GB533 · 12n</alt>tu(dgffvEC/d!ew!fvED'e) (::)
(cb4) <alt>10 · GB8724 · 11n</alt>á(f!gh/jh'hvGFggf) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #5
subtitle:_;
name:random_melismas05
%%
(c4) <alt>1 · GB1611 · 13n</alt>quo(ikjjjhivHGhffe) (::)
(f3) <alt>2 · GB22 · 11n</alt>hi.(fefEC//fef/ggf.) (::) (z)
(c4) <alt>3 · GB1670 · 10n</alt>tu(hg/h!iw!jvIHijh) (::)
(c4) <alt>4 · GB3777 · 11n</alt>cem(hjh/ghg/fgFDf) (::) (z)
(c4) <alt>5 · GB3592 · 44n</alt>fru(h/jhhg/he/fg//dfED//,dh/jhhg/he/fg/ixeg!ivHGhvFDfvED,hhggf/hjhhg) (::)
(c3) <alt>6 · GB5441 · 16n</alt>má(ivHGE//fhGE//fh;gi//jvHGF) (::) (z)
(c4) <alt>7 · GB3098 · 12n</alt>é(hkj/kvJH/hv//ghf/gh) (::)
(c3) <alt>8 · GB764 · 10n</alt>dat:(hg/i_h//jvIH'Ghf..) (::) (z)
(c3) <alt>9 · GB518 · 13n</alt>os(h.f!gwh!iv.hi/jhh/iih.) (::)
(c3) <alt>10 · GB348 · 15n</alt>te(e/hh//hh/ijhh'hvFE'gvFE.) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #6
subtitle:_;
name:random_melismas06
%%
(c2) <alt>1 · GB6651 · 48n</alt>re(gv//f!ghFD//gvFECd;ffd//exevDC//dvCBc;ffc//dfDC//dfDBc;ffg//eyiivGFE;4ghGFE/fg) (::) (z)
(c4) <alt>2 · GB1097 · 24n</alt>gló(ccdde/fg./fh/ghf. , gf/ghffvECddvCA) (::) (z)
(c3) <alt>3 · GB807 · 37n</alt>fí(gxfh/ih/i_h//ivFD'//fh.ivFD'fhfg.,fh/ih/i_h//ivFD'e_d.ddd/f_h/ijh) (::) (z)
(c3) <alt>4 · GB311 · 37n</alt>tu(jvI'HG'hvF'E,ge/f!hh/ijij.,hj!kvIG'hvF'E//fgF'Ef.,i!jwk_jkvJI'j) (::) (z)
(c4) <alt>5 · GB4967 · 28n</alt>tu(fhhgh//jjh//jjvIH//jggf;hjIHG//ffhGF//gf) (::) (z)
(c3) <alt>6 · GB3715 · 26n</alt>pá(hv//fihhhhvFD,f!hh/fig/hvFEf egFE/fvED) (::) (z)
(c3) <alt>7 · GB965 · 28n</alt>dí(hvvGF/hvGE/ff/gxde!fgF'E/fvEDe.,fh/ih/ih/ijh) (::) (z)
(c4) <alt>8 · GB77 · 40n</alt>di(ixh./ijh/iggf/hjh. , ixf.g!hwigh./ijh/iggf/hjh. , ixjkj___/jh/ivGF'/gwhg/hi//) (::) (z)
(c4) <alt>9 · GB3362 · 29n</alt>bo(ixhiGEg//hiFD//fffd/gvFE , df/hf/ge/fv//df!gvFEf) (::) (z)
(c3) <alt>10 · GB6628 · 36n</alt>té(gyhf//hvGE//fhFD;gxgvFEf//hhv//ijHF;gygig//ivHG//he//fe;4ge//gvFEfd) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #7
subtitle:_;
name:random_melismas07
%%
(c4) <alt>1 · GB371 · 27n</alt>au(ixhf/gh!jjh/jjvH'GhiG'F,ghfff'dfED'//e!f'g~) (::) (z)
(c4) <alt>2 · GB3230 · 24n</alt>má(hvGFg//jjj/kj/mvKJ/lj,hi!jkkvJIGhi) (::) (z)
(c4) <alt>3 · GB7238 · 27n</alt>Vir(hjIH//kj//ijh//jg;3h!ijg;gghGF/gd;4gh/jhi) (::) (z)
(c3) <alt>4 · GB6293 · 36n</alt>fí(fh//ihih//ivFD;4fh//ivFD;gxfhggv//fh//ihih//ivFD/ed;1ddv//fh//ijh) (::) (z)
(f3) <alt>5 · GB1653 · 25n</alt>mil(hiHFfe//hiHFfe//hvGFihhvGFhf/gvFE) (::) (z)
(f3) <alt>6 · GB1029 · 25n</alt>por(h'/ihhf/g'/hggf/h'/ihhg/i'/jiig/h'/ighf) (::) (z)
(c4) <alt>7 · GB1360 · 52n</alt>tá(dh/jjggf/gh.,hggf/gh/jjggf/gh.,g.h!iwj!kvJ'IH'Gh.,hkkj/klJ'IH'Gh.,g.h!iwj/kjjvIH) (::) (z)
(c3) <alt>8 · GB3565 · 31n</alt>án(hf/hhf/hhf/hhh , f!hhf/hhf/hhh//ihhf/hhf/hhh) (::) (z)
(c4) <alt>9 · GB3813 · 25n</alt>de(hf/gffv//ce!gv//hggg//ggge//fe/fvED//fgfg) (::) (z)
(c4) <alt>10 · GB1608 · 28n</alt>coe(ixhv//fh!ivHGhv//,//f!gh/jij//h!jjjvGFh//jjh//jjg/jj) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #8
subtitle:_;
name:random_melismas08
%%
(c4) <alt>1 · GB73 · 24n</alt>me(hv.f!g'h/jhjvGF'fd , ef!ghG'Efv.ef!gh_gh) (::) (z)
(c4) <alt>2 · GB933 · 35n</alt>ti(ixdh//gih/ivGF//ggf/gg//f!gh!jjg,ixhhg/hvGF./hiHG'/hw!ivHG/hi) (::) (z)
(c4) <alt>3 · GB3773 · 31n</alt>dé(gf//g/hjh/ig//hvGF/ghhhvGFg,hjh/ig//hvGF/ghhgh) (::) (z)
(c4) <alt>4 · GB3481 · 24n</alt>ór(ixgh/igh//egFED , ixce!gh/igh//egFEDdc~) (::) (z)
(c3) <alt>5 · GB3405 · 28n</alt>cá(hv//fh/iih/ii,fh/i!kkkh klkkvIHhhf/hhhi) (::) (z)
(c3) <alt>6 · GB1759 · 37n</alt>ná(jvIHGhvFE,ge/f!hh/ijij//,//hj!kvIGhvFE//fgFEf , i!jwkj/kvJIj) (::) (z)
(c3) <alt>7 · GB1359 · 30n</alt>vén(h_f/hhf/hhf./d!ef!hh/ijH'FhvGEf. , f!hh//hhh.f!gwh) (::) (z)
(c4) <alt>8 · GB99 · 28n</alt>bún(ix/hiG'E/g./hiF'D/fffd/gvFE. , df/h_f/g_e/fv.df!gv/ef~//) (::) (z)
(c4) <alt>9 · GB723 · 25n</alt>Dó(fgf__hv.ghFD.//cd/fef/g_e,h_g/efd//fvEDed) (::) (z)
(c4) <alt>10 · GB5248 · 25n</alt>tó(efED;dh!ivHG/ge;4ghGFEC;egFED//ffd) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #9
subtitle:_;
name:random_melismas09
%%
(c4) <alt>1 · GB946 · 62n</alt>ce(ixg_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;ixce!g_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;gv.ef/g_e/f_dev.,gv.ef/g_e/f_dev.c!dwe'!fv) (::) (z)
(c3) <alt>2 · GB1673 · 25n</alt>num.(hhhf/hhhf/hhf//,//de/f!hh/ijghf/gxegFD) (::) (z)
(c4) <alt>3 · GB3627 · 26n</alt>o(ixhg/hvGF//gighhvGFED,cf!ghhvFEDC//efd) (::) (z)
(c4) <alt>4 · GB443 · 24n</alt>jú(hf/gh/jhjvGE'fvDC',d!ff/ghF'Eghffe) (::) (z)
(f3) <alt>5 · GB7233 · 27n</alt>strá(f//hffeg//hiig;ivHG//hvGF//gvFEf;hhf//gvFEf) (::) (z)
(c3) <alt>6 · GB5207 · 24n</alt>le(hi/jik//kvJIH//igh;f!gh//gvFED//gvFE//fd) (::) (z)
(c3) <alt>7 · GB1440 · 25n</alt>ae.(hhhf,h/ihhh//hhhf/ih/ghf//ihhhhefv) (::) (z)
(c4) <alt>8 · GB3755 · 24n</alt>tér(hgge/gvFED;cfe/fgFED ce/gfffvED) (::) (z)
(c4) <alt>9 · GB4872 · 25n</alt>cor(hv//f!gh//jh/jg//ffd;ef//ghg//ffv//ef/gh//hgh>) (::) (z)
(c3) <alt>10 · GB5670 · 24n</alt>mí(jh//jvIH/hf;hvhfh//hhf;h!ijIHjvIH/if) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #10
subtitle:_;
name:random_melismas10
%%
(c4) <alt>1 · GB1599 · 25n</alt>le(ghg//f/ge/fd , df/hg//df/hg//f/ge/fd//hvGFg) (::) (z)
(c4) <alt>2 · GB3484 · 25n</alt>tér(ixhf/gh!jjh//giHGF,fff//fgf/ghg/hf/gf) (::) (z)
(c3) <alt>3 · GB3395 · 36n</alt>á(f!gw!hvGFEfd,efe//f!gw!hvGFEfvEDfh/ivHGEf,fh!ivHGEf!gwh) (::) (z)
(c3) <alt>4 · GB1785 · 24n</alt>gá(hf/hhf//hhf//hhjvIHf!hh/jvIHihhhf) (::) (z)
(c3) <alt>5 · GB1684 · 27n</alt>án(hi!jv//hjIH/hf//hhf/hv//hhhf , hi!jvIH/jvIH/if~) (::) (z)
(c4) <alt>6 · GB1726 · 28n</alt>pér(ixhv//fh!ivHGhv,f!gh/jij//h!jjjvGFh//jjh//jjg/ji) (::) (z)
(c4) <alt>7 · GB189 · 34n</alt>gen(jk/jkh'//jvIH'hg/ijh.//giggh.,hi!jkkvJ'IH'//jvIH'hg/ijh~) (::) (z)
(c4) <alt>8 · GB6960 · 24n</alt>e(hf!gh//jh/jvGF//fvDC//dffv;ghFE//ghffe) (::) (z)
(c4) <alt>9 · GB539 · 29n</alt>e(ixhiG'Eg.ixhiF'D//fffdgvFE.,df/h_f/g_efv.df!gvFE'f) (::) (z)
(c4) <alt>10 · GB1793 · 34n</alt>a(ig//ivHGhhf/hh , g!jj//jj//jjjvHGFEixfh//ivGFghg/hgge) (::) (z)
supertitle:_;
title:Random Gregobase Melismas #11
subtitle:_;
name:random_melismas11
%%
(c4) <alt>1 · GB3602 · 34n</alt>gen(jk//jkh//jvIHhg/ijh giggh,hi!jkkvJIH//jvIHhg/ijh~) (::) (Z)
(c3) <alt>2 · GB1612 · 49n</alt>lá(ilmvLK/lvKJ/kkki ; kv//mvLK/lvKJ/kkki//jvIHhhf/g!hi , jkIH/ivHF/fe , g!hwigiigi) (::) (Z)
(c4) <alt>3 · GB7314 · 39n</alt>e,(kvjkh!/;3!/ixgiHGgf!/ghhv :: h!/jk!/jkh!/;3!/giHGgf!/ghhv :: hvGFgvFED!/;4!/fvDCd) (::) (Z)
(c3) <alt>4 · GB1534 · 37n</alt>tén(jvIHGhvFE,ge/f!hh/ijij,hj!kvIGhvFE//fgFEf,i!jwkjkvJIj) (::) (Z)
(c3) <alt>5 · GB1537 · 37n</alt>me(jvIHGhvFE,ge/f!hh/ijij,hj!kvIGhvFE//fgFEf,i!jwkjkvJIj) (::) (Z)
(c3) <alt>6 · GB5602 · 39n</alt>Dó(ihhf//hiHG;3hiFD;fh/ihhf//hiHG;3hiFD;fd//fvED;3fd/ef//hhv//ik) (::) (Z)
(c4) <alt>7 · GB3949 · 38n</alt>scén(ixdh//jjh//gih/ig//f!gh/jjg,fhgh//fh!jvGFfdf eg/hjh/jhhgh~) (::) (Z)
supertitle:_;
title:Random Gregobase Melismas #12
subtitle:_;
name:random_melismas12
%%
(c4) <alt>1 · GB16 · 42n</alt>á(ixhg/hiHG'ge/gh//egFE'evD'Cd.,hf/ghhddggvFD'Cde.,fhG'ED'efeed) (::) (Z)
(c4) <alt>2 · GB3770 · 47n</alt>ló(ixh/jjh/iggfh//dfEDCd;ixd!fh/jjh/iggfh//dfEDCd,cfe/ffd/ecfffd/ecd) (::) (Z)
(c3) <alt>3 · GB718 · 68n</alt>lá(fhh'hhf//hihhvF'ED,fhF'EfhE'Dfhhf//hjIH.,f!hhjvIH'ihh'hf,gxgvFEfvEDffe/ff//ef!hhf/hjIH'hf.,f/hhf/he) (::) (Z)
(c4) <alt>4 · GB3685 · 38n</alt>túr(gg/h!iw!jvIHG/g/h!iw!jvIHG/ghGD/d/e!fgFED,e!fgFED/d//cd!fvfe) (::) (Z)
(c3) <alt>5 · GB1108 · 37n</alt>mon(jvI'HG'/hvF'E , ge/f!hh/ijij. , hj!kvIG'/hvF'E/fgF'Ef. , i!jwk_j/kvJI'j) (::) (Z)
(c3) <alt>6 · GB492 · 52n</alt>pó(ihhf/hiHG.hiFD.,f!hhi/hhf/hiHG./hiFD.,gxfg//e!g'h/ghg/hvFD.,fdfED//fd/ef/hh/i!jwk) (::) (Z)
(f3) <alt>7 · GB3459 · 32n</alt><alt>Hic genuflectitur.</alt> Ve(kxhi/ji/jkIH//ji/jkIH,jjijvIH//jjijvIH//ji/jiif) (::) (Z)
supertitle:_;
title:Random Gregobase Melismas #13
subtitle:_;
name:random_melismas13
%%
(c4) <alt>1 · GB3851 · 38n</alt>au(ixdh//jjh//gih/ig/f!gh!jjg , fhgh//fh!jvGFfdf eg/hjh/jhhgh) (::) (Z)
(c2) <alt>2 · GB1023 · 66n</alt>tri.(fh/j_h//ivHGhvGFg.;fh/j_h//ivHGhvGFg.,hiHG'hvGF'ED'ed/ed/dc.;cd!ef!gv.hiHG'hvGF'EDfg..,ce/gffvED'C/d_ed/dc.) (::) (Z)
(c4) <alt>3 · GB1433 · 37n</alt>le(cd//fge//gh/fff//fgff/ixg!ii//iijvIHFg , ixiiig//hiFD/fv////ff/gf) (::) (Z)
(f3) <alt>4 · GB3435 · 51n</alt>ne(g!hi//hih/f!gwhgh/fgffe//fg!hvGFEf ; fg!hi//hih/f!gwhgh/fgffe//fg!hvGFEf , fg!hi) (::) (Z)
(c3) <alt>5 · GB8216 · 38n</alt>est.(hghFEe'e/fe/ede.,hhh/ivH'GF'fe/fhG'FE'efd.,f!gwhvGF'gffe.) (::) (Z)
(c4) <alt>6 · GB1094 · 35n</alt>ó(hgh//khjvIGh.,hgh//khjvIGhhh/ig,gh!jvIG'jv//ijhivHG'h) (::) (Z)
(c4) <alt>7 · GB994 · 40n</alt>pá(efE'DgvvFD'ec.,fh//ghF'E//g_dfv.efDC.,e/ghE'DfvED'dc,e/ghE'Dfe) (::) (Z)
supertitle:_;
title:Random Gregobase Melismas #14
subtitle:_;
name:random_melismas14
%%
(c3) <alt>1 · GB1547 · 66n</alt>pa(i/jg/hi//ji/jg/hi,kkh/jijvHF/gwh!iv//giHGE,fhgh//fh//ghFDe;ijIDfe//f!gwh!iv//h!kki,kj/lklvKI kjkvIHiwj) (::) (Z)
(c4) <alt>2 · GB3682 · 62n</alt>ce(ixgh/ig/he,fvEDfe/ge//fvECed/fd;ixce!gh/ig/he,fvEDfe/ge//fvECed/fd;gv//ef/ge/fdev//,gv//ef/ge/fdev//c!dwe!fv) (::) (Z)
(c3) <alt>3 · GB3500 · 63n</alt>De(ih/ghf//hiHG//hiFD , f!hh/ih/ghf//hiHG//hiFD , gxfge!fwg/hf//hg/hvFD , fdfED//fd/ef!hhhf//hi!kkkJIHi) (::) (Z)
(c4) <alt>4 · GB946 · 62n</alt>ce(ixg_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;ixce!g_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;gv.ef/g_e/f_dev.,gv.ef/g_e/f_dev.c!dwe'!fv) (::) (Z)
(c3) <alt>5 · GB553 · 66n</alt>pa(i/jg/h_i//ji/jg/h_i,kkh//jijvHF'gwh!iv.giH'GE,fhgh./fh//ghF'De.;i_jI'Ef_e//f!gwh!iv.h!kki,k_j/l_klvKI.//kjkvIH'iwj) (::) (Z)
(c4) <alt>6 · GB3733 · 62n</alt>dó(ixgh/ig/he , fvED/fe/ge/fvEC/ed/fd ; ixce!gh/ig/he , fvED/fe/ge//fvEC/ed/fd ; gv//ef/ge/fd/ev , gv//ef/ge/fd/ev///c!dwe!fv) (::) (Z)
(c4) <alt>7 · GB946 · 62n</alt>ce(ixg_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;ixce!g_h/ig/h_e,fvEDfe/g_e//fvECed/fd..;gv.ef/g_e/f_dev.,gv.ef/g_e/f_dev.c!dwe'!fv) (::) (Z)
(c3) <alt>8 · GB1601 · 66n</alt>thro(i/jg/hi//ji/jg/hi , kkh/ji/jvHF/gwh!iv//giHGE , fhgh//fh//ghFD/ev ; ijIE/fe//f!gwh!iv//h/kki , kj/lk/lvKI kj/kvIH/iwj) (::) (Z)
supertitle:_;
title:Random Gregobase Melismas #15
subtitle:_;
name:random_melismas15
%%
(c3) <alt>1 · GB718 · 68n</alt>lá(fhh'hhf//hihhvF'ED,fhF'EfhE'Dfhhf//hjIH.,f!hhjvIH'ihh'hf,gxgvFEfvEDffe/ff//ef!hhf/hjIH'hf.,f/hhf/he) (::) (Z)
(c3) <alt>6 · GB553 · 66n</alt>pa(i/jg/h_i//ji/jg/h_i,kkh//jijvHF'gwh!iv.giH'GE,fhgh./fh//ghF'De.;i_jI'Ef_e//f!gwh!iv.h!kki,k_j/l_klvKI.//kjkvIH'iwj) (::) (Z)
(c2) <alt>7 · GB1023 · 66n</alt>tri.(fh/j_h//ivHGhvGFg.;fh/j_h//ivHGhvGFg.,hiHG'hvGF'ED'ed/ed/dc.;cd!ef!gv.hiHG'hvGF'EDfg..,ce/gffvED'C/d_ed/dc.) (::) (Z)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment