music21.stream.filters

ClassFilter

class music21.stream.filters.ClassFilter(classList=())
>>> s = stream.Stream()
>>> s.append(note.Note('C'))
>>> s.append(note.Rest())
>>> s.append(note.Note('D'))
>>> sI = iter(s)
>>> sI
<music21.stream.iterator.StreamIterator for Stream:0x104843828 @:0>
>>> for x in sI:
...     print(x)
<music21.note.Note C>
<music21.note.Rest rest>
<music21.note.Note D>
>>> sI.filters.append(stream.filters.ClassFilter('Note'))
>>> sI.filters
[<music21.stream.filters.ClassFilter Note>]
>>> for x in sI:
...     print(x)
<music21.note.Note C>
<music21.note.Note D>

ClassFilter bases

ClassNotFilter

class music21.stream.filters.ClassNotFilter(classList=())

Returns elements not of the class.

>>> s = stream.Stream()
>>> s.append(note.Note('C'))
>>> s.append(note.Rest())
>>> s.append(note.Note('D'))
>>> sI = iter(s)
>>> sI.filters.append(stream.filters.ClassNotFilter('Note'))
>>> sI.filters
[<music21.stream.filters.ClassNotFilter Note>]
>>> for x in sI:
...     print(x)
<music21.note.Rest rest>

ClassNotFilter bases

GroupFilter

class music21.stream.filters.GroupFilter(groupFilterList)

Returns elements with a certain group.

>>> n1 = note.Note("C")
>>> n1.groups.append('trombone')
>>> n2 = note.Note("D")
>>> n2.groups.append('trombone')
>>> n2.groups.append('tuba')
>>> n3 = note.Note("E")
>>> n3.groups.append('tuba')
>>> s1 = stream.Stream()
>>> s1.append(n1)
>>> s1.append(n2)
>>> s1.append(n3)
>>> GF = stream.filters.GroupFilter
>>> for thisNote in iter(s1).addFilter(GF("trombone")):
...     print(thisNote.name)
C
D
>>> for thisNote in iter(s1).addFilter(GF("tuba")):
...     print(thisNote.name)
D
E

GroupFilter bases

IdFilter

class music21.stream.filters.IdFilter(searchId)

filters on ids. used by stream.getElementById. No corresponding iterator call.

IdFilter bases

IsFilter

class music21.stream.filters.IsFilter(target)

IsFilter bases

IsFilter methods

IsFilter.reset()

IsNotFilter

class music21.stream.filters.IsNotFilter(target)

Filter out everything but an item or list of items:

>>> s = stream.Stream()
>>> s.insert(0, key.KeySignature(-3))
>>> n = note.Note('C#')
>>> s.append(n)
>>> s.append(note.Rest())
>>> for el in s.iter.addFilter(stream.filters.IsNotFilter(n)):
...     el
<music21.key.KeySignature of 3 flats>    
<music21.note.Rest rest>

test that resetting works...

>>> for el in s.iter.addFilter(stream.filters.IsNotFilter(n)):
...     el
<music21.key.KeySignature of 3 flats>    
<music21.note.Rest rest>

multiple...

>>> s = stream.Stream()
>>> s.insert(0, key.KeySignature(-3))
>>> n = note.Note('C#')
>>> s.append(n)
>>> r = note.Rest()
>>> s.append(r)
>>> for el in s.iter.addFilter(stream.filters.IsNotFilter([n, r])):
...     print(el)
<music21.key.KeySignature of 3 flats>

IsNotFilter bases

IsNotFilter methods

IsNotFilter.reset()

OffsetFilter

class music21.stream.filters.OffsetFilter(offsetStart, offsetEnd=None, includeEndBoundary=True, mustFinishInSpan=False, mustBeginInSpan=True, includeElementsThatEndAtStart=True)

see iterator.getElementsByOffset()

OffsetFilter bases

StreamFilter

class music21.stream.filters.StreamFilter

A filter is an object that when called returns True or False about whether an element in the stream matches the filter.

A lambda expression: lambda el, iterator: True if EXP else False can also be used as a very simple filter.

Filters can also raise StopIteration if no other elements in this Stream can possibly fit.