MusicXML `<transpose>` with `<octave-change>` but no `<diatonic>` raises TypeError
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
Direzione di ricerca
Il crash deriva da MeasureParser.xmlTransposeToInterval in musicxml/xmlToM21.py, dove il ramo del cambio di ottava somma a diatonicStep anche quando è None. Inizia eseguendo lo snippet di riproduzione dell'issue per confermare il TypeError, poi leggi il codice successivo a quel ramo per capire come viene già gestito un passo diatonico mancante. È completato quando lo snippet viene analizzato correttamente e la parte suona un'ottava più bassa di quanto scritto, con un test esistente o nuovo che copra la trasposizione di sola ottava.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
music21 version
10.5.0
Problem summary
<diatonic> is optional in <transpose>, and the importer handles it being missing, except when there's also an <octave-change>. Then it adds the octave to a None diatonic step and raises. An octave-only <transpose> is how guitar and bass parts are written, and some exporters leave out <diatonic> when it's 0.
Steps to reproduce
from music21 import converter
xml = '''<score-partwise version="4.0">
<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>
<transpose><chromatic>0</chromatic><octave-change>-1</octave-change></transpose>
</attributes>
<note><pitch><step>C</step><octave>5</octave></pitch><duration>4</duration><type>whole</type></note>
</measure></part>
</score-partwise>'''
converter.parse(xml, format='musicxml')
Expected vs. actual behavior
Expected a part that sounds an octave lower than written. Actual:
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'int'
More information
In MeasureParser.xmlTransposeToInterval (musicxml/xmlToM21.py):
if mxOctaveChange is not None:
octaveChange = int(mxOctaveChange.text) * 12
diatonicStep += 7 * int(mxOctaveChange.text)
Only adding to diatonicStep when it isn't None should be enough, since the code after this already handles a missing diatonic step.
- 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
-
`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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
cuthbertLab/music21#1986 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di cuthbertLab/music21
Issue simili
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
btclib-org/btclib-node#1955 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation v0.9.2
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
khuisman/mcp-gee-sweet#1033 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ossf/cve-bin-tool#5966 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 2 giorni
-
write_iceberg ignores the table's write.parquet.compression-codec propertyForse già presa @YuangGao l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Eventual-Inc/Daft#7606 ·
I maintainer di solito rispondono entro 1 giorno