MusicXML import doesn't read `<midi-instrument>` changes in `<sound>`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 30/100
Direzione di ricerca
Start with SoundTagMixin.setSound in musicxml/xmlSoundParser.py, which currently handles only tempo, and with where the importer reads midi-instrument from score-part. Reproduce with the XML in the issue and check whether a sound inside a measure or direction is reached at all. The issue leaves open whether the change should become a new Instrument or another record, so settle that with the maintainers first. Done means the example yields program 73 at offset 4.0 and the related score-instrument case (#1696) is not made worse.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
music21 version
10.5.0
Problem summary
A <sound> element can contain a <midi-instrument> that changes a part's program partway through, for example a doubler switching from violin to flute. The importer only reads <midi-instrument> from the <score-part>, so the whole part keeps its first program.
Steps to reproduce
from music21 import converter, instrument
xml = '''<score-partwise version="4.0">
<part-list><score-part id="P1"><part-name>Music</part-name>
<score-instrument id="P1-I1"><instrument-name>Doubler</instrument-name></score-instrument>
<midi-instrument id="P1-I1"><midi-program>41</midi-program></midi-instrument>
</score-part></part-list>
<part id="P1">
<measure number="1">
<attributes><divisions>1</divisions></attributes>
<note><pitch><step>C</step><octave>4</octave></pitch><duration>4</duration><type>whole</type></note>
</measure>
<measure number="2">
<sound><midi-instrument id="P1-I1"><midi-program>74</midi-program></midi-instrument></sound>
<note><pitch><step>D</step><octave>4</octave></pitch><duration>4</duration><type>whole</type></note>
</measure>
</part>
</score-partwise>'''
parsed = converter.parse(xml, format='musicxml')
print([(float(i.getOffsetInHierarchy(parsed)), i.instrumentName, i.midiProgram)
for i in parsed.recurse().getElementsByClass(instrument.Instrument)])
Expected vs. actual behavior
Expected a second instrument, or some other record of the change, with program 73 at offset 4.0. Actual:
[(0.0, 'Doubler', 40)]
More information
Exporters usually write the change inside a direction, next to the printed cue, for example <direction><direction-type><words>Flute</words></direction-type><sound><midi-instrument id="P1-I1"><midi-program>74</midi-program></midi-instrument></sound></direction>. That's ignored too: SoundTagMixin.setSound in musicxml/xmlSoundParser.py only handles tempo.
Related: #1696, where the importer only reads a part's first <score-instrument>. Both are ways MusicXML encodes an instrument change partway through a part.
- Lingua principale
- Python
- Stelle
- 2.6k
- Fork
- 459
- Merge medio
- 1g 7h
- PR unite (30g)
- 40
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cuthbertLab/music21
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cuthbertLab/music21#2084 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
cuthbertLab/music21#2082 ·
I maintainer di solito rispondono entro 1 giorno
-
`TypeError` in `ChordReducer.run()` on multi-part `stream.Score` without instrument `partId`sAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
cuthbertLab/music21#2074 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cuthbertLab/music21#2055 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Slur bezier-x/y from start element gets overwritten by stop element's valuesForse di nuovo libera @bingliscodes l’ha presa 8 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
cuthbertLab/music21#2019 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di cuthbertLab/music21
Issue simili
-
fix formatting of the sample database page of the docsForse già presa @Aaqibhafeezkhan l’ha presa oggi. Apertadocumentation good first issue help wanted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
chaoss/CollectOSS#544 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/plugin good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kestra-io/plugin-soda#137 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
ibm-granite/granite.build#504 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno