KAudio Python Library
KAudio is an experimental proof-of-concept audio processing library for Python. It allows users to generate audio signals, load audio from files, apply various effects to the audio, and then play it back. It is not currently a finished product, and it is not intended to be used in a production environment.
Contents
Installation
Requirements:
- Python 2.7.x
- NumPy 1.8.2 or greater
- PyAudio 0.2.8 or greater
Setup:
- Download the latest version of kaudio.py from the GitHub page.
- Place it in the same folder as the module from which you wish to use KAudio
Use
import kaudio kaudio.init() // your code here kaudio.terminate()
Documentation
The two fundamental data types in KAudio are Signals and Effects. Signals represent a stream of audio data, either from a file or generated programmatically. Effects represent machines that take in signals and maniupulate them. Examples include Amplifiers, Compressers, and Faders.
Signal Constructors
SignalFromAudioFile(fpath, loop=False) fpath (str) : file path to a 2-channel, uncompressed PCM .WAV file loop (bool) : loaded audio is looped if True, else is played just once
Wave(wave_type, freq, amplitude, loop=True) wave_type (int) : shape of wave. See WaveType constants freq (float) : frequency of wave in hertz amplitude (int16) : maximum amplitude of wave on a scale of 0 to 2^15 - 1 loop (bool) : if True plays indefinitely, else plays exactly one period
CompositeSignal(*signals) signals (Signal[]) : argument list of signals to be averaged together to form a new signal
Signal Methods
play() starts playing the signal to default audio output
pause() stops playing the signal, but preserves its state
rewind() resets the signal to its original state
is_playing() returns whether or not the signal is currently being played
add_effect(e) e (Effect) : the effect to be applied to this signal
remove_effect(e) e (Effect) : the effect to be removed from this signal
Effect Constructors
Amplifier(gain) gain (float) : factor by which the signal's amplitude will be scaled
Fader(left_gain, right_gain) left_gain (float) : factor by which the amplitude of the signal's left channel will be scaled right_gain (float) : factor by which the amplitude of the signal's right channel will be scaled
ComplexFader(l_to_l, l_to_r, r_to_l, r_to_r) Similar to fader, but allows redirection of one channel's data to another l_to_l (float) : factor by which signal's left channel will be scaled and outputted to the new signal's left channel l_to_r (float) : factor by which signal's left channel will be scaled and outputted to the new signal's right channel r_to_l (float) : factor by which signal's right channel will be scaled and outputted to the new signal's left channel r_to_r (float) : factor by which signal's right channel will be scaled and outputted to the new signal's right channel
Overdriver(gain, cutoff) Distorts the given signal gain (float) : factor by which the signal's amplitude will be scaled cutoff (int16) : absolute value at which the amplitude of the wave will be clipped off
Oscillator(freq, gain) Amplifies and attenuates the given signal in a periodic fashion freq (int) : frequency of the oscillation in Hertz amplitude (float) : maximum gain/attenuation factor throughout cycle
Compressor(low_thresh, low_factor, high_thresh, high_factor) low_thresh (int16) : maximum amplitude threshold for upward scaling low_factor (float) : factor by which samples below low_thresh are scaled upwards high_thresh (int16) : minimum amplitude threshold for downward scaling high_factor (float) : factor by which samples below high_thresh are scaled downwards
Effect Methods
Effects do not have any methods that are intended for outside modules to use. However, you may safely modify the values you passed in as constructor parameters (Fader.left_gain, Oscillator.freq, etc.), and the changes will take place in real time.
Other
init() Initializes PyAudio library; must be called before using KAudio
terminate() Terminates PyAudio library; should be called when finished using KAudio
set_chunk_size(val) val (int) : the number of frames to be written to the output stream at a time
WaveTypes constants for passing into Wave constructor: WaveType.SINE WaveType.SQAURE WaveType.TRIANGLE WaveType.SAWTOOTH
Demo Video
The media player is loading...