Skip to main content

A python library which can generate sounds played by instruments

Project description

About

A python library which can generate sounds played by instruments mainly guitar and piano. It uses PyAudio as its dependency.

Getting Started

Pre-requisites

You just need to know basic python syntax to use this library.

Installation

If in your machine previously you have never installed PyAudio then do this:

Unix:

sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0

Windows:

Download the binaries from here
Now do this
pip install PyAudio‑0.2.11‑cp39‑cp39m‑win_amd64.whl

Then
python3 -m pip install PyMusic-Instrument

Usage

Playing piano notes.

from Instrument import Instrument

piano = Instrument(bit_rate = 44100)
piano.record_key(52, duration=0.3)  # C5
piano.record_chord([(52, 56, 61)], duration=0.3)  # C5 E5 A5

piano.play()
piano.close()   # Terminates PyAudio

Playing guitar strings.

guitar = Instrument(44100)
guitar.record_key(25, duration=0.5)  # A
guitar.play()
guitar.clear_sample()  # clears the sample
guitar.close()

You can look at here the key numbers for corresponding frequency.

Alternatively you can also plot the graph

import matplotlib.pyplot as plt

key_colors = {40: ["red", 1], 42: ["blue", 1], 44: ["green", 1], 45: ["gray", 1],
                  47: ["orange", 1], 35: ["purple", 1], ((51, 56, 61),): ['black', 1]}

# piano.graphing sample contains key, time take as an array, wave equation as an array.
for key, time, wave in piano.graphing_sample:
    if key_colors[key][1]:
        plt.plot(time, wave, label=key, color=key_colors[key][0])
        key_colors[key][1] = 0
    else:
        plt.plot(time, wave, color=key_colors[key][0])

plt.show()

Or the spectogram

import librosa.display

amplitude = librosa.stft(piano.sample)
db = librosa.amplitude_to_db(abs(amplitude))
plt.figure(figsize=(14, 5))
librosa.display.specshow(db, sr=44100, x_axis='time', y_axis='hz')
plt.colorbar()
plt.show()

Documentation

https://pymusic-instrument.readthedocs.io/en/latest/

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

PyMusic-Instrument-0.5.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PyMusic_Instrument-0.5-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file PyMusic-Instrument-0.5.tar.gz.

File metadata

  • Download URL: PyMusic-Instrument-0.5.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for PyMusic-Instrument-0.5.tar.gz
Algorithm Hash digest
SHA256 c0b8fb2594a033b4c504605932bdce450eae4fee2afdf7dd62e0f79dddb8ea84
MD5 feb70092dab3a3fc818791acaa020f3f
BLAKE2b-256 9a9caff8bd572978cff0ba07f90050cc22ff0efa7515fabcc0d626438a8fe33d

See more details on using hashes here.

File details

Details for the file PyMusic_Instrument-0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for PyMusic_Instrument-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2eb5f8c6f22db103e36a0c53b847051e9b5f6340b8443c7fcf6079130ea0e493
MD5 6de5218a3348ac12c9abff6a4579396d
BLAKE2b-256 3412a62dcd65bf94f3175ca37ccfdb5a30998972b1aef784ff9ad3ac72c03e90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page