From df4851430ea15bff79f54c8d685d83bed50ca4f0 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:10:58 -0500
Subject: [PATCH 01/26] created tutorial landing page in Polish
---
resources/tutorials-PL.md | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 resources/tutorials-PL.md
diff --git a/resources/tutorials-PL.md b/resources/tutorials-PL.md
new file mode 100644
index 00000000..7325ffda
--- /dev/null
+++ b/resources/tutorials-PL.md
@@ -0,0 +1,25 @@
+---
+layout: tutorials-PL
+title: "Tutoriale MEI"
+---
+# Tutoriale MEI
+
+Na tej stronie znajdziesz kilka krótkich tutoriali dotyczących kodowania muzyki (MEI), każdy z nich przedstawia konkretną funkcję.
+
+Jeśli zamierzasz rozpocząć naukę MEI, zalecamy zacząć od tutorialu [5-minutowy szybki start](/tutorials/101-quickstart), który pozwoli ci zakodować bardzo prostą melodię z MEI.
+
+Jeśli zamierzasz napisać nowy tutorial MEI, zalecamy rozpoczęcie od tutorialu [Tutoriale Pisania](/tutorials/tutorials), który dostarczy informacje o niezbędnych krokach. Zachęcamy również do zapoznania się z naszą listą brakujących tutoriali na [Github](https://github.com/music-encoding/music-encoding.github.io/issues/88).
+
+### Zewnętrzne tutoriale i powiązane materiały
+
+Aby zapoznać się z zasobami stworzonymi przez społeczność, w tutorialach i materiałach dydaktycznymi, zobacz [Materiały pedagogiczne i prakseologiczne tworzone przez społeczność](/resources/pedagogy.html).
+
+
+Wróć do [angielskiej wersji tutoriala](/resources/tutorials.html).
+
+
+----
+*Te tutoriale zostały przetłumaczone przez Annę Kijas z Tufts University w lutym 2024 r.*
+
+
+
From c8779bc8abd11dbb557a5aa3e1fc6f426ae6758d Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:11:59 -0500
Subject: [PATCH 02/26] created folder for Polish tutorials
---
_tutorials-PL/101_Quickstart.md | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 _tutorials-PL/101_Quickstart.md
diff --git a/_tutorials-PL/101_Quickstart.md b/_tutorials-PL/101_Quickstart.md
new file mode 100644
index 00000000..914be013
--- /dev/null
+++ b/_tutorials-PL/101_Quickstart.md
@@ -0,0 +1,7 @@
+---
+layout: tutoriale
+type: tutorial
+name: "POCZĄTKUJĄCY: szybki start"
+fullname: "5-minutowy tutorial szybki start z MEI"
+data: "101_quickstart.json"
+---
\ No newline at end of file
From 98ad2b9bc9a1873a12054fb6cae12a3b9cce7858 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:39:10 -0500
Subject: [PATCH 03/26] created Polish quickstart step-00 file
---
_tutorials-PL/101_quickstart_step-00-desc.html | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart_step-00-desc.html
diff --git a/_tutorials-PL/101_quickstart_step-00-desc.html b/_tutorials-PL/101_quickstart_step-00-desc.html
new file mode 100644
index 00000000..8519f967
--- /dev/null
+++ b/_tutorials-PL/101_quickstart_step-00-desc.html
@@ -0,0 +1,11 @@
+
+
W tym tutorialu nauczysz się kodować bardzo prostą melodię w MEI. Nauczysz się opisywać najbardziej podstawowe aspekty notacji muzycznej jako dane strukturalne, aby komputery mogły parsować twój kod.
+
+
+ Napisany kod zostanie natychmiast wyrenderowany, a renderowanie będzie reagować na twoje zmiany. W ten sposób, będziesz mógła zobaczyć, jak różne parametry współdziałają ze sobą.
+
+
+ Po ukończeniu tego tutorialu warto zapoznać się z innymi tutorialami, które wprowadzą inne ważne aspekty MEI. Te tutoriale służą również jako proste odniesienie do MEI - zawsze możesz do nich wrócić.
+
+
Aby rozpocząć, kliknij przycisk "Kontynuuj" w prawym dolnym rogu tego paragrafu.
+
\ No newline at end of file
From 3cabda40c8f55499670025ebd78f8275da6d5c27 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:39:48 -0500
Subject: [PATCH 04/26] created Polish quickstart end file
---
_tutorials-PL/101_quickstart_end.html | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart_end.html
diff --git a/_tutorials-PL/101_quickstart_end.html b/_tutorials-PL/101_quickstart_end.html
new file mode 100644
index 00000000..ec558bb0
--- /dev/null
+++ b/_tutorials-PL/101_quickstart_end.html
@@ -0,0 +1,14 @@
+
+
Gratulacje!
+
Właśnie skończyłaś swój pierwszy tutorial na temat MEI i powinnaś już być w stanie zakodować bardzo prostą melodię z MEI. Oczywiście do stworzenia kompletnego pliku MEI potrzeba znacznie więcej - pominęliśmy wszystkie informacje strukturalne dotyczące miarek i pięciolinii, a także musisz dowiedzieć się, jak ustawić metrum, klucze i klucze wiolinowe.
+
+ Jako kolejne kroki z MEI, chcielibyśmy polecić nasze tutoriale na temat
+ akordy or
+ pauzy.
+
+ Oczywiście zawsze możesz wrócić do nich (lub nawet do tego), gdy będziesz chciała przypomnieć sobie, jak robić pewne rzeczy w MEI.
+
+
Gdy tylko zapoznasz się w pewnym stopniu z MEI, zapraszamy Cię do podzielenia się swoimi doświadczeniami ze społecznością MEI i napisania tutoriala na temat aspektu MEI, który szczególnie Cię interesuje. Nie musisz być ekspertem - dobrze jest mieć tutoriale na różnych poziomach.
+
+ Często tutorial napisany przez innych początkujących, którzy właśnie opanowali zadanie, jest łatwiejszy do naśladowania niż przewodnik napisany przez kogoś, kto w ogóle nie widzi problemu. Mamy tutoriale na temat pisania poradników i szablony do naśladowania. Tak łatwo jest zostać aktywnym członkiem społeczności MEI :-)
+
\ No newline at end of file
From fd99b4d932a3af1aa8deacaa8fedd62384cd41ab Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:51:25 -0500
Subject: [PATCH 05/26] created Polish quickstart json file
---
_tutorials-PL/101_quickstart.json | 95 +++++++++++++++++++++++++++++++
1 file changed, 95 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart.json
diff --git a/_tutorials-PL/101_quickstart.json b/_tutorials-PL/101_quickstart.json
new file mode 100644
index 00000000..056eb191
--- /dev/null
+++ b/_tutorials-PL/101_quickstart.json
@@ -0,0 +1,95 @@
+{
+ "steps": [
+ {
+ "label":"Witamy w MEI",
+ "descFile": "101_quickstart_step-00-desc.html"
+ },
+ {
+ "label":"Pierwsza Nuta",
+ "editorLines":1,
+ "descFile": "101_quickstart_step-01-desc.html",
+ "xmlFile": "101_quickstart_step-01.xml",
+ "prefillFile": "101_quickstart_step-01-prefill.xml",
+ "xpaths": [
+ {"rule":"count(//mei:note) = 1", "renderanyway": false, "hint": "Potrzebujesz jeden element nutowy."},
+ {"rule":"count(//mei:note/@*) = 3 and //mei:note/@pname and //mei:note/@oct and //mei:note/@dur", "renderanyway": false, "hint": "Potrzebujesz trzech atrybutów: @pname, @oct, and @dur."},
+ {"rule":"//mei:note/@pname", "renderanyway": false, "hint": "Atrybut @pname pozwala wartości od 'a' to 'g'."},
+ {"rule":"//mei:note/@oct", "renderanyway": false, "hint": "Atrybut @oct wymaga liczby całkowite."},
+ {"rule":"//mei:note/@dur", "renderanyway": false, "hint": "Atrybut @dur pozwala wartości takich jak '1', '2', '4', '8'…"},
+ {"rule":"//mei:note/@pname = 'e'", "renderanyway": true, "hint": "Potrzebujesz atrybut @pname z wartością e."},
+ {"rule":"//mei:note/@oct = '4'", "renderanyway": true, "hint": "Potrzebujesz atrybut @oct z wartością 4."},
+ {"rule":"//mei:note/@dur = '4'", "renderanyway": true, "hint": "Potrzebujesz atrybut @dur z wartością 4."}
+ ]
+ },
+ {
+ "label":"Wiele Nut",
+ "editorLines":8,
+ "descFile": "101_quickstart_step-02-desc.html",
+ "xmlFile": "101_quickstart_step-02.xml",
+ "prefillFile": "101_quickstart_step-02-prefill.xml",
+ "xpaths": [
+ {"rule":"count(//mei:note) = 7", "renderanyway": true},
+ {"rule":"//mei:note[1]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[1]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[1]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@pname = 'd'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@pname = 'c'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@pname = 'd'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@dur = '4'", "renderanyway": true}
+ ]
+ },
+ {
+ "label":"Prosta Melodia",
+ "editorLines":8,
+ "descFile": "101_quickstart_step-03-desc.html",
+ "xmlFile": "101_quickstart_step-03.xml",
+ "prefillFile": "101_quickstart_step-03-prefill.xml",
+ "xpaths": [
+ {"rule":"count(//mei:note) = 7", "renderanyway": true},
+ {"rule":"//mei:note[1]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[1]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[1]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[1]/@dots = '1'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@pname = 'd'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[2]/@dur = '8'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@pname = 'c'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[3]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@pname = 'd'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[4]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[5]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[6]/@dur = '4'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@pname = 'e'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@oct = '4'", "renderanyway": true},
+ {"rule":"//mei:note[7]/@dur = '2'", "renderanyway": true}
+ ]
+ }
+ ],
+ "end":"101_quickstart_end.html",
+ "resp":[
+ {
+ "name":"Johannes Kepper",
+ "affiliation":"Beethovens Werkstatt | Universität Paderborn"
+ }
+ ]
+}
From 0b0fa9c2e49d04728bba76b319557b869d19a680 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 19:51:58 -0500
Subject: [PATCH 06/26] grouped in quickstart folder
---
_tutorials-PL/{ => 101_quickstart}/101_Quickstart.md | 0
_tutorials-PL/{ => 101_quickstart}/101_quickstart.json | 0
_tutorials-PL/{ => 101_quickstart}/101_quickstart_end.html | 0
.../{ => 101_quickstart}/101_quickstart_step-00-desc.html | 0
4 files changed, 0 insertions(+), 0 deletions(-)
rename _tutorials-PL/{ => 101_quickstart}/101_Quickstart.md (100%)
rename _tutorials-PL/{ => 101_quickstart}/101_quickstart.json (100%)
rename _tutorials-PL/{ => 101_quickstart}/101_quickstart_end.html (100%)
rename _tutorials-PL/{ => 101_quickstart}/101_quickstart_step-00-desc.html (100%)
diff --git a/_tutorials-PL/101_Quickstart.md b/_tutorials-PL/101_quickstart/101_Quickstart.md
similarity index 100%
rename from _tutorials-PL/101_Quickstart.md
rename to _tutorials-PL/101_quickstart/101_Quickstart.md
diff --git a/_tutorials-PL/101_quickstart.json b/_tutorials-PL/101_quickstart/101_quickstart.json
similarity index 100%
rename from _tutorials-PL/101_quickstart.json
rename to _tutorials-PL/101_quickstart/101_quickstart.json
diff --git a/_tutorials-PL/101_quickstart_end.html b/_tutorials-PL/101_quickstart/101_quickstart_end.html
similarity index 100%
rename from _tutorials-PL/101_quickstart_end.html
rename to _tutorials-PL/101_quickstart/101_quickstart_end.html
diff --git a/_tutorials-PL/101_quickstart_step-00-desc.html b/_tutorials-PL/101_quickstart/101_quickstart_step-00-desc.html
similarity index 100%
rename from _tutorials-PL/101_quickstart_step-00-desc.html
rename to _tutorials-PL/101_quickstart/101_quickstart_step-00-desc.html
From bfbeaab3b79991eb343a84ece5801a039cec448c Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Tue, 23 Jan 2024 20:34:07 -0500
Subject: [PATCH 07/26] created Polish translation of quickstart step1 file
---
.../step-01/101_quickstart_step-01-desc.html | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
diff --git a/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html b/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
new file mode 100644
index 00000000..91241ef7
--- /dev/null
+++ b/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
@@ -0,0 +1,12 @@
+
+
Aby zakodować nutę, wszystkie odpowiednie informacje muszą zostać zapisane w formie nadającej się do odczytu maszynowego. W zależności od potrzeb projektu, wybór tego, co jest istotne, a co nie, może się różnić, ale na potrzeby tego wprowadzenia, uzgodnijmy najbardziej podstawową informacje o nucie: Jest to zapisana wysokość dźwięku i czas trwania. Aby wyrazić wysokość dźwięku, MEI używa
+ Naukowa notacja wysokości dźwięków, w której tak zwane środkowe C jest wyrażone jako "C4". Jednak dzieli to na dwie oddzielne informacje: Nazwę wysokości dźwięku (w MEI nazwane @pname
) oraz oktawę (@oct
). Rozdzielenie to ma różne przyczyny, które nie mają tutaj znaczenia. Ważne jest również, aby pamiętać, że nazwy wysokości dźwięku są podawane w MEI małymi literami.
+
+
Inną ważną informacją jest oczywiście czas trwania (@dur
). Tutaj używane są proste liczby całkowite do wskazania czasu trwania nuty. Pełna nuta otrzymuje wartość 1
, półnuta potrzebuje 2
, ćwierćnuta wymaga 4
i tak dalej.
+
Poprosimy o wpisanie następującego kodu w okienku edytora:
+ <note pname="e" oct="4" dur="4"/>
. Powinieneś wtedy zobaczyć renderowaną nutę. Możesz pobawić się trochę wartościami atrybutów, aby zobaczyć, jak wpływają one na renderowanie. Zobaczysz również wskazówki, jak napisać poprawny kod.Gdy będziesz gotowa, upewnij się, że masz poprawny kod w edytorze, a następnie naciśnij przycisk "Kontynuuj" w prawym dolnym rogu.
+
+ PS: Jeśli nie jesteś za bardzo zaznajomiony z XML: Kiedykolwiek odnosimy się do atrybutów, poprzedzamy ich nazwę znakiem @.
+ Jest to powszechna praktyka i pochodzi z języka XPath. Pisząc je w XML, nie wolno dołączać znaku @, a jedynie nazwę atrybutu. Zapraszamy do zapoznania się z naszym tutorialem na temat podstaw XML.
+
+
From 665ae49ceaea894864d2db10d86b5ec5ec2b0d2f Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 7 Mar 2024 09:52:20 -0500
Subject: [PATCH 08/26] minor edits
---
.../101_quickstart/step-01/101_quickstart_step-01-desc.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html b/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
index 91241ef7..a89ffa21 100644
--- a/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
+++ b/_tutorials-PL/101_quickstart/step-01/101_quickstart_step-01-desc.html
@@ -4,9 +4,9 @@
Inną ważną informacją jest oczywiście czas trwania (@dur
). Tutaj używane są proste liczby całkowite do wskazania czasu trwania nuty. Pełna nuta otrzymuje wartość 1
, półnuta potrzebuje 2
, ćwierćnuta wymaga 4
i tak dalej.
Poprosimy o wpisanie następującego kodu w okienku edytora:
- <note pname="e" oct="4" dur="4"/>
. Powinieneś wtedy zobaczyć renderowaną nutę. Możesz pobawić się trochę wartościami atrybutów, aby zobaczyć, jak wpływają one na renderowanie. Zobaczysz również wskazówki, jak napisać poprawny kod.Gdy będziesz gotowa, upewnij się, że masz poprawny kod w edytorze, a następnie naciśnij przycisk "Kontynuuj" w prawym dolnym rogu.
+ <note pname="e" oct="4" dur="4"/>
. Powinnaś wtedy zobaczyć renderowaną nutę. Możesz pobawić się trochę wartościami atrybutów, aby zobaczyć, jak wpływają one na renderowanie. Zobaczysz również wskazówki, jak napisać poprawny kod. Gdy będziesz gotowa, upewnij się, że masz poprawny kod w edytorze, a następnie naciśnij przycisk "Kontynuuj" w prawym dolnym rogu.
- PS: Jeśli nie jesteś za bardzo zaznajomiony z XML: Kiedykolwiek odnosimy się do atrybutów, poprzedzamy ich nazwę znakiem @.
+ PS: Jeśli nie jesteś za bardzo zapoznana z XML: Kiedykolwiek odnosimy się do atrybutów, poprzedzamy ich nazwę znakiem @.
Jest to powszechna praktyka i pochodzi z języka XPath. Pisząc je w XML, nie wolno dołączać znaku @, a jedynie nazwę atrybutu. Zapraszamy do zapoznania się z naszym tutorialem na temat podstaw XML.
From 984b673e778c515f5ae6f27941b31d324f3e79f5 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 7 Mar 2024 10:29:44 -0500
Subject: [PATCH 09/26] added step 2 in PL
---
.../step-02/101_quickstart_step-02-desc.html | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart/step-02/101_quickstart_step-02-desc.html
diff --git a/_tutorials-PL/101_quickstart/step-02/101_quickstart_step-02-desc.html b/_tutorials-PL/101_quickstart/step-02/101_quickstart_step-02-desc.html
new file mode 100644
index 00000000..1e3268cf
--- /dev/null
+++ b/_tutorials-PL/101_quickstart/step-02/101_quickstart_step-02-desc.html
@@ -0,0 +1,9 @@
+
+
+ Gratulacje, właśnie zakodowałaś swoją pierwszą nutę w MEI. Teraz kontynuujmy i dodajmy kilka kolejnych nut, aby zakodować pierwszą prostą sekwencję nut:
+
+
+
+ Spróbuj odtworzyć powyższą sekwencję z MEI (w razie potrzeby możesz skopiować i wkleić pierwszy element notatki). Każda notatka wymaga jednego atrybutu @pname
, @oct
and @dur
. Należy pamiętać, że nazwy wysokości dźwięku są podawane jako ciągi małych liter (od a
do g
) w MEI.
+
+
\ No newline at end of file
From bb0fa47b1e3f94618449b80378e8c5e071f2735e Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 7 Mar 2024 10:37:02 -0500
Subject: [PATCH 10/26] added step 3 in PL
---
.../step-03/101_quickstart_step-03-desc.html | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 _tutorials-PL/101_quickstart/step-03/101_quickstart_step-03-desc.html
diff --git a/_tutorials-PL/101_quickstart/step-03/101_quickstart_step-03-desc.html b/_tutorials-PL/101_quickstart/step-03/101_quickstart_step-03-desc.html
new file mode 100644
index 00000000..e5c699af
--- /dev/null
+++ b/_tutorials-PL/101_quickstart/step-03/101_quickstart_step-03-desc.html
@@ -0,0 +1,12 @@
+
+
Gratulacje, właśnie zakodowałaś swoją pierwszą sekwencję nut w MEI. Teraz dostosujmy wartości czasu trwania, aby zakodować pierwszą prostą melodię - na pewno znasz "Mary had a little lamb":
+
+
+ Spróbuj odtworzyć powyższą melodię za pomocą MEI. Każda nuta wymaga @pname
, @oct
i @dur
.
+
+
+ Pamiętaj, że atrybut@dur
może mieć wartości takie jak "1"
, "2"
, "4"
,
+ "8"
albo "16"
aby wskazać różne wartości rytmiczne.
+ Do pierwszej notatki potrzebny jest dodatkowy atrybut @dots
, gdzie należy określić liczbę kropek jako liczbę całkowitą - w tym przypadku jest to po prostu dots="1"
.
+
+
\ No newline at end of file
From 1150134ea537da41c3a2712104ebf5115c9275f1 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 7 Mar 2024 10:47:53 -0500
Subject: [PATCH 11/26] added tutorial 102 for PL
---
.../102_incipit/102_incipit_step-01-desc.html | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/102_incipit_step-01-desc.html
diff --git a/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html b/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html
new file mode 100644
index 00000000..ed1e31f1
--- /dev/null
+++ b/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html
@@ -0,0 +1,11 @@
+
+
Krok pierwszy: kodowanie szkieletu strukturalnego przykładu.
+
+
Aby zakodować linię melodyczną z tego przykładu, konieczne będzie dołączenie informacji o sposobie organizacji partytury i pięciolinii. W MEI tego rodzaju informacje są przekazywane za pośrednictwem elementów <scoreDef>
(score definition), <staffGrp>
(staff group) i <staffDef>
(staff definition). W tym przypadku <scoreDef>
służy do określenia wspólnych parametrów partytury, <staffGrp>
dostarcza informacji o grupowaniu pięciolinii, a <staffDef>
zawiera wszystkie rzeczy związane z poszczególnymi pięcioliniami. W sumie elementy te zapewniają kontekst strukturalny dla treści muzycznej, np. informacje o liczbie, grupowaniu lub kolejności pięciolinii, kluczu wiolinowym, sygnaturze tonacji lub sygnaturze czasowej.
+
+
+
+
Na razie zacznijmy od szkieletu struktury.
+
+
W edytorze poniżej wpisz <scoreDef>
element (score definition) który zawiera element podrzędny <staffGrp>
(staff group) i jego element podrzędny <staffDef>
(staff definition). Aby uzyskać wizualny wynik (renderowanie) kodowania, w kolejnych krokach należy podać więcej informacji.
+
\ No newline at end of file
From 3cad7d2cf5edb97f77398173a69414f602f80d5c Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 7 Mar 2024 11:33:29 -0500
Subject: [PATCH 12/26] tutorials-PL continuing translations
---
.../102_incipit/102_incipit_step-01-desc.html | 11 ---------
.../step-01/102_incipit_step-01-desc.html | 11 +++++++++
.../step-01/102_incipit_step-01-prefill.xml | 1 +
.../step-02/102_incipit_step-02-desc.html | 23 +++++++++++++++++++
4 files changed, 35 insertions(+), 11 deletions(-)
delete mode 100644 _tutorials-PL/102_incipit/102_incipit_step-01-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-01/102_incipit_step-01-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-01/102_incipit_step-01-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-02/102_incipit_step-02-desc.html
diff --git a/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html b/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html
deleted file mode 100644
index ed1e31f1..00000000
--- a/_tutorials-PL/102_incipit/102_incipit_step-01-desc.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
Krok pierwszy: kodowanie szkieletu strukturalnego przykładu.
-
-
Aby zakodować linię melodyczną z tego przykładu, konieczne będzie dołączenie informacji o sposobie organizacji partytury i pięciolinii. W MEI tego rodzaju informacje są przekazywane za pośrednictwem elementów <scoreDef>
(score definition), <staffGrp>
(staff group) i <staffDef>
(staff definition). W tym przypadku <scoreDef>
służy do określenia wspólnych parametrów partytury, <staffGrp>
dostarcza informacji o grupowaniu pięciolinii, a <staffDef>
zawiera wszystkie rzeczy związane z poszczególnymi pięcioliniami. W sumie elementy te zapewniają kontekst strukturalny dla treści muzycznej, np. informacje o liczbie, grupowaniu lub kolejności pięciolinii, kluczu wiolinowym, sygnaturze tonacji lub sygnaturze czasowej.
-
-
-
-
Na razie zacznijmy od szkieletu struktury.
-
-
W edytorze poniżej wpisz <scoreDef>
element (score definition) który zawiera element podrzędny <staffGrp>
(staff group) i jego element podrzędny <staffDef>
(staff definition). Aby uzyskać wizualny wynik (renderowanie) kodowania, w kolejnych krokach należy podać więcej informacji.
-
\ No newline at end of file
diff --git a/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-desc.html b/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-desc.html
new file mode 100644
index 00000000..8491e684
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-desc.html
@@ -0,0 +1,11 @@
+
+
Krok pierwszy: kodowanie szkieletu strukturalnego przykładu.
+
+
Aby zakodować linię melodyczną z tego przykładu, konieczne będzie dołączenie informacji o sposobie organizacji partytury i pięciolinii. W MEI tego rodzaju informacje są przekazywane za pośrednictwem elementów <scoreDef>
(definicja partytury), <staffGrp>
(grupa pięciolinii) i <staffDef>
(definicja pięciolinii). W tym przypadku <scoreDef>
służy do określenia wspólnych parametrów partytury, <staffGrp>
dostarcza informacji o grupowaniu pięciolinii, a <staffDef>
zawiera wszystkie rzeczy związane z poszczególnymi pięcioliniami. W sumie elementy te zapewniają kontekst strukturalny dla treści muzycznej, np. informacje o liczbie, grupowaniu lub kolejności pięciolinii, kluczu wiolinowym, sygnaturze tonacji lub sygnaturze czasowej.
+
+
+
+
Na razie zacznijmy od szkieletu struktury.
+
+
W edytorze poniżej wpisz <scoreDef>
element (definicja partytury) który zawiera element podrzędny <staffGrp>
(grupa pięciolinii) i jego element podrzędny <staffDef>
(definicja pięciolinii). Aby uzyskać wizualny wynik (renderowanie) kodowania, w kolejnych krokach należy podać więcej informacji.
+
\ No newline at end of file
diff --git a/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-prefill.xml b/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-prefill.xml
new file mode 100644
index 00000000..7012673f
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-01/102_incipit_step-01-prefill.xml
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/_tutorials-PL/102_incipit/step-02/102_incipit_step-02-desc.html b/_tutorials-PL/102_incipit/step-02/102_incipit_step-02-desc.html
new file mode 100644
index 00000000..8cc6903f
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-02/102_incipit_step-02-desc.html
@@ -0,0 +1,23 @@
+
+
Krok drugi: dodanie atrybutów do szkieletu strukturalnego utworzonego w poprzednim kroku. Atrybuty te dostarczą podstawowych informacji o pięciolinii, klucza i tonacji przykładu.
+
+
W poprzednim kroku nauczyłaś się, że element <scoreDef>
jest używany do określania wspólnych parametrów partytury, a <staffDef>
zawiera wszystkie metadane związane z pojedynczą pięciolinią. Oczywiście w tym przykładzie incipitu jest tylko jeden incipit nutowy, więc byłoby możliwe zadeklarowanie sygnatury tonacji (3 bemole) i symbolu metrum (czas cięcia) w <staffDef>
. Ale przenieśmy te informacje do <scoreDef>
, zakładając, że tonacja i metrum są takie same dla wszystkich innych instrumentów lub części całej partytury Opus 1 Halvorsena. Aby wskazać określony klucz lub metrum, należy użyć następujących atrybutów <scoreDef>
i dodać je do elementu: <scoreDef>
+
+ @key.sig
(sygnatura klawisza) – liczba krzyżyków/bemoli w zapisanej sygnaturze klucza, użyj “3f”
na 3 bemole.
+ @meter.sym
(symbol metru) – użyj “cut”
dla czasu cięcia (C/).
+
+
+
+
+
Z kolei klucz wiolinowy jest opisany w elemencie <staffDef>
, ponieważ jest on powiązany z poszczególną pięciolinią (inne instrumenty mogą mieć inne klucze wiolinowe). Należy użyć następujących atrybutów <staffDef>
:
+
+ @n
(liczba porządkowa) - pozycja pięciolinii w otaczającym <staffGrp>
, użyj ”1”
dla dla pierwszej i jedynej pięciolinii
+ @lines
– użyj “5”
na pięciolinię
+ @clef.shape
– wartość dla symbolu klucza wiolinowego: użyj “G”
dla symbolu klucza G.
+ @clef.line
– linia pięciolinii, na której umieszczony jest klucz wiolinowy (licząc od dołu), użyj “2”
.
+
+
+
Dodaj atrybuty opisane powyżej i ich odpowiednie wartości do <scoreDef>
i <staffDef>
w edytorze poniżej. (W przypadku renderowania potrzebne są jeszcze dodatkowe informacje. Idźmy dalej!).
+
+
PS: Chociaż odnosimy się do atrybutów z poprzedzającym znakiem @ w tekście, nie jest to konieczne (a nawet dozwolone) w kodowaniu.
+
\ No newline at end of file
From 8ceabf2e1eb49ab548b8c990de58a1a14d69d7af Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 21 Mar 2024 10:17:47 -0400
Subject: [PATCH 13/26] added step-03 prefill
---
.../102_incipit/step-03/102_incipit_step-03-prefill.xml | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/step-03/102_incipit_step-03-prefill.xml
diff --git a/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-prefill.xml b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-prefill.xml
new file mode 100644
index 00000000..fce29753
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-prefill.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
From 0e808f04880a9fe3744377d5d27bd9fa61883395 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 21 Mar 2024 11:00:19 -0400
Subject: [PATCH 14/26] created step-03-desc
---
.../step-03/102_incipit_step-03-desc.html | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
diff --git a/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
new file mode 100644
index 00000000..1793d868
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
@@ -0,0 +1,15 @@
+
+
Krok trzeci: konfiguracja pojedynczej <measure>
(miary) z pustą <staff>
(pięciolinią) i <layer>
(taktem).
+
+
Świetna robota! Zadeklarowałaś potrzebne metadane dotyczące organizacji partytury i pięciolinii. Na drodze do zakodowania pierwszej nuty przykładu, będziesz musiała przygotować dla niej "środowisko", tj. miarę, pięciolinię i warstwę (głos).
+
+
<section> (część) jest kontenerem dla elementów <measure>
(miary) i jest umieszczany bezpośrednio po definicji partytury (<scoreDef>
). Elementy <measure>
(miary) mogą zawierać wiele pięciolinii, które mogą mieć wiele warstw (<layer>
). Element <layer>
(warstwa) będzie elementem nadrzędnym dla elementów <note>
(nuta) w następnym kroku.
+
+
+ Aby wskazać numerowaną pozycję miar, pięciolinii lub warstw, można użyć atrybu @n
.
+
+ Skonfiguruj przedtakt: W edytorze wstaw element <section>
. Wewnątrz elementu <section>
dodaj pusty element <measure>
i ustaw numerprzedtaktu na "0"
. Dodaj element potomny <staff>
do elementu <measure>
i ustaw jego numer na "1"
(pierwsza pięciolinia w miarze 0). Następnie dodaj nienumerowany element potomny <layer>
do elementu <staff>
.
+
+ PS: Posiadając potrzebne informacje dostarczone w scoredef i section/measure, renderer jest teraz w stanie wizualizować kodowanie. Możesz trochę pobawić się wartościami atrybutów <scoreDef>
i <staffDef>
, aby zobaczyć, jak wpływają one na renderowanie.
+
+
\ No newline at end of file
From c1e4981fb60ccf923de6c958009b06f71e174407 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 21 Mar 2024 11:02:27 -0400
Subject: [PATCH 15/26] Update 102_incipit_step-03-desc.html
corrected typo
---
.../102_incipit/step-03/102_incipit_step-03-desc.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
index 1793d868..45c0b433 100644
--- a/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
+++ b/_tutorials-PL/102_incipit/step-03/102_incipit_step-03-desc.html
@@ -6,10 +6,10 @@
<section> (część) jest kontenerem dla elementów <measure>
(miary) i jest umieszczany bezpośrednio po definicji partytury (<scoreDef>
). Elementy <measure>
(miary) mogą zawierać wiele pięciolinii, które mogą mieć wiele warstw (<layer>
). Element <layer>
(warstwa) będzie elementem nadrzędnym dla elementów <note>
(nuta) w następnym kroku.
- Aby wskazać numerowaną pozycję miar, pięciolinii lub warstw, można użyć atrybu @n
.
+ Aby wskazać numerowaną pozycję miar, pięciolinii lub warstw, można użyć atrybutu @n
.
Skonfiguruj przedtakt: W edytorze wstaw element <section>
. Wewnątrz elementu <section>
dodaj pusty element <measure>
i ustaw numerprzedtaktu na "0"
. Dodaj element potomny <staff>
do elementu <measure>
i ustaw jego numer na "1"
(pierwsza pięciolinia w miarze 0). Następnie dodaj nienumerowany element potomny <layer>
do elementu <staff>
.
PS: Posiadając potrzebne informacje dostarczone w scoredef i section/measure, renderer jest teraz w stanie wizualizować kodowanie. Możesz trochę pobawić się wartościami atrybutów <scoreDef>
i <staffDef>
, aby zobaczyć, jak wpływają one na renderowanie.
-
\ No newline at end of file
+
From 8b6ea5698364a1c754b461ebd46ea06a76c58b70 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 21 Mar 2024 11:51:00 -0400
Subject: [PATCH 16/26] created 102 end html file
---
_tutorials-PL/102_incipit/102_incipit_end.html | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/102_incipit_end.html
diff --git a/_tutorials-PL/102_incipit/102_incipit_end.html b/_tutorials-PL/102_incipit/102_incipit_end.html
new file mode 100644
index 00000000..eec4d846
--- /dev/null
+++ b/_tutorials-PL/102_incipit/102_incipit_end.html
@@ -0,0 +1,9 @@
+
+
Gratulacje!
+
Pomyślnie ukończyłaś ten zaawansowany samouczek i powinnaś być w stanie zakodować pojedynczą melodię jednogłosową z wieloma miarami, różnymi wartościami nut i reszty, belki, łuki, i dynamiką.
+
+
Oto kilka innych samouczków, które chcielibyśmy polecić jako kolejne kroki z MEI. Oczywiście zawsze możesz do nich wrócić (lub nawet do tego), gdy będziesz chciała przypomnieć sobie, jak zrobić pewne rzeczy w MEI.
+
+
Jak tylko w pewnym stopniu zapoznasz się z MEI, zapraszamy do podzielenia się swoimi doświadczeniami ze społecznością MEI i
+ napisz też samouczek na temat aspektu MEI, który szczególnie cię interesuje. Nie musisz być ekspertem - dobrze jest mieć tutoriale na różnych poziomach. Często tutorial napisany przez innych początkujących, którzy właśnie opanowali zadanie, jest łatwiejszy do naśladowania niż przewodnik napisany przez kogoś, kto w ogóle nie widzi problemu. Mamy samouczek dotyczący pisania samouczków i szablony do naśladowania. Tak łatwo jest zostać aktywnym członkiem społeczności MEI :-)
+
\ No newline at end of file
From a74b3e7d5b7aecd0a9e2705e15364b0031cc3bea Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 25 Apr 2024 09:00:51 -0400
Subject: [PATCH 17/26] added 102 incipit page
---
_tutorials-PL/102_incipit/102_incipit.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/102_incipit.md
diff --git a/_tutorials-PL/102_incipit/102_incipit.md b/_tutorials-PL/102_incipit/102_incipit.md
new file mode 100644
index 00000000..1e2e5f41
--- /dev/null
+++ b/_tutorials-PL/102_incipit/102_incipit.md
@@ -0,0 +1,12 @@
+---
+layout: tutorials-PL
+type: tutorial-PL
+name: "ZAAWANSOWANE: Kodowanie incipitów"
+fullname: "Zaawansowany samouczek na temat kodowania incipitów w MEI"
+data: "102_incipit.json"
+---
+Witamy! W tym samouczku dowiesz się, jak zakodować incipit (początkową sekwencję nut utworu muzycznego) w MEI, korzystając z następującego przykładu:
+
+![Hallingdal Bataljons Marsch](./102_incipit.png)
+
+Przy okazji: jest to początek _Hallingdal Bataljons Marsch_, Opus 1 norweskiego kompozytora [Johan Halvorsen](https://en.wikipedia.org/wiki/Johan_Halvorsen) (1864-1935).
From 7313afb3611ff2d9c4f29392e91550ae9e462f4d Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Fri, 26 Apr 2024 12:28:52 -0400
Subject: [PATCH 18/26] Create 102_incipit_step-04-desc.html
---
.../step-04/102_incipit_step-04-desc.html | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
diff --git a/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
new file mode 100644
index 00000000..73d472de
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
@@ -0,0 +1,19 @@
+
+
+
+
Krok czwarty: kodowanie pierwszej nuty tego przykładu.
+
+
Po przygotowaniu struktury taktu w poprzednim kroku, jesteś teraz gotowa do zakodowania pierwszej nuty przykładu. W MEI nuty opisują pojedyncze zdarzenia dźwiękowe, które są kodowane za pomocą elementów <note>
, przy czym elementy <note>
mogą być potomkami elementu <layer>
. Możesz zdefiniować główne cechy nuty, takie jak dźwięk i długość, korzystając z następujących atrybutów na elemencie <note>
:
+
+
+ @pname
(nazwa dźwięku) – małe litery od „a”
do „g”
, tutaj użyj „b”
.
+ @oct
(oktawa) – wartość oktawy dźwięku jako liczby całkowite od „0”
do ”9”
, C4 to dźwięk określony przez klucz C, użyj „3”
+ @dur
(długość) – np. “1”
dla całej nuty, “2”
dla półnuty, “4”
dla ćwierćnuty, “8”
dla ósemki, “16”
dla szesnastki, … “2048”
dla 2048-nuty, użyj “4”
+
+
+
Oto przykład, jak zakodować całą nutę C4: <note pname="c" oct="4" dur="1"></note>
.
+
+
W edytorze poniżej wpisz kodowanie pierwszej nuty przykładu wewnątrz elementu <layer>
.
+
+
PS: Jeśli interesuje Cię samouczek tylko na temat elementów <note>
, zobacz nasz samouczek Quickstart.
+
\ No newline at end of file
From e26389ccb7c2f3085c3cdc84e7ae80770f84246d Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 9 May 2024 09:56:51 -0400
Subject: [PATCH 19/26] translated step 04
---
_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html | 2 --
1 file changed, 2 deletions(-)
diff --git a/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
index 73d472de..fe980b48 100644
--- a/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
+++ b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html
@@ -1,5 +1,3 @@
-
-
Krok czwarty: kodowanie pierwszej nuty tego przykładu.
From 51908e703c9e2ec02430304015b21191bb92d75b Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 9 May 2024 10:04:08 -0400
Subject: [PATCH 20/26] Create 102_incipit_step-04-prefill.xml
---
.../step-04/102_incipit_step-04-prefill.xml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/step-04/102_incipit_step-04-prefill.xml
diff --git a/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-prefill.xml b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-prefill.xml
new file mode 100644
index 00000000..ecc1bf15
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-prefill.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
From 671195b235a96c891346cf4559122af96aca09ea Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 9 May 2024 10:49:56 -0400
Subject: [PATCH 21/26] translated 102
---
.../step-05/102_incipit_step-05-desc.html | 7 +++
.../step-05/102_incipit_step-05-prefill.xml | 10 ++++
.../step-06/102_incipit_step-06-desc.html | 7 +++
.../step-06/102_incipit_step-06-prefill.xml | 8 +++
.../step-07/102_incipit_step-07-desc.html | 7 +++
.../step-07/102_incipit_step-07-prefill.xml | 12 +++++
.../step-08/102_incipit_step-08-desc.html | 7 +++
.../step-08/102_incipit_step-08-prefill.xml | 1 +
.../step-09/102_incipit_step-09-desc.html | 11 +++++
.../step-09/102_incipit_step-09-prefill.xml | 1 +
.../step-10/102_incipit_step-10-desc.html | 14 ++++++
.../step-10/102_incipit_step-10-prefill.xml | 49 +++++++++++++++++++
.../step-11/102_incipit_step-11-desc.html | 25 ++++++++++
.../step-11/102_incipit_step-11-prefill.xml | 8 +++
.../step-12/102_incipit_step-12-desc.html | 23 +++++++++
.../step-12/102_incipit_step-12-prefill.xml | 21 ++++++++
16 files changed, 211 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/step-05/102_incipit_step-05-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-05/102_incipit_step-05-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-06/102_incipit_step-06-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-06/102_incipit_step-06-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-07/102_incipit_step-07-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-07/102_incipit_step-07-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-08/102_incipit_step-08-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-08/102_incipit_step-08-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-09/102_incipit_step-09-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-09/102_incipit_step-09-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-10/102_incipit_step-10-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-10/102_incipit_step-10-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-11/102_incipit_step-11-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-11/102_incipit_step-11-prefill.xml
create mode 100644 _tutorials-PL/102_incipit/step-12/102_incipit_step-12-desc.html
create mode 100644 _tutorials-PL/102_incipit/step-12/102_incipit_step-12-prefill.xml
diff --git a/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-desc.html b/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-desc.html
new file mode 100644
index 00000000..ad8404bb
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-desc.html
@@ -0,0 +1,7 @@
+
+
Krok piąty: łączenie tego, czego nauczyłaś się w ostatnich dwóch krokach, kodowanie jednocześnie struktury następnego taktu i drugiej nuty przykładu.
+
+
W edytorze poniżej dodaj kolejny element <measure>
(@n="1"
) z pięciolinijką (również @n="1"
) i z warstwą obok istniejącego taktu początkowego. Dodaj drugą nutę przykładu (ćwierćnutę e bemol 4) do tego nowego taktu. Nie martw się, że zawartość takty będzie zbyt krótka w określonym metrum - w następnych krokach ją uzupełnisz.
+
+
PS: Kodowanie zostanie wyrenderowane, gdy wpiszesz nową nutę.
+
diff --git a/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-prefill.xml b/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-prefill.xml
new file mode 100644
index 00000000..fd7f4e57
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-05/102_incipit_step-05-prefill.xml
@@ -0,0 +1,10 @@
+
diff --git a/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-desc.html b/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-desc.html
new file mode 100644
index 00000000..8c585d05
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-desc.html
@@ -0,0 +1,7 @@
+
+
Krok szósty: kodowanie grupy zaznaczonych nut.
+
+
Świetnie! Zakodowałaś pierwszą nutę pierwszego pełnego taktu. Kolejne dwie nuty przykładu są pogrupowane pod belką. Aby wyrazić to w MEI, należy użyć elementu <beam>
. <beam>
jest kontenerem dla serii zaznaczonych wyrażeń (takich jak nuty, pauzy lub akordy), które zaczynają się i kończą całkowicie w tym samym takcie.
+
+
W edytorze poniżej, proszę dodaj element <beam>
w określonej pozycji, zanim dodasz dwie osobne dzieci <note>
(e bemol i g). Nie zapomnij uwzględnić odpowiednich wartości atrybutów na elementach <note>
.
+
diff --git a/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-prefill.xml b/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-prefill.xml
new file mode 100644
index 00000000..a37eba37
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-06/102_incipit_step-06-prefill.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-desc.html b/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-desc.html
new file mode 100644
index 00000000..ac2cfa1e
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-desc.html
@@ -0,0 +1,7 @@
+
+
Krok siódmy: kodowanie nut z kropkowanymi długościami.
+
+
Kolejne dwie nuty w przykładzie wprowadzają nową figurę rytmiczną, w tym kropkowaną ćwierćnutę i ósemkę. Aby zakodować rytm kropkowany, musisz użyć atrybutu @dots
na elemencie <note>
i ustawić liczbę kropek jako wartość atrybutu, np. “1”
dla jednej kropki lub “2”
dla dwóch kropek.
+
+
Proszę zakoduj resztę takty (@n=1
) w edytorze poniżej, dodając dwie <note>
z różnymi wartościami rytmicznymi (kropkowaną ćwierćnutę, ósemkę) obok elementu <beam>
, który dodałaś w poprzednim kroku.
+
diff --git a/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-prefill.xml b/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-prefill.xml
new file mode 100644
index 00000000..deda3d91
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-07/102_incipit_step-07-prefill.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-desc.html b/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-desc.html
new file mode 100644
index 00000000..653c9fe2
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-desc.html
@@ -0,0 +1,7 @@
+
+
Krok ósmy: zakodowanie pełnego kolejnego takta, aby powtórzyć wszystko, co zostało nauczone w poprzednich krokach.
+
+
Proszę zakoduj następny takt (@n=2
) w edytorze poniżej. Dodaj elementy <measure>
i <staff>
oraz element <layer>
, który zawiera cztery elementy potomne: ćwierćnutę <note>
(e bemol 4), <beam>
z dwoma ósemkowymi <note>
ami (e bemol 4, g4) oraz kropkowaną ćwierćnutę <note>
(b bemol 4) z ósemkową <note>
(g4).
+
+
Jako dodatkowe wyzwanie, okno edytora tym razem nie zawiera wstępnie wypełnionej treści, więc nie otrzymujesz orientacji od kodowania poprzednich taktów. W przypadku jakichkolwiek wątpliwości, rozważ wskazówki poniżej okna edytora, które powinny cię prowadzić podczas tego zadania.
+
diff --git a/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-prefill.xml b/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-prefill.xml
new file mode 100644
index 00000000..06f2e609
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-08/102_incipit_step-08-prefill.xml
@@ -0,0 +1 @@
+
diff --git a/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-desc.html b/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-desc.html
new file mode 100644
index 00000000..c73cd81a
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-desc.html
@@ -0,0 +1,11 @@
+
+
Krok dziewiąty: Zakodowanie wartości nut w ostatnich dwóch taktach przykładu.
+
+
Wspaniale, zakodowałaś drugi takt! Teraz trochę podniesiemy poziom trudności: czekają na nas ostatnie dwa takty. Ale nie martw się: to najbardziej ambitny krok tego samouczka. Obiecuję!
+
+
Aby zakodować ostatnie dwa takty, będziesz musiała wiedzieć o jednym dodatkowym elemencie: pauza jest kodowana za pomocą elementu <rest>
mającego atrybut @dur
podobny do elementu <note>
. Ale oczywiście <rest>
nie ma atrybutów @pname
ani @oct
. Na tym etapie możesz zignorować dodatkowe elementy, takie jak dynamika, łuki lub akcenty, ponieważ będą one adresowane osobno w następnych krokach końcowych.
+
+
Proszę zakoduj ostatnie dwa takty (@n=3
& @n=4
) przykładu w edytorze poniżej. Dodaj elementy <measure>
, <staff>
i <layer>
, a także odpowiednie elementy <note>
, <beam>
lub <rest>
. Pamiętaj, jak element <beam>
jest używany do grupowania odpowiadających mu elementów <note>
.
+
+
Znowu nie ma wstępnie wypełnionej treści w oknie edytora dla tego kroku. Jeśli czujesz się zagubiona lub niepewna w jakimkolwiek momencie, spróbuj kierować się wskazówkami, które są wyświetlane poniżej okna edytora. Powinno to prowadzić cię przez to zadanie.
+
diff --git a/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-prefill.xml b/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-prefill.xml
new file mode 100644
index 00000000..06f2e609
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-09/102_incipit_step-09-prefill.xml
@@ -0,0 +1 @@
+
diff --git a/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-desc.html b/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-desc.html
new file mode 100644
index 00000000..8b86b7a8
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-desc.html
@@ -0,0 +1,14 @@
+
+
Krok dziesiąty: dodawanie znaków artykulacyjnych do kodowania przykładu.
+
+
Świetnie! Zakodowałaś całą melodię przykładu. Rozważmy teraz, krok po kroku, brakujące elementy dodatkowe, takie jak dynamika, slury czy akcenty.
+
+
Artykulacje, czyli wskazówki dotyczące sposobu grania nuty lub akordu, mogą być kodowane za pomocą elementów <artic>
, które są stosowane jako potomkowie elementów <note>
.
+ W tym kroku samouczka powinny być używane następujące atrybuty na elemencie <artic>
:
+
+ @artic
(typ artykulacji) – rodzaj znaku artykulacyjnego, np.: akcent “acc”
, staccato “stacc”
, tenuto “ten”
, tutaj użyj “acc”
,
+ @place
– położenie znaku artykulacyjnego, “powyżej”
lub “poniżej”
pięciolinii, tutaj użyj “powyżej”
.
+
+
+
Znajdź elementy <note>
w przykładzie, do których przypisane są artykulacje (są akcenty muzyczne na kropkowanych ćwierćnutach w takcie 1 i 2 oraz na ćwierćnucie w takcie 3). Dodaj potomny element <artic>
do tych elementów <note>
i zastosuj odpowiednie atrybuty (@artic
, @place
).
+
diff --git a/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-prefill.xml b/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-prefill.xml
new file mode 100644
index 00000000..ce52f585
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-10/102_incipit_step-10-prefill.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-desc.html b/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-desc.html
new file mode 100644
index 00000000..7c432b2f
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-desc.html
@@ -0,0 +1,25 @@
+
+
Krok jedenasty: dodawanie oznaczeń dynamicznych do twojego kodowania przykładu.
+
+
Dynamika jest określana za pomocą elementu <dynam>
. Element <dynam>
może być używany do określania chwilowych lub ciągłych oznaczeń dynamicznych, np. “p”
, “mf”
lub “cresc. poco a poco”
. Są one umieszczane jako zwykły tekst między tagami otwarcia i zamknięcia elementu <dynam>
, jak na przykład: <dynam>ff</dynam>
.
+
+
W przeciwieństwie do znaków artykulacyjnych, element <dynam>
jest tzw. zdarzeniem kontrolnym
, które grupuje elementy (takie jak dynamika, łuki, akcenty, znaki pedałowe itp.), które zależą od innych zdarzeń, takich jak nuty lub pauzy, dla swojej ważności. Ogólnie rzecz biorąc, zdarzenia kontrolne
nie są kodowane jako elementy potomne odpowiadających im zdarzeń, które są przeznaczone do kontrolowania. W praktyce oznacza to, że są one umieszczane na zewnątrz elementów staff
w większości przypadków.
+
+
Istnieją różne opcje wskazujące odniesienie do <note>
lub <rest>
(lub innego zdarzenia) z zdarzenia kontrolnego
jak <dynam>
:
+
+
+ - Najpierw,
<staff>
, do którego ma być zastosowane zdarzenie kontrolne
, może być odwołane za pomocą atrybutu @staff
.
+ - Ponadto, punkt początkowy oznaczenia dynamicznego musi być wskazany za pomocą atrybutu
startid
, tstamp
, tstamp.ges
lub tstamp.real
. Punkt końcowy może być wskazany za pomocą atrybutu dur
, dur.ges
, endid
lub tstamp2
. Jest to błąd semantyczny, jeśli nie określisz atrybutu punktu początkowego.
+
+
+
W tym przykładzie atrybut @tstamp
jest używany do wskazania punktu początkowego oznaczenia dynamicznego. @tstamp
może być używany do kodowania czasu rozpoczęcia w terminach czasu muzycznego, tj. uderzeń, wyrażonych w zapisanym metrum.
+
+
Następujące atrybuty mają być używane tutaj wewnątrz <dynam>
:
+
+ @staff
– numer identyfikacyjny pięciolinii, do której jest stosowany element, np. “1”
w tym przypadku,
+ @tstamp
(znacznik czasu) – czas rozpoczęcia w terminach czasu muzycznego, tj. uderzeń, np. “1”
, “2.5”
,
+ @place
– położenie oznaczenia dynamicznego, “powyżej”
lub “poniżej”
pięciolinii.
+
+
+
Znajdź elementy <note>
w przykładzie, do których są przypisane dynamiki. Dodaj element potomny <dynam>
do odpowiedniego elementu <staff>
i zastosuj atrybuty (@staff
, @tstamp
, @place
). Nie zapomnij umieścić znaku ff
między tagami otwarcia i zamknięcia elementu <dynam>
.
+
diff --git a/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-prefill.xml b/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-prefill.xml
new file mode 100644
index 00000000..4e19c800
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-11/102_incipit_step-11-prefill.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-desc.html b/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-desc.html
new file mode 100644
index 00000000..6002929f
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-desc.html
@@ -0,0 +1,23 @@
+
+
Krok dwunasty: dodanie ostatniego brakującego elementu przykładu, łuku w trzecim takcie.
+
+
Istnieją dwa różne sposoby zakodowania łuku w MEI:
+
+ - Atrybut
@slur
na elemencie <note>
lub <chord>
z wartością i=initial
, m=medial
lub t=terminal
.
+ - Oddzielny element
<slur>
.
+
+
+
W tym ostatnim kroku, będziesz używać drugiego podejścia: Podobnie jak w przypadku dynamiki, elementy <slur>
są zdarzeniami kontrolnymi. Nie są one kodowane jako elementy potomne odpowiadających im zdarzeń, ale są umieszczane w większości przypadków na zewnątrz elementów staff
.
+
+
Aby wskazać punkt początkowy i końcowy łuku, można zastosować odniesienie do odpowiadającego @xml:id
elementu <note>
lub <chord>
. @xml:id
to identyfikatory z arbitralną, ale unikalną sekwencją znaków, które regulują nazewnictwo elementu w całym dokumencie i ułatwiają tworzenie linków między elementami a innymi zasobami. Dla elementów <slur>
, odniesienie do @xml:id
elementu można podać za pomocą atrybutów @startid
i @endid
.
+
+
Razem z @startid
i @endid
, w tym kroku należy użyć następujących atrybutów:
+
+ @staff
– numer identyfikacyjny pięciolinii, do której jest stosowany element, np. “1”
w tym przypadku,
+ @curvedir
(kierunek łuku) – opisuje łuk z ogólnym terminem wskazującym kierunek skrzywienia: “powyżej”
, “poniżej”
lub “mieszany”
,
+ @startid
– odwołanie do xml:id
początkowej nuty łuku, w formie: #xml:id
(zauważ hasz #
),
+ @endid
– odwołanie do xml:id
końcowej nuty łuku, w formie: #xml:id
(zauważ hasz #
).
+
+
+
Zidentyfikuj pierwszą i ostatnią nutę, do których jest dołączony łuk (wewnątrz pierwszego elementu <beam>
w takcie 3) i dodaj atrybuty @xml:id
do obu elementów <note>
. Ustaw unikalną wartość dla każdego @xml:id
, dla tego przykładu możesz użyć wartości: “d1e4614”
, “d1e4615”
. Dodaj element kontrolny <slur>
po zamknięciu tagu <staff>
i zastosuj odpowiednie atrybuty.
+
diff --git a/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-prefill.xml b/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-prefill.xml
new file mode 100644
index 00000000..1c19df57
--- /dev/null
+++ b/_tutorials-PL/102_incipit/step-12/102_incipit_step-12-prefill.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From e5d4aca24850f32790650b49498e03f73409f54b Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 6 Jun 2024 10:46:16 -0400
Subject: [PATCH 22/26] created PL translation of 102_incipit json file
---
_tutorials-PL/102_incipit/102_incipit.json | 1431 ++++++++++++++++++++
1 file changed, 1431 insertions(+)
create mode 100644 _tutorials-PL/102_incipit/102_incipit.json
diff --git a/_tutorials-PL/102_incipit/102_incipit.json b/_tutorials-PL/102_incipit/102_incipit.json
new file mode 100644
index 00000000..2a66a0f3
--- /dev/null
+++ b/_tutorials-PL/102_incipit/102_incipit.json
@@ -0,0 +1,1431 @@
+{
+ "steps": [
+ {
+ "label": "Definicja partytury i pięciolinii",
+ "editorLines": 7,
+ "descFile": "102_incipit_step-01-desc.html",
+ "prefillFile": "102_incipit_step-01-prefill.xml",
+ "xmlFile": "102_incipit_step-01.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:scoreDef) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element scoreDef."
+ },
+ {
+ "rule": "count(//mei:scoreDef/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie scoreDef."
+ },
+ {
+ "rule": "count(//mei:staffGrp) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element staffGrp."
+ },
+ {
+ "rule": "count(//mei:staffGrp/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie staffGrp."
+ },
+ {
+ "rule": "//mei:scoreDef/mei:staffGrp",
+ "renderanyway": false,
+ "hint": "Element staffGrp musi być dzieckiem elementu scoreDef."
+ },
+ {
+ "rule": "count(//mei:staffDef) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element staffDef."
+ },
+ {
+ "rule": "count(//mei:staffDef/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie staffDef."
+ },
+ {
+ "rule": "//mei:staffGrp/mei:staffDef",
+ "renderanyway": false,
+ "hint": "Element staffDef musi być dzieckiem elementu staffGrp."
+ }
+ ]
+ },
+ {
+ "label": "Atrybuty partytury i pięciolinii",
+ "editorLines": 7,
+ "descFile": "102_incipit_step-02-desc.html",
+ "prefillFile": "102_incipit_step-02-prefill.xml",
+ "xmlFile": "102_incipit_step-02.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:scoreDef) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element scoreDef."
+ },
+ {
+ "rule": "count(//mei:staffGrp) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element staffGroup."
+ },
+ {
+ "rule": "count(//mei:staffGrp/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie staffGrp."
+ },
+ {
+ "rule": "//mei:scoreDef/mei:staffGrp",
+ "renderanyway": false,
+ "hint": "Element staffGrp musi być dzieckiem elementu scoreDef."
+ },
+ {
+ "rule": "count(//mei:staffDef) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element staffDef."
+ },
+ {
+ "rule": "//mei:staffGrp/mei:staffDef",
+ "renderanyway": false,
+ "hint": "Element staffDef musi być dzieckiem elementu staffGrp."
+ },
+ {
+ "rule": "count(//mei:scoreDef/@*) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch atrybutów na scoreDef (@key.sig i @meter.sym)."
+ },
+ {
+ "rule": "//mei:scoreDef/@key.sig = '3f'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @key.sig z wartością 3f."
+ },
+ {
+ "rule": "//mei:scoreDef/@meter.sym = 'cut'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @meter.sym z wartością cut."
+ },
+ {
+ "rule": "count(//mei:staffDef/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz czterech atrybutów na staffDef (@n, @lines, @clef.shape i @clef.line)."
+ },
+ {
+ "rule": "//mei:staffDef/@n = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1."
+ },
+ {
+ "rule": "//mei:staffDef/@lines = '5'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @lines z wartością 5."
+ },
+ {
+ "rule": "//mei:staffDef/@clef.shape = 'G'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @clef.shape z wartością G."
+ },
+ {
+ "rule": "//mei:staffDef/@clef.line = '2'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @clef.line z wartością 2."
+ }
+ ]
+ },
+ {
+ "label": "Takt, pięciolinia i warstwa",
+ "editorLines": 14,
+ "descFile": "102_incipit_step-03-desc.html",
+ "prefillFile": "102_incipit_step-03-prefill.xml",
+ "xmlFile": "102_incipit_step-03.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:section) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element section."
+ },
+ {
+ "rule": "count(//mei:section/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie section."
+ },
+ {
+ "rule": "//mei:score/mei:section",
+ "renderanyway": false,
+ "hint": "Element section musi być dzieckiem elementu score."
+ },
+ {
+ "rule": "count(//mei:measure) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element measure."
+ },
+ {
+ "rule": "//mei:section/mei:measure",
+ "renderanyway": false,
+ "hint": "Element measure musi być dzieckiem elementu section."
+ },
+ {
+ "rule": "count(//mei:measure/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na measure (@n)."
+ },
+ {
+ "rule": "//mei:measure/@n = '0'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 0."
+ },
+ {
+ "rule": "count(//mei:staff) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element staff."
+ },
+ {
+ "rule": "//mei:measure/mei:staff",
+ "renderanyway": false,
+ "hint": "Element staff musi być dzieckiem elementu measure."
+ },
+ {
+ "rule": "count(//mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:staff/@n = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1."
+ },
+ {
+ "rule": "count(//mei:layer) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element layer."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie layer."
+ },
+ {
+ "rule": "//mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Element layer musi być dzieckiem elementu staff."
+ }
+ ]
+ },
+ {
+ "label": "Pierwsza nuta",
+ "editorLines": 15,
+ "descFile": "102_incipit_step-04-desc.html",
+ "prefillFile": "102_incipit_step-04-prefill.xml",
+ "xmlFile": "102_incipit_step-04.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:note) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jeden element note."
+ },
+ {
+ "rule": "count(//mei:note/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na note (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:note/@pname = 'b'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością b."
+ },
+ {
+ "rule": "//mei:note/@oct = '3'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 3."
+ },
+ {
+ "rule": "//mei:note/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 4."
+ }
+ ]
+ },
+ {
+ "label": "Druga nuta",
+ "editorLines": 18,
+ "descFile": "102_incipit_step-05-desc.html",
+ "prefillFile": "102_incipit_step-05-prefill.xml",
+ "xmlFile": "102_incipit_step-05.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:section) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego elementu section."
+ },
+ {
+ "rule": "count(//mei:section/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie section."
+ },
+ {
+ "rule": "count(//mei:measure) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch elementów measure."
+ },
+ {
+ "rule": "//mei:section/mei:measure",
+ "renderanyway": false,
+ "hint": "Element measure musi być dzieckiem elementu section."
+ },
+ {
+ "rule": "count(//mei:section/mei:measure) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch dzieci measure w elemencie section."
+ },
+ {
+ "rule": "count(//mei:measure[1]/@*) = 1 and //mei:measure[1]/@n = 0",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu @n z wartością 0 na pierwszym elemencie measure."
+ },
+ {
+ "rule": "count(//mei:measure[2]/@*) = 1 and //mei:measure[2]/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu @n z wartością 1 na drugim elemencie measure."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff w pierwszym elemencie measure."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff w drugim elemencie measure."
+ },
+ {
+ "rule": "count(//mei:measure/mei:staff) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dziecka staff w każdym elemencie measure."
+ },
+ {
+ "rule": "count(//mei:measure[1]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff w pierwszym elemencie measure (@n)."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff w drugim elemencie measure (@n)."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1 na pierwszym elemencie staff."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1 na drugim elemencie staff."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu layer w pierwszym elemencie staff."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu layer w drugim elemencie staff."
+ },
+ {
+ "rule": "count(//mei:staff/mei:layer) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dziecka layer w każdym elemencie staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elementach layer."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/mei:layer/mei:note",
+ "renderanyway": false,
+ "hint": "Potrzebujesz nuty w pierwszym elemencie layer."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note",
+ "renderanyway": false,
+ "hint": "Potrzebujesz nuty w drugim elemencie layer."
+ },
+ {
+ "rule": "count(//mei:layer/mei:note) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dziecka nuty w każdym elemencie layer."
+ },
+ {
+ "rule": "count(//mei:measure[1]/mei:staff/mei:layer/mei:note/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nucie (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/mei:layer/mei:note/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na drugiej nucie (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/mei:layer/mei:note/@pname = 'b'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością b na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/mei:layer/mei:note/@oct = '3'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 3 na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[1]/mei:staff/mei:layer/mei:note/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 4 na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością e na drugiej nucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na drugiej nucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 4 na drugiej nucie."
+ }
+ ]
+ },
+ {
+ "label": "Beamy",
+ "editorLines": 12,
+ "descFile": "102_incipit_step-06-desc.html",
+ "prefillFile": "102_incipit_step-06-prefill.xml",
+ "xmlFile": "102_incipit_step-06.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:measure) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch elementów measure."
+ },
+ {
+ "rule": "count(//mei:measure[2]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na elemencie measure (@n)."
+ },
+ {
+ "rule": "//mei:measure[2]/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1 na elemencie measure."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff w elemencie measure."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na elemencie staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1 na elemencie staff."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu layer w elemencie staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie layer."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[1]",
+ "renderanyway": false,
+ "hint": "Pierwsza nuta musi być dzieckiem elementu layer."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/mei:layer/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nucie (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością e na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[1]/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 4 na pierwszej nucie."
+ },
+ {
+ "rule": "count(//mei:beam) = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego elementu beam."
+ },
+ {
+ "rule": "//mei:layer/mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi być dzieckiem elementu layer."
+ },
+ {
+ "rule": "//mei:layer/mei:note/following-sibling::mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi następować po pierwszej nucie."
+ },
+ {
+ "rule": "count(//mei:layer/mei:note/following-sibling::*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz tylko jednego elementu, który następuje po pierwszej nucie."
+ },
+ {
+ "rule": "count(//mei:beam/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch nut wewnątrz elementu beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nucie beam (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością e na pierwszej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na pierwszej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 8 na pierwszej nucie beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note[2]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na drugiej nucie beam (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@pname = 'g'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością g na drugiej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na drugiej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 8 na drugiej nucie beam."
+ }
+ ]
+ },
+ {
+ "label": "Rytm przerywany",
+ "editorLines": 14,
+ "descFile": "102_incipit_step-09-desc.html",
+ "prefillFile": "102_incipit_step-09-prefill.xml",
+ "xmlFile": "102_incipit_step-09.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:measure) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu measure."
+ },
+ {
+ "rule": "count(//mei:measure[3]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na measure (@n)."
+ },
+ {
+ "rule": "//mei:measure[3]/@n = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 3 na measure."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff wewnątrz measure."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n z wartością 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu layer wewnątrz staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na layer."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]",
+ "renderanyway": false,
+ "hint": "Pierwszy element note musi być dzieckiem layer."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nucie (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością e na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na pierwszej nucie."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 4 na pierwszej nucie."
+ },
+ {
+ "rule": "count(//mei:beam) = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego elementu beam."
+ },
+ {
+ "rule": "//mei:layer/mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi być dzieckiem elementu layer."
+ },
+ {
+ "rule": "//mei:layer/mei:note/following-sibling::mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi następować po pierwszej nucie."
+ },
+ {
+ "rule": "count(//mei:beam/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch nut wewnątrz elementu beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nucie beam (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością e na pierwszej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct z wartością 4 na pierwszej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[1]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur z wartością 8 na pierwszej nucie beam."
+ },
+ {
+ "rule": "count(//mei:beam/mei:note[2]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na drugiej nucie beam (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@pname = 'g'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname z wartością g na drugiej nucie beam."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na drugiej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:beam/mei:note[2]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 8 na drugiej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:layer/mei:beam/following-sibling::mei:note",
+ "renderanyway": false,
+ "hint": "Jedna nutka musi występować po elemencie wiązania."
+ },
+ {
+ "rule": "//mei:layer/mei:beam/following-sibling::mei:note/following-sibling::mei:note",
+ "renderanyway": false,
+ "hint": "Inna nutka musi występować po nutce za elementem wiązania."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/mei:layer/mei:note) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech nutek jako bezpośrednich dzieci warstwy tej miary."
+ },
+ {
+ "rule": "count(//mei:layer/mei:note/following-sibling::*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech elementów po pierwszej nutce."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/mei:layer/mei:note[2]/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz czterech atrybutów na kropkowanej ćwierćnucie (@pname, @oct, @dur i @dots)."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[2]/@pname = 'f'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości f na kropkowanej ćwierćnucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na kropkowanej ćwierćnucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[2]/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 4 na kropkowanej ćwierćnucie."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[2]/@dots = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dots o wartości 1 na kropkowanej ćwierćnucie."
+ },
+ {
+ "rule": "count(//mei:measure[2]/mei:staff/mei:layer/mei:note[3]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na ósemce (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[3]/@pname = 'd'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości d na ósemce."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[3]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na ósemce."
+ },
+ {
+ "rule": "//mei:measure[2]/mei:staff/mei:layer/mei:note[3]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 8 na ósemce."
+ }
+ ]
+ },
+ {
+ "label": "Pełna miara",
+ "editorLines": 14,
+ "descFile": "102_incipit_step-08-desc.html",
+ "prefillFile": "102_incipit_step-08-prefill.xml",
+ "xmlFile": "102_incipit_step-08.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:measure) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego elementu miary."
+ },
+ {
+ "rule": "count(//mei:measure[3]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na miarze (@n)."
+ },
+ {
+ "rule": "//mei:measure[3]/@n = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 2 na miarze."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff w elemencie miary."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu layer w elemencie staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie layer."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]",
+ "renderanyway": false,
+ "hint": "Pierwszy element note musi być dzieckiem elementu layer."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszym elemencie note (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości e na pierwszym elemencie note."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na pierwszym elemencie note."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[1]/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 4 na pierwszym elemencie note."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:beam) = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego elementu beam."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi być dzieckiem elementu layer."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note/following-sibling::mei:beam",
+ "renderanyway": false,
+ "hint": "Element beam musi występować po pierwszym elemencie note."
+ },
+ {
+ "rule": "count(//mei:beam/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elemencie beam."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note) = 2",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch elementów note wewnątrz elementu beam."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na pierwszej nutce z wiązaniem (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[1]/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości e na pierwszej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na pierwszej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[1]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 8 na pierwszej nutce z wiązaniem."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[2]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech atrybutów na drugiej nutce z wiązaniem (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[2]/@pname = 'g'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości g na drugiej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na drugiej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/mei:note[2]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 8 na drugiej nutce z wiązaniem."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/following-sibling::mei:note",
+ "renderanyway": false,
+ "hint": "Jedna nutka musi występować po elemencie beam."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:beam/following-sibling::mei:note/following-sibling::mei:note",
+ "renderanyway": false,
+ "hint": "Inna nutka musi występować po nutce za elementem beam."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech elementów note jako dzieci warstwy tej miary."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note/following-sibling::*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech elementów po pierwszej nutce."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note[2]/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz cztery atrybuty na kropce ćwierćnutowej (@pname, @oct, @dur i @dots)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[2]/@pname = 'b'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości b na kropce ćwierćnutowej."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na kropce ćwierćnutowej."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[2]/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 4 na kropce ćwierćnutowej."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[2]/@dots = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dots o wartości 1 na kropce ćwierćnutowej."
+ },
+ {
+ "rule": "count(//mei:measure[3]/mei:staff/mei:layer/mei:note[3]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzy atrybuty na ósemce (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[3]/@pname = 'g'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @pname o wartości g na ósemce."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[3]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @oct o wartości 4 na ósemce."
+ },
+ {
+ "rule": "//mei:measure[3]/mei:staff/mei:layer/mei:note[3]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @dur o wartości 8 na ósemce."
+ }
+ ]
+ },
+ {
+ "label": "Ostatnie dwie miary",
+ "editorLines": 14,
+ "descFile": "102_incipit_step-09-desc.html",
+ "prefillFile": "102_incipit_step-09-prefill.xml",
+ "xmlFile": "102_incipit_step-09.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:measure) = 5",
+ "renderanyway": false,
+ "hint": "Potrzebujesz dwóch elementów miary."
+ },
+ {
+ "rule": "//mei:measure[4]/following-sibling::mei:measure",
+ "renderanyway": false,
+ "hint": "Miar muszą następować po sobie."
+ },
+ {
+ "rule": "count(//mei:measure[4]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na pierwszym elemencie miary (@n)."
+ },
+ {
+ "rule": "//mei:measure[4]/@n = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 3 na pierwszym elemencie miary."
+ },
+ {
+ "rule": "count(//mei:measure[5]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na drugim elemencie miary (@n)."
+ },
+ {
+ "rule": "//mei:measure[5]/@n = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 4 na drugim elemencie miary."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz elementu staff wewnątrz elementu miary."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz atrybutu @n o wartości 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff",
+ "renderanyway": false,
+ "hint": "Miera n=4: Potrzebujesz elementu staff wewnątrz elementu miary."
+ },
+ {
+ "rule": "count(//mei:measure[5]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Miera n=4: Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Miera n=4: Potrzebujesz atrybutu @n o wartości 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz elementu layer wewnątrz staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elementach layer."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Miera n=4: Potrzebujesz elementu layer wewnątrz staff."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam) = '2'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz dwóch elementów beam jako bezpośrednich dzieci layer."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note) = '1'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz jednego elementu note jako bezpośredniego dziecka layer."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/following-sibling::mei:note/following-sibling::mei:beam",
+ "renderanyway": false,
+ "hint": "Miera n=3: Element note musi być umieszczony między dwoma elementami beam."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/*) = '3'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz ogółem 3 elementów jako dzieci layer."
+ },
+ {
+ "rule": "count(//mei:beam/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elementach beam."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note/@*) = 3",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz trzech atrybutów na elemencie note (@pname, @oct i @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz atrybutu @pname o wartości e na elemencie note."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@oct = '5'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz atrybutu @oct o wartości 5 na elemencie note."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Miera n=3: Potrzebujesz atrybutu @dur o wartości 4 na elemencie note."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff/mei:layer/mei:rest/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Miera n=4: Potrzebujesz atrybutu @dur o wartości 4 na elemencie rest."
+ }
+ ]
+ },
+ {
+ "label": "Artikulacje",
+ "editorLines": 50,
+ "descFile": "102_incipit_step-10-desc.html",
+ "prefillFile": "102_incipit_step-10-prefill.xml",
+ "xmlFile": "102_incipit_step-10.xml",
+ "xpaths": [
+ {
+ "rule": "count(//mei:measure) = 5",
+ "renderanyway": false,
+ "hint": "Potrzebujesz trzech elementów taktowych."
+ },
+ {
+ "rule": "//mei:measure[4]/following-sibling::mei:measure",
+ "renderanyway": false,
+ "hint": "Takty muszą następować po sobie."
+ },
+ {
+ "rule": "count(//mei:measure[4]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na pierwszym elemencie taktowym (@n)."
+ },
+ {
+ "rule": "//mei:measure[4]/@n = 3",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 3 na pierwszym elemencie taktowym."
+ },
+ {
+ "rule": "count(//mei:measure[5]/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na drugim elemencie taktowym (@n)."
+ },
+ {
+ "rule": "//mei:measure[5]/@n = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 4 na drugim elemencie taktowym."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff wewnątrz pierwszego elementu taktowego."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu staff wewnątrz drugiego elementu taktowego."
+ },
+ {
+ "rule": "count(//mei:measure[5]/mei:staff/@*) = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz jednego atrybutu na staff (@n)."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff/@n = 1",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @n o wartości 1 na staff."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz elementu layer wewnątrz staff."
+ },
+ {
+ "rule": "//mei:measure[5]/mei:staff/mei:layer",
+ "renderanyway": false,
+ "hint": "Takt n=4: Potrzebujesz elementu layer wewnątrz staff."
+ },
+ {
+ "rule": "count(//mei:layer/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elementach layer."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam) = '2'",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz dwa elementy beam jako dzieci layer."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note) = '1'",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz jeden element note jako dziecko layer."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/following-sibling::mei:note/following-sibling::mei:beam",
+ "renderanyway": false,
+ "hint": "Takt n=3: Element note musi znajdować się między dwoma elementami beam."
+ },
+ {
+ "rule": "count(//mei:beam/@*) = 0",
+ "renderanyway": false,
+ "hint": "Nie potrzebujesz atrybutu na elementach beam."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note/@*) = 3",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz trzy atrybuty na elemencie note (@pname, @oct & @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@pname = 'e'",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz atrybutu @pname o wartości e na elemencie note."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@oct = '5'",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz atrybutu @oct o wartości 5 na elemencie note."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/@dur = '4'",
+ "renderanyway": false,
+ "hint": "Takt n=3: Potrzebujesz atrybutu @dur o wartości 4 na elemencie note."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note) = 4",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz cztery elementy nuty wewnątrz pierwszego elementu belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[1]/@pname = 'a'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @pname o wartości a na pierwszej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[1]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @oct o wartości 4 na pierwszej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[1]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @dur o wartości 8 na pierwszej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[2]/@pname = 'b'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @pname o wartości b na drugiej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @oct o wartości 4 na drugiej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[2]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @dur o wartości 8 na drugiej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[3]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz trzy atrybuty na trzeciej sprostowanej nutce pierwszej belki (@pname, @oct & @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[3]/@pname = 'c'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @pname o wartości c na trzeciej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[3]/@oct = '5'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @oct o wartości 5 na trzeciej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[3]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @dur o wartości 8 na trzeciej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[4]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz trzy atrybuty na czwartej sprostowanej nutce pierwszej belki (@pname, @oct & @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[4]/@pname = 'd'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @pname o wartości d na czwartej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[4]/@oct = '5'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @oct o wartości 5 na czwartej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[4]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybut @dur o wartości 8 na czwartej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note) = 2",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz dwa elementy nuty wewnątrz drugiego elementu belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[1]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz trzy atrybuty na pierwszej sprostowanej nutce drugiej belki (@pname, @oct & @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[1]/@pname = 'd'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @pname o wartości d na pierwszej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[1]/@oct = '5'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @oct o wartości 5 na pierwszej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[1]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @dur o wartości 8 na pierwszej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[2]/@*) = 3",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz trzy atrybuty na drugiej sprostowanej nutce drugiej belki (@pname, @oct & @dur)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[2]/@pname = 'b'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @pname o wartości b na drugiej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[2]/@oct = '4'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @oct o wartości 4 na drugiej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[2]/mei:note[2]/@dur = '8'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @dur o wartości 8 na drugiej sprostowanej nutce drugiej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note/mei:artic) = '1'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz elementu artic jako dzieci elementu nuty."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:note/mei:artic/@*) = 2",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz dwóch atrybutów na elemencie artic (@artic, @place)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/mei:artic/@artic = 'acc'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @artic o wartości acc na elemencie artic."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:note/mei:artic/@place = 'above'",
+ "renderanyway": false,
+ "hint": "Miarę n=3: Potrzebujesz atrybutu @place o wartości above na elemencie artic."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[1]/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz cztery atrybuty na pierwszej sprostowanej nutce (@pname, @oct, @dur & @xml:id) pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[1]/@*[name()='xml:id'] = 'd1e4614'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @xml:id o wartości `d1e4614` na pierwszej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[2]/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz cztery atrybuty na drugiej sprostowanej nutce (@pname, @oct, @dur & @xml:id) pierwszej belki."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/mei:layer/mei:beam[1]/mei:note[2]/@*[name()='xml:id'] = 'd1e4615'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @xml:id o wartości `d1e4615` na drugiej sprostowanej nutce pierwszej belki."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:slur) = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz elementu slur jako dziecka elementu measure."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:staff/following-sibling::mei:slur",
+ "renderanyway": false,
+ "hint": "Element slur musi wystąpić po elemencie staff."
+ },
+ {
+ "rule": "count(//mei:measure[4]/mei:slur/@*) = 4",
+ "renderanyway": false,
+ "hint": "Potrzebujesz czterech atrybutów na elemencie slur (@staff, @curvedir, @startid & @endid)."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:slur/@staff = '1'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @staff o wartości 1 na elemencie slur."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:slur/@curvedir = 'above'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @curvedir o wartości above na elemencie slur."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:slur/@startid = '#d1e4614'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @startid o wartości #d1e4614 na elemencie slur."
+ },
+ {
+ "rule": "//mei:measure[4]/mei:slur/@endid = '#d1e4615'",
+ "renderanyway": false,
+ "hint": "Potrzebujesz atrybutu @endid o wartości #d1e4615 na elemencie slur."
+ }
+ ]
+ }
+ ],
+ "end": "102_incipit_end.html",
+ "resp": [
+ {
+ "name": "Margrethe S. Bue",
+ "affiliation": "National Library of Norway"
+ },
+ {
+ "name": "Sonja Wronkowska",
+ "affiliation": "RISM Poland | National Library of Poland"
+ },
+ {
+ "name": "Debra Nakos",
+ "affiliation": "University of Maryland, College Park"
+ },
+ {
+ "name": "Johannes Kepper",
+ "affiliation": "Beethovens Werkstatt | Universität Paderborn"
+ },
+ {
+ "name": "Andrew Hankinson",
+ "affiliation": "Bodleian Libraries | University of Oxford"
+ },
+ {
+ "name": "Stefan Münnich",
+ "affiliation": "Anton Webern Gesamtausgabe | University of Basel"
+ }
+ ]
+}
\ No newline at end of file
From 555c539c886b069e11a33fdc3b1c11f88efd0d4a Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 6 Jun 2024 10:55:56 -0400
Subject: [PATCH 23/26] added PL translation of 103 chords step 00 file
---
.../step-00/103_chords_step-00-desc.html | 21 +++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 _tutorials-PL/103_chords/step-00/103_chords_step-00-desc.html
diff --git a/_tutorials-PL/103_chords/step-00/103_chords_step-00-desc.html b/_tutorials-PL/103_chords/step-00/103_chords_step-00-desc.html
new file mode 100644
index 00000000..e530762d
--- /dev/null
+++ b/_tutorials-PL/103_chords/step-00/103_chords_step-00-desc.html
@@ -0,0 +1,21 @@
+
+
+ W tym samouczku dowiesz się, jak kodować akordy w MEI.
+
+
+ Ponieważ pojęcie akordu opiera się głównie na nutach, zalecamy zapoznanie się z kodowaniem nut przed tym
+ samouczkiem, np. w naszym
+ Samouczku szybkiego startu.
+
+
+ Kod, który napiszesz, będzie natychmiast renderowany, a renderowanie będzie reagować na Twoje zmiany. W ten
+ sposób poczujesz, jak różne parametry się ze sobą oddziałują.
+
+
+ Po zakończeniu tego samouczka, możesz chcieć przejść do innych samouczków, które wprowadzą Cię w inne ważne
+ aspekty MEI. Samouczki te również służą jako proste odniesienie do MEI - zawsze możesz do nich wrócić.
+
+
+ Aby zacząć, proszę kliknij przycisk „Kontynuuj” w prawym dolnym rogu tego akapitu.
+
+
From ae707ecdc9cfa65db58309bfcd8277e9aa440b73 Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 1 Aug 2024 09:48:37 -0400
Subject: [PATCH 24/26] created 103_chords file in Polish
---
_tutorials-PL/103_chords/103_Chords.md | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 _tutorials-PL/103_chords/103_Chords.md
diff --git a/_tutorials-PL/103_chords/103_Chords.md b/_tutorials-PL/103_chords/103_Chords.md
new file mode 100644
index 00000000..1e82fb8f
--- /dev/null
+++ b/_tutorials-PL/103_chords/103_Chords.md
@@ -0,0 +1,7 @@
+---
+layout: tutorials-PL
+type: tutorial-PL
+name: "POCZĄTKUJĄCY: Akordy"
+fullname: "Krótki samouczek o akordach w MEI"
+data: "103_chords.json"
+---
\ No newline at end of file
From 67fec26fd3072bded738032bb679cdcc75ff296d Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 1 Aug 2024 10:41:38 -0400
Subject: [PATCH 25/26] Created Polish translation for step 01 in 103_chords
---
.../step-01/103_chords_step-01-desc.html | 35 +++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 _tutorials-PL/103_chords/step-01/103_chords_step-01-desc.html
diff --git a/_tutorials-PL/103_chords/step-01/103_chords_step-01-desc.html b/_tutorials-PL/103_chords/step-01/103_chords_step-01-desc.html
new file mode 100644
index 00000000..4a623f34
--- /dev/null
+++ b/_tutorials-PL/103_chords/step-01/103_chords_step-01-desc.html
@@ -0,0 +1,35 @@
+
+
+ Krok pierwszy: dodaj kilka nut do akordu.
+
+
+ W MEI pojęcie akordu oznacza "jednoczesne brzmienie dwóch lub więcej nut w tej samej warstwie o tej samej
+ długości" (zobacz Specyfikacja elementu).
+ Akord składa się z dwóch lub więcej elementów nut, które należą do tego samego głosu (warstwy) i mają identyczną
+ strukturę rytmiczną (długość). (Są przypadki, gdy nie chcesz, aby każda nuta w akordzie miała tę samą długość,
+ ale nie są one częścią tego podstawowego samouczka.)
+
+
+ Aby zakodować takie "jednoczesne brzmienie", w MEI używa się elementu <chord>
. Jego użycie jest dość
+ proste: Wiele elementów <note>
w tej samej warstwie jest zamykanych przez element <chord>
,
+ a atrybut długości (@dur) jest przenoszony z elementów <note>
na element <chord>
+ (ponieważ długość jest taka sama dla wszystkich nut). Jednakże, czy najpierw napiszemy zewnętrzny element <chord>
,
+ aby dodać wewnętrzne elementy <note>
, czy zaczniemy od elementów <note>
+ i następnie zamkniemy je w elemencie <chord>
, nie ma to w praktyce większego znaczenia.
+
+
+ W tym samouczku trzymajmy się drugiego podejścia: oznacza to, że najpierw potrzebujemy kilka nut.
+
+
+ W edytorze poniżej wprowadź następujące trzy elementy <note>
:
+
+
+ <note pname="e" oct="4" dur="4"/>
+ <note pname="g" oct="4" dur="4"/>
+ <note pname="c" oct="5" dur="4"/>
+
+
+
+ Powinnaś wtedy zobaczyć trzy nuty renderowane sekwencyjnie. Niewiele to akord, prawda? Ale nie martw się: Zajmiemy się tym od razu w następnym kroku. Do tego czasu możesz pobawić się wartościami atrybutów, aby zobaczyć, jak wpływają one na renderowanie. Zobaczysz także wskazówki, jak napisać poprawny kod. Gdy będziesz gotowa, upewnij się, że masz poprawny kod w edytorze, a następnie naciśnij przycisk "kontynuuj" w prawym dolnym rogu.
+
+
From 61f95d7ccb3b1fb1919885fb1ad0c7268137147f Mon Sep 17 00:00:00 2001
From: Anna Kijas
Date: Thu, 1 Aug 2024 10:45:57 -0400
Subject: [PATCH 26/26] Created Polish translation for 103_chords
step-01-prefill
---
_tutorials-PL/103_chords/step-01/103_chords_step-01-prefill.xml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 _tutorials-PL/103_chords/step-01/103_chords_step-01-prefill.xml
diff --git a/_tutorials-PL/103_chords/step-01/103_chords_step-01-prefill.xml b/_tutorials-PL/103_chords/step-01/103_chords_step-01-prefill.xml
new file mode 100644
index 00000000..371b25d4
--- /dev/null
+++ b/_tutorials-PL/103_chords/step-01/103_chords_step-01-prefill.xml
@@ -0,0 +1 @@
+
\ No newline at end of file