Handle musical notes and their sounds in Python
Project description
munotes
musical-notes
This library is for handling notes and chords in Python.
General Usage
Note
Note class. Handling note.
This class is used by inputting the note name and octave height, or MIDI note number at initialization.
import munotes as mn
note = mn.Note("A4")
print(note) # A4
note = mn.Note(69)
print(note) # A4
transpose()
Transpose the note.
note.transpose(2)
print(note) # B4
render()
Get the waveform of the note.
import matplotlib.pyplot as plt
y = note.render('sin')
plt.plot(y[:200])
squere
and sawtooth
are also sapported.
y = note.render('squere')
plt.plot(y[:200])
y = note.render('sawtooth')
plt.plot(y[:200])
Arbitrary waveforms are also supported.
y = note.render(lambda t: np.sin(t) + np.sin(2*t))
plt.plot(y[:200])
play()
Get IPython.display.Audio object.
Notes
Notes class. Handling multiple notes.
This class is used by inputting the notes at initialization.
notes = mn.Notes("C4", "E4", "G4")
print(notes) # C4 E4 G4
Methods are the same as Note
. Ex: transpose()
, render()
, play()
.
Chord
Chord class. Handling chord.
This class generates a Notes object by inputting a chord name at initialization.
from munotes import Chord
chord = Chord("A#m7")
print(chord) # A#m7
print(chord.names) # ['A#', 'C#', 'F', 'G#']
Methods are the same as Note
(and Notes
).
Transpose is also supported by transpose()
chord.transpose(3)
print(chord) # C#m7
print(chord.names) # ['C#', 'E', 'G#', 'B']
Track
Track class. Handling multiple Notes as a sequence.
This class is used by inputting the notes with durations at initialization.
track = mn.Track([
mn.Note("C4", duration=1),
mn.Note("E4", duration=1),
mn.Note("G4", duration=1)
])
Methods are the same as other classes.
But in methods that handling waveform (render()
, play()
, etc), generate the waveform as sequence of notes (like: C -> E -> G).
Stream
Stream class. Handling multiple tracks.
This class is used by inputting the tracks at initialization.
track = mn.Track([
mn.Note("C4", duration=1),
mn.Note("E4", duration=1),
mn.Note("G4", duration=1)
])
chords = mn.Track([
mn.Chord("C", duration=3),
])
stream = mn.Stream([melody, chords])
Methods are the same as other classes.
Version History
0.1.0 (2022-11-12, Beta-release)
- Add
Note
class - Add
Chord
class
1.0.0 (2023-02-09)
- Add
Notes
class - Add
Track
class - Add
Stream
class - Add
Rest
class - Add
sin()
,square()
,sawtooth()
methods - Add
play()
method - Add
render()
method
1.0.1 (2023-02-12)
- Fix a bug that
Rest
could not be put intoTrack
.
1.1.0 (2023-02-16)
- Waveform parameters can be specified. Ex:
note.sawtooth(width=0.5)
- Support for inputting octave with note names. Ex:
note = mn.Note("A4")
- All supported chords can be seen in
mn.chord_names
- Arbitrary chords can be added
2.0.0 (2023-11-19)
- Add
Envelope
class - Modify
sec
argument toduration
- Add default parameters for rendering that can be specified in initialization
waveform
duration
unit
bpm
envelope
duty
width
amp
- Remove function that change frequency of
A4
directly - Modify input type of
Track
fromTuple[Note, float]
toList[Note]
- Note.duration is used to duration when rendering
- Remove
**kwargs
inrender()
method
2.0.1 (2023-11-20)
- Fix
__add__
method ofNotes
class - Fix a bug that
append()
method ofNotes
class does not work - Modify
__repr__
method
2.0.2 (2024-05-21, Latest)
- Fix a bug that chord names in
Track
andStream
are not update when transposed
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file munotes-2.0.2.tar.gz
.
File metadata
- Download URL: munotes-2.0.2.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e4e2d2398471cd409704ac706d779e471aa96be98037789e0f2d981256619d4 |
|
MD5 | d226c8af2b40b875af573d1eae3908e6 |
|
BLAKE2b-256 | df822e537e0d09af17782f9a61be95103e3ce554012fba16ef34b50593dc76f3 |
File details
Details for the file munotes-2.0.2-py3-none-any.whl
.
File metadata
- Download URL: munotes-2.0.2-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b63134d5fa6de347498fef3a222f4ddf4e259fd68c0d4618925305898d275514 |
|
MD5 | 1fbd703fffe5b95193e65fea52ce7733 |
|
BLAKE2b-256 | c3fefbdf801025024f09ccd0fc69ab34aa38972c9a0a8e83e921fb22a0ea2d72 |