diff --git a/_tutorials-PL/101_quickstart/101_Quickstart.md b/_tutorials-PL/101_quickstart/101_Quickstart.md new file mode 100644 index 00000000..914be013 --- /dev/null +++ b/_tutorials-PL/101_quickstart/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 diff --git a/_tutorials-PL/101_quickstart/101_quickstart.json b/_tutorials-PL/101_quickstart/101_quickstart.json new file mode 100644 index 00000000..056eb191 --- /dev/null +++ b/_tutorials-PL/101_quickstart/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" + } + ] +} diff --git a/_tutorials-PL/101_quickstart/101_quickstart_end.html b/_tutorials-PL/101_quickstart/101_quickstart_end.html new file mode 100644 index 00000000..ec558bb0 --- /dev/null +++ b/_tutorials-PL/101_quickstart/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 diff --git a/_tutorials-PL/101_quickstart/101_quickstart_step-00-desc.html b/_tutorials-PL/101_quickstart/101_quickstart_step-00-desc.html new file mode 100644 index 00000000..8519f967 --- /dev/null +++ b/_tutorials-PL/101_quickstart/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 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..a89ffa21 --- /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"/>. 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 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. +

+
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: + Sekwencja 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 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": + 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 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 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). 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 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>

+ + +

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>:

+ + +

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 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..45c0b433 --- /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ć 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.

+ +
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 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..fe980b48 --- /dev/null +++ b/_tutorials-PL/102_incipit/step-04/102_incipit_step-04-desc.html @@ -0,0 +1,17 @@ +
+

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>:

+ + + +

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 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 @@ + + + + + +
+ + + + + + + +
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>:

+ + +

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>:

+ + + +

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>:

+ + +

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:

+
    +
  1. Atrybut @slur na elemencie <note> lub <chord> z wartością i=initial, m=medial lub t=terminal.
  2. +
  3. Oddzielny element <slur>.
  4. +
+ +

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:

+ + +

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 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 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. +

+
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>:

+ + + +

+ 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. +

+
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 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.* + + +