출처: https://www.musicxml.com/tutorial/hello-world/
MusicXML에서 가사가 “hello, world”인 노래는 실제로 간단한 MusicXML 파일보다는 복잡합니다. 우리는 (조건을) 더 단순하게 유지합시다.
중간 C의 전체 음을 포함하는 한 마디의 음악, 4/4 박자 기준
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise version="3.1"> <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> <divisions>1</divisions> <key> <fifths>0</fifths> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> </score-partwise>
각 부분을 차례로 살펴보겠습니다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
XML 선언부분입니다.
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
DTD 선언부분입니다. (자세한 내용은 XML 포맷의 DTD 정의 참조)
<score-partwise version="3.1">
이것이 루트 도큐멘트의 유형입니다. <score-partwise>
요소는 각 파트(part)가 마디(measures)로 구성됩니다. 또한 각 마디 값이 파트로 구성되는 <score-timewise>
옵션이 있습니다. (서로 반대됨) 버전 속성을 통해 프로그램은 사용되는 MusicXML의 버전을보다 쉽게 구별 할 수 있습니다. MusicXML 1.0 파일을 작성하는 경우에는 그대로 두십시오.
<part-list> <score-part id="P1"> <part-name>Part 1</part-name> </score-part> </part-list>
파트별 또는 시간별 스코어(악보)가 있더라도 MusicXML 파일은 스코어의 다른 음악 파트를 열거하는 헤더로 시작됩니다. 위의 예제는 가능한 최소 부분 목록입니다. 하나의 score-part
, score-part에 대한 필수 id
속성 및 필수 part-name
요소를 포함합니다.
<part id="P1">
이제 도큐멘트에서 첫 번째 (의 경우에만) 부분을 시작합니다. 여기에 있는 id
속성은 헤더의 score-part
에 대한 id
속성을 참조해야 합니다.
<measure number="1">
우리는 첫 번째 파트에서 첫 번째 마디를 시작합니다.
<attributes>
속성 요소는이 파트에 나오는 음표와 음악 데이터를 해석하는 데 필요한 핵심 정보를 포함합니다.
<divisions>1</divisions>
MusicXML의 각 음에는 duration
(지속 시간) 요소가 있습니다. division
요소는 4분 음표에 대한 구분으로 duration
요소에 대한 측정 단위를 제공합니다. 우리가 이 파일에 가지고있는 것은 하나의 온음표(a whole note)이며, 4분 음표를 나눌 필요가 없으므로 division
값을 1로 설정합니다. 음악 지속 시간은 일반적으로 “quarter
(4분 음표)”및 “eighth
(8분 음표)”노트와 같이 분수로 표시됩니다. MusicXML 재생 시간도 분수입니다. 분모가 거의 변할 필요가 없으므로 분모 요소에서 별도로 표현되므로 분자만 각 개별 노트와 연결해야 합니다. 노트 주기를 나타내기 위해 MIDI에서 사용된 체계와 유사합니다.
<key> <fifths>0</fifths> </key>
key 요소는 조표(key signature)을 나타내는 데 사용됩니다. 여기에 우리는 C 장조의 핵심에 있습니다. 플랫(flat)이나 샤프(sharp)가 없기 때문에 5도음(the fifths element)는 0입니다. 만약 샤프가 2개인 D장조라면, 5도음은 2로 설정 될 것입니다. 1개의 플랫을 가진 F 메이저는 -1로 설정됩니다. “fifths“이라는 이름은 5도권의 원을 따라 주요 조표를 표현한 것입니다. 샤프와 플랫을 위한 별도의 요소가 아닌 하나의 요소로 표준 키 시그니처를 표현할 수 있습니다.
<time> <beats>4</beats> <beat-type>4</beat-type> </time>
time
요소는 박자표를 나타냅니다. 두 개의 구성요소인 beats
와 beat-type
은 각각 박자표의 분자와 분모입니다.
<clef> <sign>G</sign> <line>2</line> </clef>
MusicXML은 오늘날 더 이상 사용되지 않는 많은 것을 포함하여 여러 가지 음자리표를 허용합니다. 여기서 높은음자리표(G clef; treble clef)는 보표(staff)의 두 번째 줄에있는 G 음자리표로 표시됩니다 (예: 스태프의 맨 아래에서 두 번째 줄은 G입니다).
</attributes> <note>
속성이 끝났으며 첫 번째 음을 시작할 준비가 되었습니다.
<pitch> <step>C</step> <octave>4</octave> </pitch>
pitch
요소에는 step
및 octave
요소가 있어야합니다. 선택 사항으로 플랫 또는 샤프가 있는 경우 변경 요소가 있을 수 있습니다. 이러한 요소는 사운드를 나타내므로 변경 사항이 조표(key signature)에 있더라도 변경 요소는 반드시 포함되어야 합니다. 지금 경우에는 변경이 없습니다. 피치 스텝(pitch step)은 C입니다. 4의 옥타브는 중간의 C(middle C)로 시작하는 옥타브를 나타냅니다. 따라서이 음은 중간의 C입니다.
<duration>4</duration>
division
의 대응값은 4분음표 마다 1 이므로, duration
이 4라면 4분 음표의 네 개분에 해당하는 길이입니다.
<type>whole</type>
<type>
요소는 이것이 온음표(a whole note)로 표시된다는 것을 알려줍니다. 이 경우 duration
에서 이 값을 지정할 수도 있지만, 표기법 및 성능 데이터를 별도로 나타내면 응용 프로그램에서 작업하는 것이 훨씬 쉽습니다. 어떤 경우에도 성능 및 표기법 데이터가 실제로 일치하지는 않습니다.
예를 들어, 재즈 차트에 표기된 8분 음표보다 스윙 느낌을 더 잘 나타내려면 유형이 8분 음표 인 동안 다른 duration
값을 사용할 수 있습니다. 바흐의 음악에는 실제 음표 길이가 특정 리듬에 대해 단축된 표기법을 사용하기 때문에 페이지의 음표의 표준 해석과 일치하지 않는 속기 표기법의 예시가 포함되어 있습니다. duration
요소는 특정 성능에 특정한 기간을 길게 또는 짧게 하지 않고 의도한 기간을 반영해야 합니다. note
요소에는 어택의 시작 및 종료 시간을 점수에 의해 직접 또는 간접적으로 표시된 명목 기간에서 변경하는 방법을 제안하는 attack
및 release
특성이 있습니다.
</note> </measure> </part> </score-partwise>
그리고 악보 및 도큐멘트를 마무리합니다.
XML의 문서 유형 정의의 한 가지 제한사항은 다른 요소의 요소 수를 제한하려면 일반적으로 해당 요소의 정렬 방법도 제한해야 한다는 것입니다. 예를 들어 attribute
에서 하나 이상의 divisions
요소만 있으면 됩니다. 음의 피치에 대해 단 하나의 step
요소와 octave
요소만 필요합니다. 이렇게하려면 이러한 요소가 나타나는 순서도 제한되어야합니다. 따라서 이 예제에서 요소가 나타나는 순서는 중요합니다. DTD 정의는 어떤 순서가 필요한지 명확히 해야 합니다. 우리는 튜토리얼에서 자세히 설명하지 않을 것입니다.
[연습] 다음 악보를 MusicXML 포맷으로 만들어보기.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise version="3.1"> <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> <divisions>5</divisions> <key> <fifths>0</fifths> </key> <time> <beats>5</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>1</duration> <type>quarter</type> </note> <note> <pitch> <step>D</step> <octave>4</octave> </pitch> <duration>1</duration> <type>quarter</type> </note> <note> <pitch> <step>E</step> <octave>4</octave> </pitch> <duration>1</duration> <type>quarter</type> </note> <note> <pitch> <step>F</step> <octave>4</octave> </pitch> <duration>1</duration> <type>quarter</type> </note> <note> <pitch> <step>G</step> <octave>4</octave> </pitch> <duration>1</duration> <type>quarter</type> </note> </measure> </part> </score-partwise>
0개의 댓글