layout-ir, engrave: ledger lines
Notes above or below the staff now get ledger lines — the gap the GUI surfaced the moment a note is moved off the staff. Each notehead carries its StaffStep; to_constrained emits one short horizontal stroke per whole step between the staff (lines at steps 0..=8) and the note, reaching LEDGER_LINE_EXTENSION past each side of the note's actual bounding box (so a wide whole note gets a wider ledger), synthesized from the pitch so the strokes are deterministic and hit-testable. The synthesis key splits component (high 64 bits) from signed step (low 64) so two components of a very low note can never collide. Ledger lines are fixed-width marks, not system-spanning lines, so the Engraver's horizontal spacing must not scale them. is_rigid_width_stroke marks them; the remap translates such a stroke rigidly by its *owning glyph's* column delta (found by source, not the stroke midpoint — which for a wide head can fall nearer a neighbouring column), so it keeps both its length and its offset from the notehead. The spacing pass folds each ledger's extent into its notehead's slot, so adjacent off-staff notes' ledgers reserve room and do not overlap. The stub solver passes ledgers through unchanged. Tests cover the step geometry, key distinctness (incl. steps below -128), the bbox span, width preservation and offset (no-drift) through the Engraver, the adjacent-overlap spacing, and an explicit two-whole-note off-staff drift case. Render goldens regenerated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NAtEiJtt9yKVV1zjKYmZhS
|
|
@ -45,12 +45,30 @@ use std::collections::BTreeMap;
|
|||
|
||||
use epiphany_layout_ir::{
|
||||
all_available, Axis, BravuraCatalog, BreakKind, ConstrainedLayoutIR, ConstraintId,
|
||||
ConstraintSolver, GlyphCatalog, GlyphObjectId, InvalidationSet, LayoutConstraint, Margins,
|
||||
Point, QualityMetricVector, Rect, ResolvedGlyph, ResolvedLayoutIR, ResolvedPage,
|
||||
ConstraintSolver, GlyphCatalog, GlyphObject, GlyphObjectId, InvalidationSet, LayoutConstraint,
|
||||
Margins, Point, QualityMetricVector, Rect, ResolvedGlyph, ResolvedLayoutIR, ResolvedPage,
|
||||
ResolvedSystem, Size2D, SolveReport, SolveStatus, SolverBudgetUsed, SolverConfig, SolverState,
|
||||
SolverTier, SolverVersion, SolverWarning, SolverWarningKind, Stroke,
|
||||
};
|
||||
|
||||
/// The glyph a fixed-width stroke (a ledger line) belongs to: the same-source glyph
|
||||
/// whose baseline falls within the stroke's horizontal span (its accidentals sit
|
||||
/// outside the span, to the left). The stroke is anchored to this glyph's column so
|
||||
/// it translates with it — found by source, never inferred from the stroke's own
|
||||
/// midpoint, which for a wide head can fall nearer a neighbouring column.
|
||||
pub(crate) fn owning_glyph<'a>(
|
||||
stroke: &Stroke,
|
||||
glyphs: &'a [GlyphObject],
|
||||
) -> Option<&'a GlyphObject> {
|
||||
let lo = stroke.from.x.0.min(stroke.to.x.0);
|
||||
let hi = stroke.from.x.0.max(stroke.to.x.0);
|
||||
glyphs.iter().find(|g| {
|
||||
g.provenance.source == stroke.provenance.source
|
||||
&& g.baseline.x.0 >= lo
|
||||
&& g.baseline.x.0 <= hi
|
||||
})
|
||||
}
|
||||
|
||||
/// The Epiphany engraving solver (Chapter 9). A `Minimal`-tier solver: it spaces
|
||||
/// glyphs horizontally and satisfies the IR's declared hard constraints. See the
|
||||
/// crate docs for what each tier claims and what remains deferred.
|
||||
|
|
@ -248,18 +266,39 @@ impl HorizontalRemap {
|
|||
.collect()
|
||||
}
|
||||
|
||||
/// Re-maps both endpoints of each stroke, so it tracks the glyphs it spans.
|
||||
/// Re-maps each stroke's endpoints so it tracks the glyphs it spans. A
|
||||
/// system-spanning stroke (staff line, barline, …) maps both endpoints, so it
|
||||
/// stretches with the spacing; a fixed-width stroke (a ledger line on one
|
||||
/// notehead) is translated rigidly by its owning column's delta
|
||||
/// ([`epiphany_layout_ir::is_rigid_width_stroke`]) — preserving both its length
|
||||
/// and its offset from its glyph, which maps by that same delta at its column.
|
||||
fn strokes(&self, input: &ConstrainedLayoutIR) -> Vec<Stroke> {
|
||||
input
|
||||
.strokes
|
||||
.iter()
|
||||
.map(|s| Stroke {
|
||||
provenance: s.provenance.clone(),
|
||||
from: Point::new(self.map(s.from.x.0), s.from.y.0),
|
||||
to: Point::new(self.map(s.to.x.0), s.to.y.0),
|
||||
thickness: s.thickness,
|
||||
layer: s.layer,
|
||||
style: s.style,
|
||||
.map(|s| {
|
||||
let (from_x, to_x) = if epiphany_layout_ir::is_rigid_width_stroke(s) {
|
||||
// Translate rigidly by the *owning glyph's* column delta — found by
|
||||
// source, not the stroke's midpoint, which for a wide head could
|
||||
// pick a neighbouring column and reintroduce drift. The glyph
|
||||
// baseline is a control point, so `map(baseline) − baseline` is its
|
||||
// exact column delta; applying it keeps the stroke's offset from the
|
||||
// glyph and its length.
|
||||
let delta = owning_glyph(s, &input.glyphs)
|
||||
.map(|g| self.map(g.baseline.x.0) - g.baseline.x.0)
|
||||
.unwrap_or(0.0);
|
||||
(s.from.x.0 + delta, s.to.x.0 + delta)
|
||||
} else {
|
||||
(self.map(s.from.x.0), self.map(s.to.x.0))
|
||||
};
|
||||
Stroke {
|
||||
provenance: s.provenance.clone(),
|
||||
from: Point::new(from_x, s.from.y.0),
|
||||
to: Point::new(to_x, s.to.y.0),
|
||||
thickness: s.thickness,
|
||||
layer: s.layer,
|
||||
style: s.style,
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
|
@ -395,7 +434,7 @@ impl ConstraintSolver for Engraver {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use epiphany_core::generators::valid_score_rich;
|
||||
use epiphany_layout_ir::{to_constrained, to_logical, StubSolver};
|
||||
use epiphany_layout_ir::{is_rigid_width_stroke, to_constrained, to_logical, StubSolver};
|
||||
|
||||
fn fixture() -> ConstrainedLayoutIR {
|
||||
to_constrained(&to_logical(&valid_score_rich(11)))
|
||||
|
|
@ -569,6 +608,270 @@ mod tests {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ledger_lines_keep_their_width_through_the_spacing_pass() {
|
||||
// A corpus score with off-staff notes yields ledger strokes; the horizontal
|
||||
// spacing pass must translate them (preserving length), not re-map both
|
||||
// endpoints — which would scale a fixed-width mark with the local spacing.
|
||||
let mut checked = 0;
|
||||
for seed in 0..16 {
|
||||
let input = to_constrained(&to_logical(&valid_score_rich(seed)));
|
||||
let widths: std::collections::HashMap<u128, f32> = input
|
||||
.strokes
|
||||
.iter()
|
||||
.filter(|s| is_rigid_width_stroke(s))
|
||||
.map(|s| (s.provenance.stable_id.0, s.to.x.0 - s.from.x.0))
|
||||
.collect();
|
||||
if widths.is_empty() {
|
||||
continue;
|
||||
}
|
||||
let report = Engraver.solve(&input, &SolverConfig::default());
|
||||
for s in report
|
||||
.layout
|
||||
.strokes
|
||||
.iter()
|
||||
.filter(|s| is_rigid_width_stroke(s))
|
||||
{
|
||||
if let Some(&w_in) = widths.get(&s.provenance.stable_id.0) {
|
||||
let w_out = s.to.x.0 - s.from.x.0;
|
||||
assert!(
|
||||
(w_out - w_in).abs() < 1e-4,
|
||||
"ledger width changed through spacing: {w_in} -> {w_out}"
|
||||
);
|
||||
checked += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(checked > 0, "no ledger strokes exercised across 16 seeds");
|
||||
}
|
||||
|
||||
/// Two whole notes (wide heads) a step above the staff, in adjacent time
|
||||
/// columns — the case where a ledger's own midpoint can fall nearer the next
|
||||
/// column than its notehead's.
|
||||
fn two_off_staff_whole_notes() -> ConstrainedLayoutIR {
|
||||
use epiphany_core::{
|
||||
CmnNominal, EventId, MusicalDuration, MusicalPosition, NotatedComponent, NoteValue,
|
||||
PitchId, PitchSpelling, RationalTime, RegionId, StaffId, StaffInstanceId,
|
||||
TypedObjectId,
|
||||
};
|
||||
use epiphany_layout_ir::{
|
||||
LayoutContent, LayoutObject, LayoutRegion, LocalCoordinateSystem, LogicalLayoutIR,
|
||||
MetricTimeAxis, NoteContent, NotePitch, PlacedComponent, Provenance, ScoreVersion,
|
||||
StaffContent, TimeAxisModel, TimePoint, VerticalExtent,
|
||||
};
|
||||
let region = RegionId::from_raw(1);
|
||||
let staff = StaffId::from_raw(10);
|
||||
let manifested = |src, content| {
|
||||
LayoutObject::from_projection_with_content(
|
||||
Provenance::manifested(src, region, vec![]),
|
||||
Some(staff),
|
||||
content,
|
||||
)
|
||||
};
|
||||
let whole = || {
|
||||
vec![PlacedComponent {
|
||||
offset: MusicalDuration::zero(),
|
||||
component: NotatedComponent {
|
||||
base_value: NoteValue::Whole,
|
||||
dots: 0,
|
||||
tuplet: None,
|
||||
tied_to_next: false,
|
||||
},
|
||||
tuplet: None,
|
||||
}]
|
||||
};
|
||||
let note = |eid: u128, pid: u128, pos: MusicalPosition| {
|
||||
let pitch = PitchId::from_raw(pid);
|
||||
[
|
||||
manifested(
|
||||
TypedObjectId::Event(EventId::from_raw(eid)),
|
||||
LayoutContent::Note(NoteContent {
|
||||
position: TimePoint::Musical(pos),
|
||||
components: whole(),
|
||||
// C6 is a step above the treble staff, so each head earns
|
||||
// ledger lines.
|
||||
pitches: vec![NotePitch {
|
||||
pitch,
|
||||
spelling: Some(PitchSpelling::cmn(CmnNominal::C, 6)),
|
||||
}],
|
||||
}),
|
||||
),
|
||||
manifested(TypedObjectId::Pitch(pitch), LayoutContent::Structural),
|
||||
]
|
||||
};
|
||||
let mut objects = vec![manifested(
|
||||
TypedObjectId::StaffInstance(StaffInstanceId::from_raw(1)),
|
||||
LayoutContent::Staff(StaffContent {
|
||||
clefs: vec![],
|
||||
keys: vec![],
|
||||
}),
|
||||
)];
|
||||
objects.extend(note(1, 101, MusicalPosition::origin()));
|
||||
objects.extend(note(
|
||||
2,
|
||||
102,
|
||||
MusicalPosition(RationalTime::new(1, 1).unwrap()),
|
||||
));
|
||||
let logical = LogicalLayoutIR {
|
||||
source: ScoreVersion::default(),
|
||||
regions: vec![LayoutRegion {
|
||||
provenance: Provenance::projected(TypedObjectId::Region(region), vec![]),
|
||||
coordinate_system: LocalCoordinateSystem::default(),
|
||||
time_axis: TimeAxisModel::Metric(MetricTimeAxis::default()),
|
||||
vertical_extent: VerticalExtent {
|
||||
staves: vec![staff],
|
||||
},
|
||||
objects,
|
||||
}],
|
||||
engraving_decisions: vec![],
|
||||
overrides: vec![],
|
||||
cross_region: vec![],
|
||||
};
|
||||
to_constrained(&logical)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn an_off_staff_whole_note_ledger_does_not_drift() {
|
||||
let input = two_off_staff_whole_notes();
|
||||
assert!(
|
||||
input
|
||||
.glyphs
|
||||
.iter()
|
||||
.any(|g| g.glyph.as_str() == "noteheadWhole"),
|
||||
"the fixture engraves whole notes"
|
||||
);
|
||||
let ledger_count = input
|
||||
.strokes
|
||||
.iter()
|
||||
.filter(|s| is_rigid_width_stroke(s))
|
||||
.count();
|
||||
assert!(
|
||||
ledger_count >= 2,
|
||||
"off-staff whole notes earn ledger strokes"
|
||||
);
|
||||
|
||||
let report = Engraver.solve(&input, &SolverConfig::default());
|
||||
// The wide whole-note columns re-space (their deltas differ), so a midpoint-
|
||||
// anchored ledger would translate by a neighbouring column's delta and drift.
|
||||
// The owning-glyph anchor keeps every ledger at its notehead's offset.
|
||||
for s_in in input.strokes.iter().filter(|s| is_rigid_width_stroke(s)) {
|
||||
let g_in = owning_glyph(s_in, &input.glyphs).expect("owning notehead");
|
||||
let s_out = report
|
||||
.layout
|
||||
.strokes
|
||||
.iter()
|
||||
.find(|s| s.provenance.stable_id == s_in.provenance.stable_id)
|
||||
.expect("stroke survives");
|
||||
let g_out = report
|
||||
.layout
|
||||
.glyphs
|
||||
.iter()
|
||||
.find(|g| g.provenance.stable_id == g_in.provenance.stable_id)
|
||||
.expect("glyph survives");
|
||||
let offset_in = s_in.from.x.0 - g_in.baseline.x.0;
|
||||
let offset_out = s_out.from.x.0 - g_out.position.x.0;
|
||||
assert!(
|
||||
(offset_out - offset_in).abs() < 1e-4,
|
||||
"whole-note ledger drifted {offset_in} -> {offset_out}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ledger_offsets_from_the_notehead_survive_the_engraver() {
|
||||
// The column-delta translation keeps a ledger at exactly the same offset from
|
||||
// its notehead through the spacing pass; interpolating its midpoint (the bug
|
||||
// this replaced) would shift it under a non-unit local slope.
|
||||
let mut checked = 0;
|
||||
for seed in 0..16 {
|
||||
let input = to_constrained(&to_logical(&valid_score_rich(seed)));
|
||||
let report = Engraver.solve(&input, &SolverConfig::default());
|
||||
for s_in in input.strokes.iter().filter(|s| is_rigid_width_stroke(s)) {
|
||||
let lo = s_in.from.x.0.min(s_in.to.x.0);
|
||||
let hi = s_in.from.x.0.max(s_in.to.x.0);
|
||||
let Some(g_in) = input.glyphs.iter().find(|g| {
|
||||
g.provenance.source == s_in.provenance.source
|
||||
&& g.baseline.x.0 >= lo
|
||||
&& g.baseline.x.0 <= hi
|
||||
}) else {
|
||||
continue;
|
||||
};
|
||||
let Some(s_out) = report
|
||||
.layout
|
||||
.strokes
|
||||
.iter()
|
||||
.find(|s| s.provenance.stable_id == s_in.provenance.stable_id)
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
let Some(g_out) = report
|
||||
.layout
|
||||
.glyphs
|
||||
.iter()
|
||||
.find(|g| g.provenance.stable_id == g_in.provenance.stable_id)
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
let offset_in = s_in.from.x.0 - g_in.baseline.x.0;
|
||||
let offset_out = s_out.from.x.0 - g_out.position.x.0;
|
||||
assert!(
|
||||
(offset_out - offset_in).abs() < 1e-4,
|
||||
"seed {seed}: ledger offset drifted {offset_in} -> {offset_out}"
|
||||
);
|
||||
checked += 1;
|
||||
}
|
||||
}
|
||||
assert!(checked > 0, "no ledger/notehead pairs exercised");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn adjacent_ledger_lines_are_spaced_not_overlapping() {
|
||||
use std::collections::HashMap;
|
||||
// The spacing pass reserves room for ledger overhang, so two off-staff notes
|
||||
// that share a ledger height (same step) and sit in neighbouring columns get
|
||||
// ledger strokes that do not overlap.
|
||||
let mut ledgers = 0;
|
||||
let mut pairs = 0;
|
||||
for seed in 0..32 {
|
||||
let report = Engraver.solve(
|
||||
&to_constrained(&to_logical(&valid_score_rich(seed))),
|
||||
&SolverConfig::default(),
|
||||
);
|
||||
let mut by_height: HashMap<i64, Vec<(f32, f32, _)>> = HashMap::new();
|
||||
for s in report
|
||||
.layout
|
||||
.strokes
|
||||
.iter()
|
||||
.filter(|s| is_rigid_width_stroke(s))
|
||||
{
|
||||
ledgers += 1;
|
||||
let y = (s.from.y.0 * 1024.0).round() as i64;
|
||||
let (lo, hi) = (s.from.x.0.min(s.to.x.0), s.from.x.0.max(s.to.x.0));
|
||||
by_height
|
||||
.entry(y)
|
||||
.or_default()
|
||||
.push((lo, hi, s.provenance.source));
|
||||
}
|
||||
for group in by_height.values_mut() {
|
||||
group.sort_by(|a, b| a.0.total_cmp(&b.0));
|
||||
for w in group.windows(2) {
|
||||
// Distinct notes' ledgers at the same height must not overlap.
|
||||
if w[0].2 != w[1].2 {
|
||||
pairs += 1;
|
||||
assert!(
|
||||
w[0].1 <= w[1].0 + 1e-3,
|
||||
"seed {seed}: ledger lines overlap ({:?} vs {:?})",
|
||||
w[0],
|
||||
w[1]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(ledgers > 0, "the corpus exercised no ledger lines");
|
||||
assert!(pairs > 0, "no adjacent same-height ledger pairs to check");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn solves_the_stub_pipeline_and_preserves_provenance() {
|
||||
let input = fixture();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@
|
|||
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use epiphany_layout_ir::{ConstrainedLayoutIR, SpringSlotId};
|
||||
use epiphany_layout_ir::{is_rigid_width_stroke, ConstrainedLayoutIR, SpringSlotId};
|
||||
|
||||
use crate::owning_glyph;
|
||||
|
||||
/// Inter-slot gap (staff spaces) reserved between one slot's right content and
|
||||
/// the next slot's left content.
|
||||
|
|
@ -71,6 +73,25 @@ pub(crate) fn control_points(input: &ConstrainedLayoutIR) -> Vec<(f32, f32)> {
|
|||
});
|
||||
}
|
||||
|
||||
// Fold each ledger line (a fixed-width stroke) into its notehead's slot extent,
|
||||
// so a ledger that overhangs the notehead reserves room — otherwise adjacent
|
||||
// off-staff notes' ledgers can overlap even though glyph spacing is collision-
|
||||
// aware. The owning notehead is the same-source glyph whose baseline lies within
|
||||
// the stroke's span (its accidentals sit outside it, to the left).
|
||||
for stroke in &input.strokes {
|
||||
if !is_rigid_width_stroke(stroke) {
|
||||
continue;
|
||||
}
|
||||
if let Some(glyph) = owning_glyph(stroke, &input.glyphs) {
|
||||
let lo = stroke.from.x.0.min(stroke.to.x.0);
|
||||
let hi = stroke.from.x.0.max(stroke.to.x.0);
|
||||
if let Some(extent) = by_slot.get_mut(&glyph.horizontal_slot) {
|
||||
extent.min_left = extent.min_left.min(lo);
|
||||
extent.max_right = extent.max_right.max(hi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut slots: Vec<Extent> = by_slot.into_values().collect();
|
||||
slots.sort_by(|a, b| {
|
||||
a.source
|
||||
|
|
|
|||
|
|
@ -464,6 +464,8 @@ const TIME_DIGIT_X: f32 = 0.8; // x advance per time-signature digit
|
|||
/// five lines share its source, so four of them must be synthesized to earn
|
||||
/// distinct stable ids; this is the kind they declare.
|
||||
const STAFF_LINE_SYNTHESIS: SynthesisRegistryId = SynthesisRegistryId(0x5354_4146_465F_4C4E); // "STAFFLN"
|
||||
const LEDGER_LINE_SYNTHESIS: SynthesisRegistryId = SynthesisRegistryId(0x4C45_4447_4552_4C4E); // "LEDGERLN"
|
||||
const LEDGER_LINE_EXTENSION: f32 = 0.3; // a ledger line reaches this far past the notehead, each side
|
||||
|
||||
/// The registry id for **notated-component synthesis**: a note/rest notated as a
|
||||
/// tied decomposition (e.g. a quarter tied to an eighth across a barline) draws
|
||||
|
|
@ -654,6 +656,7 @@ pub fn try_to_constrained(
|
|||
name,
|
||||
key: key.clone(),
|
||||
y,
|
||||
step,
|
||||
comp,
|
||||
accidentals,
|
||||
});
|
||||
|
|
@ -984,6 +987,31 @@ pub fn try_to_constrained(
|
|||
staff,
|
||||
info.slot,
|
||||
);
|
||||
// Ledger lines: short strokes continuing the staff to a
|
||||
// notehead above or below it, one per whole step between
|
||||
// the staff and the note, reaching `LEDGER_LINE_EXTENSION`
|
||||
// past each side of *this notehead's* drawn box — so a
|
||||
// wider head (a whole note) gets a wider ledger. Synthesized
|
||||
// from the pitch; render-svg draws strokes under glyphs at a
|
||||
// layer, so the notehead sits over them.
|
||||
let head_box = metrics(head.name).map(|m| m.bounding_box());
|
||||
let head_left = head_box.map_or(0.0, |b| b.left.0);
|
||||
let head_right = head_box.map_or(NOTEHEAD_STEM_X, |b| b.right.0);
|
||||
for ledger_step in ledger_steps(head.step) {
|
||||
let y = step_to_y(yo, ledger_step);
|
||||
let ledger_provenance = Provenance::synthesized(
|
||||
provenance.source,
|
||||
SynthesisKind::Registered(LEDGER_LINE_SYNTHESIS),
|
||||
ledger_line_key(head.comp, ledger_step),
|
||||
provenance.dependencies.clone(),
|
||||
);
|
||||
emit.stroke(line_stroke(
|
||||
ledger_provenance,
|
||||
Point::new(info.x + head_left - LEDGER_LINE_EXTENSION, y),
|
||||
Point::new(info.x + head_right + LEDGER_LINE_EXTENSION, y),
|
||||
STAFF_LINE_THICKNESS,
|
||||
));
|
||||
}
|
||||
// The spelling's accidental stack: synthesized glyphs
|
||||
// left of the notehead (innermost nearest it), at its
|
||||
// staff position, sharing the notehead's column slot.
|
||||
|
|
@ -1188,6 +1216,8 @@ struct Head {
|
|||
name: &'static str,
|
||||
key: ColumnKey,
|
||||
y: f32,
|
||||
/// The note's diatonic staff position, for ledger-line emission.
|
||||
step: StaffStep,
|
||||
comp: usize,
|
||||
/// The spelling's accidental stack (innermost — nearest the notehead — first),
|
||||
/// each drawn left of the notehead. Present only on the first component (a tie
|
||||
|
|
@ -1532,6 +1562,49 @@ fn step_to_y(y_origin: f32, step: StaffStep) -> f32 {
|
|||
y_origin + step as f32 * 0.5
|
||||
}
|
||||
|
||||
/// The staff steps at which a note at `step` needs ledger lines: the even steps
|
||||
/// strictly outside the five-line staff (whose lines are the even steps `0..=8`),
|
||||
/// from the staff out to the note. Empty when the note is on or within the staff,
|
||||
/// or one space just outside it (an odd step at `±1` from the nearest line). At
|
||||
/// most one of the two loops runs, since a step cannot be both above and below.
|
||||
fn ledger_steps(step: StaffStep) -> Vec<StaffStep> {
|
||||
let mut steps = Vec::new();
|
||||
let mut above = 10;
|
||||
while above <= step {
|
||||
steps.push(above);
|
||||
above += 2;
|
||||
}
|
||||
let mut below = -2;
|
||||
while below >= step {
|
||||
steps.push(below);
|
||||
below -= 2;
|
||||
}
|
||||
steps
|
||||
}
|
||||
|
||||
/// A distinct synthesis key for a ledger line on component `comp` at diatonic
|
||||
/// `step`. The component occupies the high 64 bits and the signed step the low 64,
|
||||
/// so the two fields never overlap — including a step below `-128`, whose
|
||||
/// two's-complement low bits would otherwise reach into the component field and let
|
||||
/// two components of a very low pitch mint colliding stable ids.
|
||||
fn ledger_line_key(comp: usize, step: StaffStep) -> SynthesisInstanceKey {
|
||||
SynthesisInstanceKey(((comp as u128) << 64) | (step as i64 as u64 as u128))
|
||||
}
|
||||
|
||||
/// Whether a stroke must keep a **fixed width** when a solver resolves horizontal
|
||||
/// spacing: its length is a glyph-relative constant, not a span across the columns
|
||||
/// the spacing pass stretches. A solver should translate such a stroke (preserving
|
||||
/// its length) rather than re-map both endpoints, which would scale it. Ledger lines
|
||||
/// are the case today — a fixed-width mark centered on one notehead, unlike a staff
|
||||
/// line or barline that genuinely spans the system. Public so the constraint solver
|
||||
/// can honor it without hard-coding the ledger synthesis identity.
|
||||
pub fn is_rigid_width_stroke(stroke: &Stroke) -> bool {
|
||||
matches!(
|
||||
stroke.provenance.synthesis,
|
||||
Some(SynthesisKind::Registered(k)) if k == LEDGER_LINE_SYNTHESIS
|
||||
)
|
||||
}
|
||||
|
||||
/// The staff step of a clef's reference line — a neutral fallback position for a
|
||||
/// pitch whose spelling does not resolve to a CMN nominal.
|
||||
fn reference_step(clef: &Clef) -> StaffStep {
|
||||
|
|
@ -1627,6 +1700,93 @@ mod tests {
|
|||
use epiphany_core::generators::valid_score_rich;
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
#[test]
|
||||
fn ledger_steps_cover_only_lines_outside_the_staff() {
|
||||
// Within the five-line staff (steps 0..=8) and one space just outside: none.
|
||||
for step in [-1, 0, 4, 8, 9] {
|
||||
assert!(ledger_steps(step).is_empty(), "no ledger at step {step}");
|
||||
}
|
||||
// First ledger above (step 10) and below (-2): exactly one line, on the note.
|
||||
assert_eq!(ledger_steps(10), vec![10]);
|
||||
assert_eq!(ledger_steps(-2), vec![-2]);
|
||||
// A note in the space above the first ledger still needs just that line.
|
||||
assert_eq!(ledger_steps(11), vec![10]);
|
||||
// Two lines above / below, in order from the staff outward.
|
||||
assert_eq!(ledger_steps(12), vec![10, 12]);
|
||||
assert_eq!(ledger_steps(-4), vec![-2, -4]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ledger_line_keys_are_distinct_across_components_and_low_steps() {
|
||||
// The high/low 64-bit split keeps the component and step fields disjoint —
|
||||
// including a step below -128, whose two's-complement low bits are large and,
|
||||
// under a naive `(comp << small) | (step + bias)`, would reach into the
|
||||
// component field and collide with another component's key.
|
||||
let mut seen = std::collections::HashSet::new();
|
||||
for comp in 0..3usize {
|
||||
for step in [-300, -200, -130, -128, -2, 10, 200] {
|
||||
assert!(
|
||||
seen.insert(ledger_line_key(comp, step).0),
|
||||
"ledger key collision at comp={comp} step={step}"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_ledger_line_spans_its_notehead() {
|
||||
// The ledger reaches past the notehead on both sides, for any notehead width
|
||||
// — a whole note's head is wider than a black head, and the ledger must use
|
||||
// the real bounding box, not a fixed notehead width.
|
||||
let mut checked = 0;
|
||||
for seed in 0..32 {
|
||||
let c = to_constrained(&to_logical(&valid_score_rich(seed)));
|
||||
for s in c.strokes.iter().filter(|s| is_rigid_width_stroke(s)) {
|
||||
let lo = s.from.x.0.min(s.to.x.0);
|
||||
let hi = s.from.x.0.max(s.to.x.0);
|
||||
// The owning notehead: same source, baseline within the stroke span.
|
||||
if let Some(g) = c.glyphs.iter().find(|g| {
|
||||
g.provenance.source == s.provenance.source
|
||||
&& g.baseline.x.0 >= lo
|
||||
&& g.baseline.x.0 <= hi
|
||||
}) {
|
||||
let head_left = g.baseline.x.0 + g.bounding_box.left.0;
|
||||
let head_right = g.baseline.x.0 + g.bounding_box.right.0;
|
||||
assert!(
|
||||
lo <= head_left + 1e-4 && hi >= head_right - 1e-4,
|
||||
"seed {seed}: ledger [{lo}, {hi}] does not span notehead [{head_left}, {head_right}]"
|
||||
);
|
||||
checked += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(checked > 0, "no ledger/notehead pairs to check");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_note_far_above_the_staff_gets_ledger_strokes() {
|
||||
// A constrained layout of the rich corpus has noteheads across the range; at
|
||||
// least one sits far enough off the staff to earn a ledger line, emitted as a
|
||||
// synthesized stroke sourced from its pitch.
|
||||
let mut any_ledger = false;
|
||||
for seed in 0..16 {
|
||||
let c = to_constrained(&to_logical(&valid_score_rich(seed)));
|
||||
if c.strokes.iter().any(|s| {
|
||||
matches!(
|
||||
s.provenance.synthesis,
|
||||
Some(SynthesisKind::Registered(k)) if k == LEDGER_LINE_SYNTHESIS
|
||||
)
|
||||
}) {
|
||||
any_ledger = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
assert!(
|
||||
any_ledger,
|
||||
"no ledger-line strokes across 16 rich-corpus seeds"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn out_of_range_finite_stroke_thickness_is_rejected() {
|
||||
let mut c = to_constrained(&to_logical(&valid_score_rich(11)));
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ pub use cache::{
|
|||
ResolvedSystemCache, SystemId,
|
||||
};
|
||||
pub use constrained::{
|
||||
to_constrained, try_to_constrained, Axis, BreakKind, ConstrainedLayoutIR,
|
||||
ConstrainedLayoutRegion, ConstrainedValidationError, ConstraintParameters,
|
||||
is_rigid_width_stroke, to_constrained, try_to_constrained, Axis, BreakKind,
|
||||
ConstrainedLayoutIR, ConstrainedLayoutRegion, ConstrainedValidationError, ConstraintParameters,
|
||||
ConstraintRegistryId, GlyphObject, GlyphObjectId, GlyphStyle, LayoutConstraint,
|
||||
LayoutTransformError, SpringSlot, Stroke,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ fixture=ten_measure_single_staff solver=engrave
|
|||
glyph_count=51
|
||||
path_count=51
|
||||
fallback_rect_count=0
|
||||
stroke_count=51
|
||||
provenance_count=102
|
||||
stroke_count=91
|
||||
provenance_count=142
|
||||
layer_count=1
|
||||
hard_constraint_count=0
|
||||
xml_well_formed=true
|
||||
view_box=[-3.059857 -3.632 82.456436 11.024]
|
||||
view_box=[-3.059857 -3.632 102.98304 11.024]
|
||||
class_counts:
|
||||
barline=10
|
||||
clef=1
|
||||
|
|
|
|||
|
|
@ -1,110 +1,150 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="824.5643" height="110.24" viewBox="0 0 82.4564 11.024">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1029.8304" height="110.24" viewBox="0 0 102.983 11.024">
|
||||
<!-- epiphany-render-svg: glyphs are genuine Bravura SMuFL outlines inlined as paths; geometry is the resolved layout verbatim, no engraving performed here; every glyph and stroke carries a data-prov trace to its score-graph source -->
|
||||
<g transform="translate(3.0599 7.392) scale(1 -1)">
|
||||
<g data-layer="0">
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="01550dc9d118134419219044f188e28a" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="0" x2="76.7265" y2="0" stroke="#000000" stroke-width="0.13" data-prov="5235156954d3cdda987a3da1af222a55" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="1" x2="76.7265" y2="1" stroke="#000000" stroke-width="0.13" data-prov="10cbe3e182e937b8e3d90a03397b2e97" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="2" x2="76.7265" y2="2" stroke="#000000" stroke-width="0.13" data-prov="94825cd467fe6fb512d271e66b59674a" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="3" x2="76.7265" y2="3" stroke="#000000" stroke-width="0.13" data-prov="bc2cd26cec8e4650eedcf04fbc91320f" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="4" x2="76.7265" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c46b9445a4c5ff909f50b13f9025c4a3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="0" x2="97.2984" y2="0" stroke="#000000" stroke-width="0.13" data-prov="5235156954d3cdda987a3da1af222a55" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="1" x2="97.2984" y2="1" stroke="#000000" stroke-width="0.13" data-prov="10cbe3e182e937b8e3d90a03397b2e97" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="2" x2="97.2984" y2="2" stroke="#000000" stroke-width="0.13" data-prov="94825cd467fe6fb512d271e66b59674a" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="3" x2="97.2984" y2="3" stroke="#000000" stroke-width="0.13" data-prov="bc2cd26cec8e4650eedcf04fbc91320f" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="4" x2="97.2984" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c46b9445a4c5ff909f50b13f9025c4a3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="fe116eb75ff697f9f2451c10c05349c6" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="5.5627" y1="-1" x2="5.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="dbd573fbc0c21f9b07a8537f658b048c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="7.0627" y1="-1" x2="7.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="276b6f72f2bcb818f84229b6833ce022" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="8.5627" y1="-1" x2="8.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d1b0067ebb2b2b9115a77aaadc53bffe" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="10.0627" y1="-1" x2="10.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="13303d184ca25b99835d71e21f3a96df" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="13.0627" y1="-1" x2="13.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="aa33134cf72cebda65d1b2b427230541" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="14.5627" y1="-1" x2="14.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="01d06ae931cf05983e4b17744108297b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="16.0627" y1="-1" x2="16.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="47c9ce76466974ecfabe4a9cafb75c3c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="17.5627" y1="-1" x2="17.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e6d1c0a44d13be2700ad4381e1d518fa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="20.5627" y1="-1" x2="20.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="370a65aab516f6792e49a1ed28bd5cd9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="22.0627" y1="-1" x2="22.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="75b4bca159d5c28b10b2078bb457bb53" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="23.5627" y1="-1" x2="23.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="c4531390972e55a43af2bd9f85e3c250" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="25.0627" y1="-1" x2="25.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="888c6ef019fc4b0fc714672a4444c60c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="28.0627" y1="-1" x2="28.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="6c70ad9006ed8fbb104d77eba3f2dbcb" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="29.5627" y1="-1" x2="29.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="debe82da2c34817a871d8a4cc5cc3fdd" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="31.0627" y1="-1" x2="31.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7b524c2e9e5657b68fd1a81337887c2e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="32.5627" y1="-1" x2="32.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cb31fbbd4a3e3eb17ed06e65f40589e5" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="35.5627" y1="-1" x2="35.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bc1cc9bede7fc3c72827cfbf184cdb7e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="37.0627" y1="-1" x2="37.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="95891bc2b58231a1618b5d422e6131b0" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="38.5627" y1="-1" x2="38.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="ed21002861831422bdbb36e8f981d2a9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="40.0627" y1="-1" x2="40.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e49748251746a6dbdf15aa8dd983e6e7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="43.0627" y1="-1" x2="43.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8d2938a01abfe451991829fbde6d2b94" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="44.5627" y1="-1" x2="44.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="88366a6edcce03db41d39d08b2616742" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="46.0627" y1="-1" x2="46.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="77a10c7862f0ffce98d309bb71ce675f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="47.5627" y1="-1" x2="47.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cfa457e70519a1826f321a56cb3fd03b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="50.5627" y1="-1" x2="50.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="273d04eeece605789035a29d80023c2c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="52.0627" y1="-1" x2="52.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="a23b09fda2784b566bf1de48e89a2baa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="53.5627" y1="-1" x2="53.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="edf9ca4611cfc17faace6241cae3b73d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="55.0627" y1="-1" x2="55.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="f1e3c0367633266d5f188e5bd6d98ad4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="58.0627" y1="-1" x2="58.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="2bf824905032462ee8c9988b780feabf" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="59.5627" y1="-1" x2="59.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="08a65aebf8baaded74feb3ec7cc36d18" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="61.0627" y1="-1" x2="61.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d155779804ad660f4466745153872349" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="62.5627" y1="-1" x2="62.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="af73177552d5fa95b746caf62d000623" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="65.5627" y1="-1" x2="65.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7c839e4fb5f2522c8fde3b48577eafae" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="67.0627" y1="-1" x2="67.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0c8e0b8170c827494e606d4541ce2c89" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="68.5627" y1="-1" x2="68.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="42480ffc14ad129d8dec456e7bad317c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="70.0627" y1="-1" x2="70.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0f408610c63793003f04e3af5a03493f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="71.5627" y1="-1" x2="71.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="99d50b32a7d1eac1019c14132a834144" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="73.0627" y1="-1" x2="73.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="572e96450f21b18771e510c6c41444dc" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="74.5627" y1="-1" x2="74.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="68935c410dbe357c3f80b01c6e6d3cb1" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="75.541" y1="-1" x2="75.541" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="9e9ba65603d31963bdc6d55dfacc5eba" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="5.98" y1="-1" x2="5.98" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="dbd573fbc0c21f9b07a8537f658b048c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="4.1846" y1="-1" x2="5.9652" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="07ffb45f25e59b0955bd4e248522b2ef" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="8.0607" y1="-1" x2="8.0607" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="276b6f72f2bcb818f84229b6833ce022" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="6.2652" y1="-1" x2="8.0459" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3539af5cd23dc6ca259a35fef4aa45c2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="10.1414" y1="-1" x2="10.1414" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d1b0067ebb2b2b9115a77aaadc53bffe" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="8.3459" y1="-1" x2="10.1266" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9b43d5d2a83ce1086364f6f3ac4b5ba2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="12.0064" y1="-1" x2="12.0064" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="13303d184ca25b99835d71e21f3a96df" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="10.4266" y1="-1" x2="12.2072" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="d6c7a9458a06532e1c7507e71363c0dd" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="15.5027" y1="-1" x2="15.5027" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="aa33134cf72cebda65d1b2b427230541" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="13.7072" y1="-1" x2="15.4879" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="20fbe0162b0bc4dd93e2c3e3da73bb83" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="17.5834" y1="-1" x2="17.5834" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="01d06ae931cf05983e4b17744108297b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="15.7879" y1="-1" x2="17.5686" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="cd9abf9ed66ab876f68b9d88ce1e5199" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="19.664" y1="-1" x2="19.664" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="47c9ce76466974ecfabe4a9cafb75c3c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="17.8686" y1="-1" x2="19.6492" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="7ade41165c11102f29e87cb09eb3f88f" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="21.5291" y1="-1" x2="21.5291" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e6d1c0a44d13be2700ad4381e1d518fa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="19.9492" y1="-1" x2="21.7299" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="32c2aa89808756c46e8b7afcfb2eb057" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="25.0254" y1="-1" x2="25.0254" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="370a65aab516f6792e49a1ed28bd5cd9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="23.2299" y1="-1" x2="25.0105" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="0a3ae3c155d29c21e266e663a8b1b214" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="27.106" y1="-1" x2="27.106" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="75b4bca159d5c28b10b2078bb457bb53" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="25.3105" y1="-1" x2="27.0912" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c27e3e835224dc54cef9b36818099cd0" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="29.1867" y1="-1" x2="29.1867" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="c4531390972e55a43af2bd9f85e3c250" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="27.3912" y1="-1" x2="29.1719" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="4b43990bc25bf4afffda3e2a7d4dcab7" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="31.0517" y1="-1" x2="31.0517" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="888c6ef019fc4b0fc714672a4444c60c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="29.4719" y1="-1" x2="31.2525" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="8e120598410629bb86883f318071a6b5" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="34.548" y1="-1" x2="34.548" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="6c70ad9006ed8fbb104d77eba3f2dbcb" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="32.7525" y1="-1" x2="34.5332" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="6d2724bb96160f831b4e987ce6b4349a" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="36.6287" y1="-1" x2="36.6287" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="debe82da2c34817a871d8a4cc5cc3fdd" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="34.8332" y1="-1" x2="36.6139" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="7a9f84c8590c7e8156fd929e35153cf8" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="38.7093" y1="-1" x2="38.7093" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7b524c2e9e5657b68fd1a81337887c2e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="36.9139" y1="-1" x2="38.6945" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c4a9602f838e0ea74a9fe68da12baff2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="40.5744" y1="-1" x2="40.5744" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cb31fbbd4a3e3eb17ed06e65f40589e5" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="38.9945" y1="-1" x2="40.7752" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="76860486e62be8520184bb3e8c284d94" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="44.0707" y1="-1" x2="44.0707" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bc1cc9bede7fc3c72827cfbf184cdb7e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="42.2752" y1="-1" x2="44.0558" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a3fd2ae47f432e61881cb1e44a7108e6" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="46.1513" y1="-1" x2="46.1513" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="95891bc2b58231a1618b5d422e6131b0" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="44.3558" y1="-1" x2="46.1365" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a9e2ee2be83c0a4978db517bf182efe9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="48.232" y1="-1" x2="48.232" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="ed21002861831422bdbb36e8f981d2a9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="46.4365" y1="-1" x2="48.2172" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="2bac60a88ddddcf403dd6edfb67b5bb0" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="50.097" y1="-1" x2="50.097" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e49748251746a6dbdf15aa8dd983e6e7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="48.5172" y1="-1" x2="50.2978" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a592bc951f4afa64726aa30ccdd6ddfa" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="53.5933" y1="-1" x2="53.5933" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8d2938a01abfe451991829fbde6d2b94" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="51.7978" y1="-1" x2="53.5785" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c73f1aad686621adde07e7fe7b160ad7" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="55.674" y1="-1" x2="55.674" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="88366a6edcce03db41d39d08b2616742" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="53.8785" y1="-1" x2="55.6591" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="4e052448582a8fdc672f38b02dc205e1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="57.7546" y1="-1" x2="57.7546" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="77a10c7862f0ffce98d309bb71ce675f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="55.9591" y1="-1" x2="57.7398" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="68c691f2336e5a322116641b9f2f7054" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="59.6197" y1="-1" x2="59.6197" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cfa457e70519a1826f321a56cb3fd03b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="58.0398" y1="-1" x2="59.8205" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3c3f0d6b5ab00374d7628cd6f9876bc9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="63.116" y1="-1" x2="63.116" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="273d04eeece605789035a29d80023c2c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="61.3205" y1="-1" x2="63.1011" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9ec226573f8ea2320fc444c562163ddb" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="65.1966" y1="-1" x2="65.1966" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="a23b09fda2784b566bf1de48e89a2baa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="63.4011" y1="-1" x2="65.1818" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9e3345d5dddffbb9cf263a1708fc2589" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="67.2773" y1="-1" x2="67.2773" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="edf9ca4611cfc17faace6241cae3b73d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="65.4818" y1="-1" x2="67.2625" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="ea06a5b83026202fbe3eed55ca3680c9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="69.1423" y1="-1" x2="69.1423" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="f1e3c0367633266d5f188e5bd6d98ad4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="67.5625" y1="-1" x2="69.3431" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="b8d324f0620ebb59f66346b61a4d214e" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="72.6386" y1="-1" x2="72.6386" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="2bf824905032462ee8c9988b780feabf" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="70.8431" y1="-1" x2="72.6238" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="579f0f80918268f1ba03890d14832b56" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="74.7193" y1="-1" x2="74.7193" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="08a65aebf8baaded74feb3ec7cc36d18" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="72.9238" y1="-1" x2="74.7045" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="f04f04c436808c53ab1c2b169d7f5a33" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="76.7999" y1="-1" x2="76.7999" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d155779804ad660f4466745153872349" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="75.0045" y1="-1" x2="76.7851" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3b9174fe7361dbfc454fbe17b9ec81b1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="78.665" y1="-1" x2="78.665" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="af73177552d5fa95b746caf62d000623" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="77.0851" y1="-1" x2="78.8658" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="46e6eac9f03c1e09a15cb0bb07628570" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="82.1613" y1="-1" x2="82.1613" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7c839e4fb5f2522c8fde3b48577eafae" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="80.3658" y1="-1" x2="82.1465" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="0e4ec9f37979b06c54f0e2d499df5bf1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="84.242" y1="-1" x2="84.242" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0c8e0b8170c827494e606d4541ce2c89" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="82.4465" y1="-1" x2="84.2271" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="61f1ed037baf82bf6594769a9205df07" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="86.3226" y1="-1" x2="86.3226" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="42480ffc14ad129d8dec456e7bad317c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="84.5271" y1="-1" x2="86.3078" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="adc82c9de5d3ed333e335c32f7690a6b" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="88.4033" y1="-1" x2="88.4033" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0f408610c63793003f04e3af5a03493f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="86.6078" y1="-1" x2="88.3885" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="1dee0e17b4b9167cda8e51b45e2ab47c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="90.484" y1="-1" x2="90.484" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="99d50b32a7d1eac1019c14132a834144" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="88.6885" y1="-1" x2="90.4692" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c33f0e929fa3ea4230c07aca80f60c04" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="92.5647" y1="-1" x2="92.5647" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="572e96450f21b18771e510c6c41444dc" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="90.7692" y1="-1" x2="92.5498" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="67463b29bfb160641501f497f6134aa6" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="94.6453" y1="-1" x2="94.6453" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="68935c410dbe357c3f80b01c6e6d3cb1" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="92.8498" y1="-1" x2="94.6305" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="75f41055f9e23911ca51158dab6488df" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="95.8911" y1="-1" x2="95.8911" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="9e9ba65603d31963bdc6d55dfacc5eba" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="94.9305" y1="-1" x2="96.7112" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="66a37f88caecfe799ec34469d2302afd" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="40a9a55985c8bf8b1eb66b6d8c8e7b7a" data-source-kind="12" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="10eb9773d25f0d7d64f92b36f88e5b38" data-source-kind="14" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="86a982398112115027c54222505dd143" data-source-kind="15" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="c183669ac91f35eb7a0040b48fde85ab" data-source-kind="25" data-kind="stroke"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(0 1)" fill="#000000" data-prov="2bc09f9490decea3e13f24459f1b64f4" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(4.4846 -1)" fill="#000000" data-prov="870b54f8730bed8251f4f891a3c4b233" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(5.9846 -1)" fill="#000000" data-prov="5833135b23eaf581bccad90222f64e7e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(7.4846 -1)" fill="#000000" data-prov="3c653d764b31b22273540a079363370c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(8.9846 -1)" fill="#000000" data-prov="dfd195901678557bdc1f1351634d2b68" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(11.9846 -1)" fill="#000000" data-prov="99d206152de1651afeef963c42d7984f" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(13.4846 -1)" fill="#000000" data-prov="1340dc8c93d5925410da02d683dd5916" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(14.9846 -1)" fill="#000000" data-prov="d9b7e874516d265e3c165a16887a22bd" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(16.4846 -1)" fill="#000000" data-prov="12ef29aff1cc56481133aec42c0d1d35" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(19.4846 -1)" fill="#000000" data-prov="6f2586548ccd7de6800f74edd852d03b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(20.9846 -1)" fill="#000000" data-prov="6cd2fcd32ca7d1441b6534c025d7ae93" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(22.4846 -1)" fill="#000000" data-prov="e71f03f7d3d50a64ea72ce4bcdffb03e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(23.9846 -1)" fill="#000000" data-prov="0227904e88f6312904444c17ae540b57" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(26.9846 -1)" fill="#000000" data-prov="6cce2821ccbb4f5769708cb9ca3c38a7" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(28.4846 -1)" fill="#000000" data-prov="9952a70d5e0f9911d93466e83edc252e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(29.9846 -1)" fill="#000000" data-prov="1ead59d59c0c7cec46071003e7741905" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(31.4846 -1)" fill="#000000" data-prov="4b82f873de97ed4fa80748acbf368585" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(34.4846 -1)" fill="#000000" data-prov="a26098a444bb635ce82ff700f48491ed" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(35.9846 -1)" fill="#000000" data-prov="460c0831f9fd8de9b01a3a4bac641c8e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(37.4846 -1)" fill="#000000" data-prov="50dc15968bfd55c7637d0dde7c2f7bb3" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(38.9846 -1)" fill="#000000" data-prov="d095c952d8865af497a68b9fb543c15e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(41.9846 -1)" fill="#000000" data-prov="1e4cb41d3c7556e314182c82b7790bef" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(43.4846 -1)" fill="#000000" data-prov="9645397274cb84055aeba5639f8b06a5" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(44.9846 -1)" fill="#000000" data-prov="9578182658c00300531491532d13f66a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(46.4846 -1)" fill="#000000" data-prov="0a4dcf79021a9ba0366091e34fab456c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(49.4846 -1)" fill="#000000" data-prov="4b3905877c48341998d76f07cdb9eff5" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(50.9846 -1)" fill="#000000" data-prov="4582d540c93386289e704713ab2deeeb" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(52.4846 -1)" fill="#000000" data-prov="b6d88aa94cc5462fed11ef21a9b9d6df" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(53.9846 -1)" fill="#000000" data-prov="88fff9d9a3f4097be33105eff4f0664a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(56.9846 -1)" fill="#000000" data-prov="1c0a15caddb0e912285270f67ff23a3b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(58.4846 -1)" fill="#000000" data-prov="82e4c22515ed591ba37576873988586e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(59.9846 -1)" fill="#000000" data-prov="6304bcb23912da87e33c77509f7985f4" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(61.4846 -1)" fill="#000000" data-prov="99878edbfc3bbb1e8eca463cccd584ce" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(64.4846 -1)" fill="#000000" data-prov="d10593c1a375a3b07eb107dae9e897b3" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(65.9846 -1)" fill="#000000" data-prov="ba9722cd8f95336b0804751c84983573" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(67.4846 -1)" fill="#000000" data-prov="103fdcd52932b1c8f5fab0036c2dd002" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(68.9846 -1)" fill="#000000" data-prov="fcd49faa62e91333932dbac75206c859" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(70.4846 -1)" fill="#000000" data-prov="cc13049cf24d89de78d5dcc3bed18d7f" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(71.9846 -1)" fill="#000000" data-prov="88a15f00dc6e06aaf9f2532f05f6197e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(73.4846 -1)" fill="#000000" data-prov="cd16148313e9a4f391ab0cabfeb1ee4c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(74.9846 -1)" fill="#000000" data-prov="df598a181d9acccffc346705fce5da9b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(6.5652 -1)" fill="#000000" data-prov="5833135b23eaf581bccad90222f64e7e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(8.6459 -1)" fill="#000000" data-prov="3c653d764b31b22273540a079363370c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(10.7266 -1)" fill="#000000" data-prov="dfd195901678557bdc1f1351634d2b68" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(14.0072 -1)" fill="#000000" data-prov="99d206152de1651afeef963c42d7984f" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(16.0879 -1)" fill="#000000" data-prov="1340dc8c93d5925410da02d683dd5916" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(18.1686 -1)" fill="#000000" data-prov="d9b7e874516d265e3c165a16887a22bd" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(20.2492 -1)" fill="#000000" data-prov="12ef29aff1cc56481133aec42c0d1d35" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(23.5299 -1)" fill="#000000" data-prov="6f2586548ccd7de6800f74edd852d03b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(25.6105 -1)" fill="#000000" data-prov="6cd2fcd32ca7d1441b6534c025d7ae93" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(27.6912 -1)" fill="#000000" data-prov="e71f03f7d3d50a64ea72ce4bcdffb03e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(29.7719 -1)" fill="#000000" data-prov="0227904e88f6312904444c17ae540b57" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(33.0525 -1)" fill="#000000" data-prov="6cce2821ccbb4f5769708cb9ca3c38a7" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(35.1332 -1)" fill="#000000" data-prov="9952a70d5e0f9911d93466e83edc252e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(37.2139 -1)" fill="#000000" data-prov="1ead59d59c0c7cec46071003e7741905" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(39.2945 -1)" fill="#000000" data-prov="4b82f873de97ed4fa80748acbf368585" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(42.5752 -1)" fill="#000000" data-prov="a26098a444bb635ce82ff700f48491ed" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(44.6558 -1)" fill="#000000" data-prov="460c0831f9fd8de9b01a3a4bac641c8e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(46.7365 -1)" fill="#000000" data-prov="50dc15968bfd55c7637d0dde7c2f7bb3" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(48.8172 -1)" fill="#000000" data-prov="d095c952d8865af497a68b9fb543c15e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(52.0978 -1)" fill="#000000" data-prov="1e4cb41d3c7556e314182c82b7790bef" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(54.1785 -1)" fill="#000000" data-prov="9645397274cb84055aeba5639f8b06a5" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(56.2591 -1)" fill="#000000" data-prov="9578182658c00300531491532d13f66a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(58.3398 -1)" fill="#000000" data-prov="0a4dcf79021a9ba0366091e34fab456c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(61.6205 -1)" fill="#000000" data-prov="4b3905877c48341998d76f07cdb9eff5" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(63.7011 -1)" fill="#000000" data-prov="4582d540c93386289e704713ab2deeeb" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(65.7818 -1)" fill="#000000" data-prov="b6d88aa94cc5462fed11ef21a9b9d6df" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(67.8625 -1)" fill="#000000" data-prov="88fff9d9a3f4097be33105eff4f0664a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(71.1431 -1)" fill="#000000" data-prov="1c0a15caddb0e912285270f67ff23a3b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(73.2238 -1)" fill="#000000" data-prov="82e4c22515ed591ba37576873988586e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(75.3045 -1)" fill="#000000" data-prov="6304bcb23912da87e33c77509f7985f4" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(77.3851 -1)" fill="#000000" data-prov="99878edbfc3bbb1e8eca463cccd584ce" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(80.6658 -1)" fill="#000000" data-prov="d10593c1a375a3b07eb107dae9e897b3" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(82.7465 -1)" fill="#000000" data-prov="ba9722cd8f95336b0804751c84983573" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(84.8271 -1)" fill="#000000" data-prov="103fdcd52932b1c8f5fab0036c2dd002" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(86.9078 -1)" fill="#000000" data-prov="fcd49faa62e91333932dbac75206c859" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(88.9885 -1)" fill="#000000" data-prov="cc13049cf24d89de78d5dcc3bed18d7f" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(91.0692 -1)" fill="#000000" data-prov="88a15f00dc6e06aaf9f2532f05f6197e" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(93.1498 -1)" fill="#000000" data-prov="cd16148313e9a4f391ab0cabfeb1ee4c" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(95.2305 -1)" fill="#000000" data-prov="df598a181d9acccffc346705fce5da9b" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(2.9846 0)" fill="#000000" data-prov="867b15e7cfaeccccfe301517166fe106" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(10.4846 0)" fill="#000000" data-prov="2d8913235b36cc0b1c41dc5238cba014" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(17.9846 0)" fill="#000000" data-prov="b263edd8a4514fa237d4e7942c04be8c" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(25.4846 0)" fill="#000000" data-prov="abc1bd57e0116cfc47c4f84f0c22b2e6" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(32.9846 0)" fill="#000000" data-prov="9f811a0578b546d35393e29bb06afe9b" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(40.4846 0)" fill="#000000" data-prov="7c62f742d0a60d8a6177a714ef9241af" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(47.9846 0)" fill="#000000" data-prov="0b1e63cbd07616159ee70000e3c76056" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(55.4846 0)" fill="#000000" data-prov="f21f4e337050d50f36f7d905196db794" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(62.9846 0)" fill="#000000" data-prov="f4a3968aa56472207e4e921c44dfa1d7" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0ZM0.912 4H0.412V0H0.912Z" transform="translate(76.4846 0)" fill="#000000" data-prov="d99180b4838ec1269b3f4caee0201968" data-source-kind="9" data-glyph="barlineFinal" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(12.5072 0)" fill="#000000" data-prov="2d8913235b36cc0b1c41dc5238cba014" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(22.0299 0)" fill="#000000" data-prov="b263edd8a4514fa237d4e7942c04be8c" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(31.5525 0)" fill="#000000" data-prov="abc1bd57e0116cfc47c4f84f0c22b2e6" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(41.0752 0)" fill="#000000" data-prov="9f811a0578b546d35393e29bb06afe9b" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(50.5978 0)" fill="#000000" data-prov="7c62f742d0a60d8a6177a714ef9241af" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(60.1205 0)" fill="#000000" data-prov="0b1e63cbd07616159ee70000e3c76056" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(69.6431 0)" fill="#000000" data-prov="f21f4e337050d50f36f7d905196db794" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0Z" transform="translate(79.1658 0)" fill="#000000" data-prov="f4a3968aa56472207e4e921c44dfa1d7" data-source-kind="9" data-glyph="barlineSingle" data-class="barline"/>
|
||||
<path d="M0.144 0V4H0V0ZM0.912 4H0.412V0H0.912Z" transform="translate(97.0112 0)" fill="#000000" data-prov="d99180b4838ec1269b3f4caee0201968" data-source-kind="9" data-glyph="barlineFinal" data-class="barline"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 32 KiB |
|
|
@ -2,8 +2,8 @@ fixture=ten_measure_single_staff solver=stub
|
|||
glyph_count=51
|
||||
path_count=51
|
||||
fallback_rect_count=0
|
||||
stroke_count=51
|
||||
provenance_count=102
|
||||
stroke_count=91
|
||||
provenance_count=142
|
||||
layer_count=1
|
||||
hard_constraint_count=0
|
||||
xml_well_formed=true
|
||||
|
|
|
|||
|
|
@ -11,45 +11,85 @@
|
|||
<line x1="-1" y1="4" x2="83.4" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c46b9445a4c5ff909f50b13f9025c4a3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="fe116eb75ff697f9f2451c10c05349c6" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="5.75" y1="-1" x2="5.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="dbd573fbc0c21f9b07a8537f658b048c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="4.3" y1="-1" x2="6.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="07ffb45f25e59b0955bd4e248522b2ef" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="7.35" y1="-1" x2="7.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="276b6f72f2bcb818f84229b6833ce022" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="5.9" y1="-1" x2="7.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3539af5cd23dc6ca259a35fef4aa45c2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="8.95" y1="-1" x2="8.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d1b0067ebb2b2b9115a77aaadc53bffe" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="7.5" y1="-1" x2="9.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9b43d5d2a83ce1086364f6f3ac4b5ba2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="10.55" y1="-1" x2="10.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="13303d184ca25b99835d71e21f3a96df" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="9.1" y1="-1" x2="10.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="d6c7a9458a06532e1c7507e71363c0dd" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="13.75" y1="-1" x2="13.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="aa33134cf72cebda65d1b2b427230541" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="12.3" y1="-1" x2="14.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="20fbe0162b0bc4dd93e2c3e3da73bb83" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="15.35" y1="-1" x2="15.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="01d06ae931cf05983e4b17744108297b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="13.9" y1="-1" x2="15.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="cd9abf9ed66ab876f68b9d88ce1e5199" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="16.95" y1="-1" x2="16.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="47c9ce76466974ecfabe4a9cafb75c3c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="15.5" y1="-1" x2="17.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="7ade41165c11102f29e87cb09eb3f88f" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="18.55" y1="-1" x2="18.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e6d1c0a44d13be2700ad4381e1d518fa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="17.1" y1="-1" x2="18.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="32c2aa89808756c46e8b7afcfb2eb057" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="21.75" y1="-1" x2="21.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="370a65aab516f6792e49a1ed28bd5cd9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="20.3" y1="-1" x2="22.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="0a3ae3c155d29c21e266e663a8b1b214" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="23.35" y1="-1" x2="23.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="75b4bca159d5c28b10b2078bb457bb53" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="21.9" y1="-1" x2="23.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c27e3e835224dc54cef9b36818099cd0" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="24.95" y1="-1" x2="24.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="c4531390972e55a43af2bd9f85e3c250" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="23.5" y1="-1" x2="25.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="4b43990bc25bf4afffda3e2a7d4dcab7" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="26.55" y1="-1" x2="26.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="888c6ef019fc4b0fc714672a4444c60c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="25.1" y1="-1" x2="26.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="8e120598410629bb86883f318071a6b5" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="29.75" y1="-1" x2="29.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="6c70ad9006ed8fbb104d77eba3f2dbcb" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="28.3" y1="-1" x2="30.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="6d2724bb96160f831b4e987ce6b4349a" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="31.35" y1="-1" x2="31.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="debe82da2c34817a871d8a4cc5cc3fdd" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="29.9" y1="-1" x2="31.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="7a9f84c8590c7e8156fd929e35153cf8" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="32.95" y1="-1" x2="32.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7b524c2e9e5657b68fd1a81337887c2e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="31.5" y1="-1" x2="33.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c4a9602f838e0ea74a9fe68da12baff2" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="34.55" y1="-1" x2="34.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cb31fbbd4a3e3eb17ed06e65f40589e5" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="33.1" y1="-1" x2="34.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="76860486e62be8520184bb3e8c284d94" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="37.75" y1="-1" x2="37.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bc1cc9bede7fc3c72827cfbf184cdb7e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="36.3" y1="-1" x2="38.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a3fd2ae47f432e61881cb1e44a7108e6" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="39.35" y1="-1" x2="39.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="95891bc2b58231a1618b5d422e6131b0" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="37.9" y1="-1" x2="39.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a9e2ee2be83c0a4978db517bf182efe9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="40.95" y1="-1" x2="40.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="ed21002861831422bdbb36e8f981d2a9" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="39.5" y1="-1" x2="41.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="2bac60a88ddddcf403dd6edfb67b5bb0" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="42.55" y1="-1" x2="42.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="e49748251746a6dbdf15aa8dd983e6e7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="41.1" y1="-1" x2="42.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="a592bc951f4afa64726aa30ccdd6ddfa" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="45.75" y1="-1" x2="45.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8d2938a01abfe451991829fbde6d2b94" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="44.3" y1="-1" x2="46.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c73f1aad686621adde07e7fe7b160ad7" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="47.35" y1="-1" x2="47.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="88366a6edcce03db41d39d08b2616742" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="45.9" y1="-1" x2="47.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="4e052448582a8fdc672f38b02dc205e1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="48.95" y1="-1" x2="48.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="77a10c7862f0ffce98d309bb71ce675f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="47.5" y1="-1" x2="49.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="68c691f2336e5a322116641b9f2f7054" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="50.55" y1="-1" x2="50.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="cfa457e70519a1826f321a56cb3fd03b" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="49.1" y1="-1" x2="50.8807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3c3f0d6b5ab00374d7628cd6f9876bc9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="53.75" y1="-1" x2="53.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="273d04eeece605789035a29d80023c2c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="52.3" y1="-1" x2="54.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9ec226573f8ea2320fc444c562163ddb" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="55.35" y1="-1" x2="55.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="a23b09fda2784b566bf1de48e89a2baa" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="53.9" y1="-1" x2="55.6806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9e3345d5dddffbb9cf263a1708fc2589" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="56.95" y1="-1" x2="56.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="edf9ca4611cfc17faace6241cae3b73d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="55.5" y1="-1" x2="57.2806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="ea06a5b83026202fbe3eed55ca3680c9" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="58.55" y1="-1" x2="58.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="f1e3c0367633266d5f188e5bd6d98ad4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="57.1" y1="-1" x2="58.8806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="b8d324f0620ebb59f66346b61a4d214e" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="61.75" y1="-1" x2="61.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="2bf824905032462ee8c9988b780feabf" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="60.3" y1="-1" x2="62.0806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="579f0f80918268f1ba03890d14832b56" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="63.35" y1="-1" x2="63.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="08a65aebf8baaded74feb3ec7cc36d18" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="61.9" y1="-1" x2="63.6806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="f04f04c436808c53ab1c2b169d7f5a33" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="64.95" y1="-1" x2="64.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="d155779804ad660f4466745153872349" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="63.5" y1="-1" x2="65.2806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="3b9174fe7361dbfc454fbe17b9ec81b1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="66.55" y1="-1" x2="66.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="af73177552d5fa95b746caf62d000623" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="65.1" y1="-1" x2="66.8806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="46e6eac9f03c1e09a15cb0bb07628570" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="69.75" y1="-1" x2="69.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="7c839e4fb5f2522c8fde3b48577eafae" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="68.3" y1="-1" x2="70.0806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="0e4ec9f37979b06c54f0e2d499df5bf1" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="71.35" y1="-1" x2="71.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0c8e0b8170c827494e606d4541ce2c89" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="69.9" y1="-1" x2="71.6806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="61f1ed037baf82bf6594769a9205df07" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="72.95" y1="-1" x2="72.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="42480ffc14ad129d8dec456e7bad317c" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="71.5" y1="-1" x2="73.2806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="adc82c9de5d3ed333e335c32f7690a6b" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="74.55" y1="-1" x2="74.55" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="0f408610c63793003f04e3af5a03493f" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="73.1" y1="-1" x2="74.8806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="1dee0e17b4b9167cda8e51b45e2ab47c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="76.15" y1="-1" x2="76.15" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="99d50b32a7d1eac1019c14132a834144" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="74.7" y1="-1" x2="76.4806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="c33f0e929fa3ea4230c07aca80f60c04" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="77.75" y1="-1" x2="77.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="572e96450f21b18771e510c6c41444dc" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="76.3" y1="-1" x2="78.0806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="67463b29bfb160641501f497f6134aa6" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="79.35" y1="-1" x2="79.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="68935c410dbe357c3f80b01c6e6d3cb1" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="77.9" y1="-1" x2="79.6806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="75f41055f9e23911ca51158dab6488df" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="80.95" y1="-1" x2="80.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="9e9ba65603d31963bdc6d55dfacc5eba" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="79.5" y1="-1" x2="81.2806" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="66a37f88caecfe799ec34469d2302afd" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="40a9a55985c8bf8b1eb66b6d8c8e7b7a" data-source-kind="12" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="10eb9773d25f0d7d64f92b36f88e5b38" data-source-kind="14" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="86a982398112115027c54222505dd143" data-source-kind="15" data-kind="stroke"/>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 32 KiB |
|
|
@ -2,12 +2,12 @@ fixture=valid_score_rich solver=engrave
|
|||
glyph_count=11
|
||||
path_count=11
|
||||
fallback_rect_count=0
|
||||
stroke_count=33
|
||||
provenance_count=44
|
||||
stroke_count=38
|
||||
provenance_count=49
|
||||
layer_count=1
|
||||
hard_constraint_count=0
|
||||
xml_well_formed=true
|
||||
view_box=[-3.059857 -3.632 27.953568 11.024]
|
||||
view_box=[-3.1598568 -3.632 31.588375 11.024]
|
||||
class_counts:
|
||||
barline=1
|
||||
clef=3
|
||||
|
|
|
|||
|
|
@ -1,52 +1,57 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="279.5357" height="110.24" viewBox="0 0 27.9536 11.024">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="315.8838" height="110.24" viewBox="0 0 31.5884 11.024">
|
||||
<!-- epiphany-render-svg: glyphs are genuine Bravura SMuFL outlines inlined as paths; geometry is the resolved layout verbatim, no engraving performed here; every glyph and stroke carries a data-prov trace to its score-graph source -->
|
||||
<g transform="translate(3.0599 7.392) scale(1 -1)">
|
||||
<g transform="translate(3.1599 7.392) scale(1 -1)">
|
||||
<g data-layer="0">
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="5fc3f9fc71005c8f91cef3c82cf457d7" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="0" x2="7.6512" y2="0" stroke="#000000" stroke-width="0.13" data-prov="540fd4c2706753fcc11d7abf84677260" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="1" x2="7.6512" y2="1" stroke="#000000" stroke-width="0.13" data-prov="fea4bf7d60f88df52ba88e1026e63342" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="2" x2="7.6512" y2="2" stroke="#000000" stroke-width="0.13" data-prov="2ce0db586e615b2e13faf76b21a0d74e" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="3" x2="7.6512" y2="3" stroke="#000000" stroke-width="0.13" data-prov="d6f4c9a4f9b381f86948af62dd614587" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-0.9949" y1="4" x2="7.6512" y2="4" stroke="#000000" stroke-width="0.13" data-prov="d26797f8b55b1986957fe0b86a4d8ad3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-1.0949" y1="0" x2="9.3932" y2="0" stroke="#000000" stroke-width="0.13" data-prov="540fd4c2706753fcc11d7abf84677260" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-1.0949" y1="1" x2="9.3932" y2="1" stroke="#000000" stroke-width="0.13" data-prov="fea4bf7d60f88df52ba88e1026e63342" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-1.0949" y1="2" x2="9.3932" y2="2" stroke="#000000" stroke-width="0.13" data-prov="2ce0db586e615b2e13faf76b21a0d74e" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-1.0949" y1="3" x2="9.3932" y2="3" stroke="#000000" stroke-width="0.13" data-prov="d6f4c9a4f9b381f86948af62dd614587" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="-1.0949" y1="4" x2="9.3932" y2="4" stroke="#000000" stroke-width="0.13" data-prov="d26797f8b55b1986957fe0b86a4d8ad3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="fbab9b9c1117f1a77321eef2528313c7" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="4.0627" y1="-1" x2="4.0627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="685bb2f9eba2acf767017fe46340d32d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="5.5627" y1="-1" x2="5.5627" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bfca9c8f8054f3d500e342f0b4750c5e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="6.541" y1="-1" x2="6.541" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="150cdc069f098c84e4293a2bb4ae6693" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="4.78" y1="-1" x2="4.78" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="685bb2f9eba2acf767017fe46340d32d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="2.9846" y1="-1" x2="4.7652" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="badbeee9b287e9d086850c2be907fce8" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="6.8607" y1="-1" x2="6.8607" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bfca9c8f8054f3d500e342f0b4750c5e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="5.0652" y1="-1" x2="6.8459" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9a0cb14210151fc9b638f964beb65c6c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="8.1065" y1="-1" x2="8.1065" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="150cdc069f098c84e4293a2bb4ae6693" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="7.1459" y1="-1" x2="8.9266" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="01fbbb3559a0372164da3f005943fc45" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="ccedf36ea2c89203f216fe2bdcf32577" data-source-kind="12" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="0bc5e2a029d8599bd4d15a916eb90318" data-source-kind="22" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="5078100681364e0eef0becb94f607df4" data-source-kind="14" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="850009fc86dd7744c4dea1ea6a28be42" data-source-kind="15" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="0b3280aa906b67171cb829398b7bf1f0" data-source-kind="25" data-kind="stroke"/>
|
||||
<line x1="8.9846" y1="0" x2="8.9846" y2="0" stroke="#000000" stroke-width="0" data-prov="d9a97871d4088c0f7e7c1ab7e4fd49b7" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="8.6512" y1="0" x2="14.1797" y2="0" stroke="#000000" stroke-width="0.13" data-prov="74a1941933b935bf49129ddec9ceb7cb" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="8.6512" y1="1" x2="14.1797" y2="1" stroke="#000000" stroke-width="0.13" data-prov="9127c3ddf63996fbde1522f2af47e640" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="8.6512" y1="2" x2="14.1797" y2="2" stroke="#000000" stroke-width="0.13" data-prov="6244e1812ecbd0f97ace48fed547d2a0" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="8.6512" y1="3" x2="14.1797" y2="3" stroke="#000000" stroke-width="0.13" data-prov="daaa82fcc1b3fceb63ecca023f71c3a6" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="8.6512" y1="4" x2="14.1797" y2="4" stroke="#000000" stroke-width="0.13" data-prov="00ce5a2fe2e45b498b1164e3ce0239f0" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="8.9846" y1="0" x2="8.9846" y2="0" stroke="#000000" stroke-width="0" data-prov="374743e32dbbfe82916c87b68c2fcbd3" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="13.0473" y1="-1" x2="13.0473" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="27a2f99d23428f969f8f22d7e42f89a4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="13.6961" y1="-0.5" x2="13.6961" y2="3" stroke="#000000" stroke-width="0.12" data-prov="4ba26f525e6c664f9f3727b3f001c4f7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="14.9691" y1="0" x2="14.9691" y2="0" stroke="#000000" stroke-width="0" data-prov="cc34303d8801d20b413432a3a1b66aa0" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="14.7718" y1="0" x2="22.8287" y2="0" stroke="#000000" stroke-width="0.13" data-prov="ff986fa2737b7cc76925b8b003dfb446" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="14.7718" y1="1" x2="22.8287" y2="1" stroke="#000000" stroke-width="0.13" data-prov="8c632b729231878fa18c479fd24d7436" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="14.7718" y1="2" x2="22.8287" y2="2" stroke="#000000" stroke-width="0.13" data-prov="0c8b92c6e5cb8d4afcffe28972595e85" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="14.7718" y1="3" x2="22.8287" y2="3" stroke="#000000" stroke-width="0.13" data-prov="d01bcd62385bf77312ae65017a9b4a50" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="14.7718" y1="4" x2="22.8287" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c882fdc5188e96b8a1950c11dfd401e9" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="14.9691" y1="0" x2="14.9691" y2="0" stroke="#000000" stroke-width="0" data-prov="2fe40e9238d3fc28c88d7082dbbec593" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="19.0318" y1="-1" x2="19.0318" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8b99315d75c981620504d9274be1fa45" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="20.5318" y1="-0.5" x2="20.5318" y2="3" stroke="#000000" stroke-width="0.12" data-prov="b98aa6fd428e2b9f68fefec4b05a2b78" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="10.7266" y1="0" x2="10.7266" y2="0" stroke="#000000" stroke-width="0" data-prov="d9a97871d4088c0f7e7c1ab7e4fd49b7" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="10.3932" y1="0" x2="16.5023" y2="0" stroke="#000000" stroke-width="0.13" data-prov="74a1941933b935bf49129ddec9ceb7cb" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="10.3932" y1="1" x2="16.5023" y2="1" stroke="#000000" stroke-width="0.13" data-prov="9127c3ddf63996fbde1522f2af47e640" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="10.3932" y1="2" x2="16.5023" y2="2" stroke="#000000" stroke-width="0.13" data-prov="6244e1812ecbd0f97ace48fed547d2a0" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="10.3932" y1="3" x2="16.5023" y2="3" stroke="#000000" stroke-width="0.13" data-prov="daaa82fcc1b3fceb63ecca023f71c3a6" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="10.3932" y1="4" x2="16.5023" y2="4" stroke="#000000" stroke-width="0.13" data-prov="00ce5a2fe2e45b498b1164e3ce0239f0" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="10.7266" y1="0" x2="10.7266" y2="0" stroke="#000000" stroke-width="0" data-prov="374743e32dbbfe82916c87b68c2fcbd3" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="15.291" y1="-1" x2="15.291" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="27a2f99d23428f969f8f22d7e42f89a4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="13.7111" y1="-1" x2="15.4918" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="370371bf62378295492e01246d4ee16f" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="16.0188" y1="-0.5" x2="16.0188" y2="3" stroke="#000000" stroke-width="0.12" data-prov="4ba26f525e6c664f9f3727b3f001c4f7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="17.2918" y1="0" x2="17.2918" y2="0" stroke="#000000" stroke-width="0" data-prov="cc34303d8801d20b413432a3a1b66aa0" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="17.0944" y1="0" x2="26.3635" y2="0" stroke="#000000" stroke-width="0.13" data-prov="ff986fa2737b7cc76925b8b003dfb446" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="17.0944" y1="1" x2="26.3635" y2="1" stroke="#000000" stroke-width="0.13" data-prov="8c632b729231878fa18c479fd24d7436" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="17.0944" y1="2" x2="26.3635" y2="2" stroke="#000000" stroke-width="0.13" data-prov="0c8b92c6e5cb8d4afcffe28972595e85" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="17.0944" y1="3" x2="26.3635" y2="3" stroke="#000000" stroke-width="0.13" data-prov="d01bcd62385bf77312ae65017a9b4a50" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="17.0944" y1="4" x2="26.3635" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c882fdc5188e96b8a1950c11dfd401e9" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="17.2918" y1="0" x2="17.2918" y2="0" stroke="#000000" stroke-width="0" data-prov="2fe40e9238d3fc28c88d7082dbbec593" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="21.8562" y1="-1" x2="21.8562" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8b99315d75c981620504d9274be1fa45" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="20.2764" y1="-1" x2="22.057" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="95dfefec6481cc7be34a31c283b7fd8c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="23.6369" y1="-0.5" x2="23.6369" y2="3" stroke="#000000" stroke-width="0.12" data-prov="b98aa6fd428e2b9f68fefec4b05a2b78" data-source-kind="0" data-kind="stroke"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(0 1)" fill="#000000" data-prov="11b3eeb335691c9e35abc39fd2b199b8" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(2.9846 -1)" fill="#000000" data-prov="a9ea8a975336c483b806550f06c6ac3a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(4.4846 -1)" fill="#000000" data-prov="f75057d1424ec76a43140fd09f5430f6" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(5.9846 -1)" fill="#000000" data-prov="ae10a4d1e0e114150bb2f37428592071" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.144 0V4H0V0ZM0.912 4H0.412V0H0.912Z" transform="translate(7.4846 0)" fill="#000000" data-prov="688cee6a171fdd158a2ecee088684062" data-source-kind="9" data-glyph="barlineFinal" data-class="barline"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(8.9846 1)" fill="#000000" data-prov="22ee2bcfa4f95b655d9005ee6936f95c" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(11.9691 -1)" fill="#000000" data-prov="570646848d323a130dfd8621abc0523a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(13.4691 -0.5)" fill="#000000" data-prov="8203471bd393291712730bfe067a49f4" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(14.9691 1)" fill="#000000" data-prov="592b318a5a382abc0a975f47f08f0ad3" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(17.9537 -1)" fill="#000000" data-prov="cfe927096cef847eb22b0f0da758ae25" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(19.4537 -0.5)" fill="#000000" data-prov="156fb4f4836e433fab4e81ed7492b103" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(3.2846 -1)" fill="#000000" data-prov="a9ea8a975336c483b806550f06c6ac3a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(5.3652 -1)" fill="#000000" data-prov="f75057d1424ec76a43140fd09f5430f6" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(7.4459 -1)" fill="#000000" data-prov="ae10a4d1e0e114150bb2f37428592071" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.144 0V4H0V0ZM0.912 4H0.412V0H0.912Z" transform="translate(9.2266 0)" fill="#000000" data-prov="688cee6a171fdd158a2ecee088684062" data-source-kind="9" data-glyph="barlineFinal" data-class="barline"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(10.7266 1)" fill="#000000" data-prov="22ee2bcfa4f95b655d9005ee6936f95c" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(14.0111 -1)" fill="#000000" data-prov="570646848d323a130dfd8621abc0523a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(15.7918 -0.5)" fill="#000000" data-prov="8203471bd393291712730bfe067a49f4" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(17.2918 1)" fill="#000000" data-prov="592b318a5a382abc0a975f47f08f0ad3" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(20.5764 -1)" fill="#000000" data-prov="cfe927096cef847eb22b0f0da758ae25" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(22.357 -0.5)" fill="#000000" data-prov="156fb4f4836e433fab4e81ed7492b103" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
|
@ -2,8 +2,8 @@ fixture=valid_score_rich solver=stub
|
|||
glyph_count=11
|
||||
path_count=11
|
||||
fallback_rect_count=0
|
||||
stroke_count=33
|
||||
provenance_count=44
|
||||
stroke_count=38
|
||||
provenance_count=49
|
||||
layer_count=1
|
||||
hard_constraint_count=0
|
||||
xml_well_formed=true
|
||||
|
|
|
|||
|
|
@ -11,8 +11,11 @@
|
|||
<line x1="-1" y1="4" x2="9.8" y2="4" stroke="#000000" stroke-width="0.13" data-prov="d26797f8b55b1986957fe0b86a4d8ad3" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="fbab9b9c1117f1a77321eef2528313c7" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="4.15" y1="-1" x2="4.15" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="685bb2f9eba2acf767017fe46340d32d" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="2.7" y1="-1" x2="4.4807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="badbeee9b287e9d086850c2be907fce8" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="5.75" y1="-1" x2="5.75" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="bfca9c8f8054f3d500e342f0b4750c5e" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="4.3" y1="-1" x2="6.0807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="9a0cb14210151fc9b638f964beb65c6c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="7.35" y1="-1" x2="7.35" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="150cdc069f098c84e4293a2bb4ae6693" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="5.9" y1="-1" x2="7.6807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="01fbbb3559a0372164da3f005943fc45" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="ccedf36ea2c89203f216fe2bdcf32577" data-source-kind="12" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="0bc5e2a029d8599bd4d15a916eb90318" data-source-kind="22" data-kind="stroke"/>
|
||||
<line x1="0" y1="0" x2="0" y2="0" stroke="#000000" stroke-width="0" data-prov="5078100681364e0eef0becb94f607df4" data-source-kind="14" data-kind="stroke"/>
|
||||
|
|
@ -26,6 +29,7 @@
|
|||
<line x1="12.8" y1="4" x2="22" y2="4" stroke="#000000" stroke-width="0.13" data-prov="00ce5a2fe2e45b498b1164e3ce0239f0" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="13.8" y1="0" x2="13.8" y2="0" stroke="#000000" stroke-width="0" data-prov="374743e32dbbfe82916c87b68c2fcbd3" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="17.95" y1="-1" x2="17.95" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="27a2f99d23428f969f8f22d7e42f89a4" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="16.5" y1="-1" x2="18.2807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="370371bf62378295492e01246d4ee16f" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="19.55" y1="-0.5" x2="19.55" y2="3" stroke="#000000" stroke-width="0.12" data-prov="4ba26f525e6c664f9f3727b3f001c4f7" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="26" y1="0" x2="26" y2="0" stroke="#000000" stroke-width="0" data-prov="cc34303d8801d20b413432a3a1b66aa0" data-source-kind="6" data-kind="stroke"/>
|
||||
<line x1="25" y1="0" x2="34.2" y2="0" stroke="#000000" stroke-width="0.13" data-prov="ff986fa2737b7cc76925b8b003dfb446" data-source-kind="3" data-kind="stroke"/>
|
||||
|
|
@ -35,6 +39,7 @@
|
|||
<line x1="25" y1="4" x2="34.2" y2="4" stroke="#000000" stroke-width="0.13" data-prov="c882fdc5188e96b8a1950c11dfd401e9" data-source-kind="3" data-kind="stroke"/>
|
||||
<line x1="26" y1="0" x2="26" y2="0" stroke="#000000" stroke-width="0" data-prov="2fe40e9238d3fc28c88d7082dbbec593" data-source-kind="2" data-kind="stroke"/>
|
||||
<line x1="30.15" y1="-1" x2="30.15" y2="2.5" stroke="#000000" stroke-width="0.12" data-prov="8b99315d75c981620504d9274be1fa45" data-source-kind="0" data-kind="stroke"/>
|
||||
<line x1="28.7" y1="-1" x2="30.4807" y2="-1" stroke="#000000" stroke-width="0.13" data-prov="95dfefec6481cc7be34a31c283b7fd8c" data-source-kind="1" data-kind="stroke"/>
|
||||
<line x1="31.75" y1="-0.5" x2="31.75" y2="3" stroke="#000000" stroke-width="0.12" data-prov="b98aa6fd428e2b9f68fefec4b05a2b78" data-source-kind="0" data-kind="stroke"/>
|
||||
<path d="M1.504 1.66C1.496 1.708 1.504 1.712 1.528 1.736C1.96 2.14 2.288 2.648 2.288 3.26C2.288 3.608 2.192 3.952 2.028 4.192C1.968 4.28 1.864 4.392 1.82 4.392C1.764 4.392 1.64 4.288 1.56 4.2C1.264 3.872 1.168 3.372 1.168 2.956C1.168 2.724 1.196 2.464 1.224 2.3C1.232 2.252 1.236 2.244 1.188 2.204C0.612 1.728 0 1.156 0 0.348C0 -0.348 0.476 -1.008 1.456 -1.008C1.548 -1.008 1.652 -1 1.732 -0.984C1.776 -0.976 1.784 -0.972 1.792 -1.02C1.84 -1.288 1.9 -1.636 1.9 -1.824C1.9 -2.416 1.5 -2.488 1.264 -2.488C1.048 -2.488 0.944 -2.424 0.944 -2.372C0.944 -2.344 0.98 -2.332 1.072 -2.304C1.196 -2.268 1.34 -2.16 1.34 -1.928C1.34 -1.708 1.2 -1.52 0.956 -1.52C0.688 -1.52 0.528 -1.732 0.528 -1.98C0.528 -2.24 0.684 -2.632 1.288 -2.632C1.556 -2.632 2.076 -2.512 2.076 -1.832C2.076 -1.604 2.004 -1.224 1.96 -0.976C1.952 -0.928 1.956 -0.932 2.012 -0.908C2.416 -0.748 2.684 -0.408 2.684 0.044C2.684 0.556 2.308 1.008 1.72 1.008C1.616 1.008 1.616 1.008 1.604 1.08ZM1.88 3.772C2.012 3.772 2.12 3.664 2.12 3.444C2.12 3 1.74 2.64 1.424 2.364C1.396 2.34 1.38 2.344 1.372 2.396C1.356 2.5 1.348 2.636 1.348 2.764C1.348 3.388 1.636 3.772 1.88 3.772ZM1.444 1.048C1.456 0.972 1.456 0.976 1.384 0.952C1.032 0.832 0.804 0.516 0.804 0.176C0.804 -0.184 0.992 -0.44 1.264 -0.532C1.296 -0.544 1.344 -0.556 1.372 -0.556C1.404 -0.556 1.42 -0.536 1.42 -0.512C1.42 -0.484 1.388 -0.472 1.36 -0.46C1.192 -0.388 1.072 -0.216 1.072 -0.032C1.072 0.196 1.228 0.368 1.472 0.436C1.536 0.452 1.544 0.448 1.552 0.404L1.752 -0.788C1.76 -0.832 1.756 -0.832 1.696 -0.844C1.632 -0.856 1.552 -0.864 1.472 -0.864C0.772 -0.864 0.32 -0.476 0.32 0.08C0.32 0.316 0.36 0.632 0.692 1.008C0.932 1.276 1.116 1.424 1.304 1.576C1.344 1.608 1.352 1.604 1.36 1.56ZM1.72 0.412C1.712 0.46 1.716 0.472 1.764 0.468C2.088 0.44 2.356 0.168 2.356 -0.184C2.356 -0.436 2.204 -0.64 1.98 -0.752C1.932 -0.776 1.924 -0.776 1.916 -0.728Z" transform="translate(0 1)" fill="#000000" data-prov="11b3eeb335691c9e35abc39fd2b199b8" data-source-kind="4" data-glyph="gClef" data-class="clef"/>
|
||||
<path d="M0.388 -0.5C0.744 -0.5 1.18 -0.172 1.18 0.168C1.18 0.372 1.02 0.5 0.792 0.5C0.352 0.5 0 0.176 0 -0.168C0 -0.376 0.172 -0.5 0.388 -0.5Z" transform="translate(3 -1)" fill="#000000" data-prov="a9ea8a975336c483b806550f06c6ac3a" data-source-kind="1" data-glyph="noteheadBlack" data-class="notehead"/>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |