2016-04-08 11 views
1

Ich habe ein Stream-Objekt mit Notizen (Tonhöhe und Dauer). Ich möchte Akkorde hinzufügen, zum Beispiel die erste Note jedes 4 mal. Aber ich möchte, dass sie gleichzeitig klingen.music21: Wie füge ich gleichzeitig einen Akkord an einen Stream an?

Das Problem ist, dass das einzige verwandte Zeug, das ich gefunden habe, war, wie man einen Akkord an einen Strom anfügt, aber der Reihe nach.

Also ... Irgendwelche Vorschläge?

Antwort

1

Wenn Sie zusätzliche Stellplätze in bestehende Notizen hinzufügen möchten, verwenden Sie die stream.Stream.insertIntoNoteOrChord Methode:

http://web.mit.edu/music21/doc/moduleReference/moduleStream.html#music21.stream.Stream.insertIntoNoteOrChord

Zum Beispiel:

s = stream.Stream() 
n = note.Note('C4') # qtr note default 
s.append(n) 

c = chord.Chord('E4 G4') # qtr 
s.insertIntoNoteOrChord(0.0, c) 
s.show('t') 
{0.0} <music21.chord.Chord C4 E4 G4> 

Wenn Sie etwas komplexere tun müssen, ich dann schlage vor, einfach alle Noten und Akkorde an den gewünschten Stellen einzufügen und dann .chordify() auf dem Stream laufen zu lassen, damit alles funktioniert.

Eine dritte Möglichkeit besteht darin, verschiedene stream.Voice() Objekte für die verschiedenen Schichten zu verwenden.

+0

Danke. Schließlich habe ich so etwas wie die dritte Option gemacht: Ich habe einen Score anstelle eines Streams verwendet und einen Stream für die Melodie und einen für die Akkorde gemacht. insertNoteIntoNoteorChord wäre nützlich für diejenigen, die Notizen einfügen möchten. Aber ich wollte Akkorde in eine Melodie einfügen und nicht umgekehrt. Wie auch immer, ist eine gute Option. –