All pastes #895838 Raw Edit

asdasd

public text v1 · immutable
·published 2008-02-08 03:13 UTC
rendered paste body
{\rtf1\ansi\deff0{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1033\f0\fs20\par
import math\par
from numpy import zeros, empty, array, append\par
from snd_io import read_wav_file, save_wav_file, play\par
\par
# Helpful constants\par
WAVE_MAX = 32767            # Max sample value\par
WAVE_MIN = -32768           # Min sample value\par
SAMPLE_FREQUENCY = 22050    # Sampling frequency in Hz\par
\par
data = zeros(50)\par
for i in range(len(data)):\par
    data[i] = i**2\par
print data\par
\par
\par
def scale_volume(data, factor):\par
    global WAVE_MIN\par
    global WAVE_MAX\par
    \par
    data = factor * data\par
    data = map(int, data)\par
\par
    for i in range(len(data)):\par
        if data[i] > WAVE_MAX:\par
            data[i] = WAVE_MAX\par
        if data[i] < WAVE_MIN:\par
            data[i] = WAVE_MIN\par
\par
    return data\par
\par
def normalize(data):\par
    global WAVE_MAX\par
    global WAVE_MIN\par
\par
    if max(data) > abs(min(data)):\par
        if max(data) == 0:\par
            return data\par
        else:\par
            scale_max = WAVE_MAX / max(data)\par
            data = scale_volume(data, scale_max)\par
    else:\par
        if min(data) == 0:\par
            return data\par
        else:\par
            scale_min = WAVE_MIN / min(data)\par
            data = scale_volume(data, scale_min)\par
\par
    return data\par
\par
def echo(data, delay, level):\par
    global SAMPLE_FREQUENCY\par
\par
    delay_samples = int(delay*SAMPLE_FREQUENCY)\par
    z = zeros(delay_samples)\par
    output = empty(len(data), dtype=numpy.int16) \par
  \par
    orig_sample = append(data, z)\par
    echo_sample = append(z, data)\par
    \par
    for n in range(len(output)):\par
        result = (1-level) * orig_sample[n] + level * echo_sample[n]\par
        output[n] = result \par
\par
    return output\par
\par
def sin_sample(freq, amp, dur):\par
    global SAMPLE_FREQUENCY\par
\par
    output = empty(int(dur*SAMPLE_FREQUENCY), dtype=numpy.int16)\par
\par
    for i in range(dur):\par
        for j in range(freq):\par
            output[i * freq + j] = amp * math.sin(j / float(freq))\par
    \par
    return output\par
\par
def combine(wavs):\par
    n = len(wavs)\par
    total = 0\par
    output = zeros(len(wavs[0]), dtype=numpy.int16)\par
\par
    for i in range(len(wavs[0])):\par
        for j in range(n):\par
            total = total + wavs[j][i]\par
        \par
        output[i] = total / n\par
        total = 0\par
\par
    return output\par
\par
def silence(dur):\par
    return zeros(int(dur*SAMPLE_FREQUENCY), dtype=numpy.int16)\par
\par
def equal_scale(freq, amp, dur, sampler=sin_sample):\par
    result = empty(0,dtype=numpy.int16)\par
\par
    return result\par
\par
}