Mercurial > hg > vamp-plugin-sdk
changeset 463:43762dba6747 vampipe
Merge from 454:3949cc56f2ce
author | Chris Cannam |
---|---|
date | Mon, 10 Oct 2016 15:52:27 +0100 |
parents | 85dadd0d482f (current diff) 3949cc56f2ce (diff) |
children | 7cf38d7ad81d e32815f133d6 |
files | |
diffstat | 1 files changed, 236 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/testsignal.ipynb Mon Oct 10 15:52:27 2016 +0100 @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import librosa\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "block=1024\n", + "length=block*20" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "diracs = [ x/float(length) if (x % block) == 0 else 0.0 for x in range(0,length) ]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[<matplotlib.lines.Line2D at 0x7f7fe1e18320>]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f8020199278>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(diracs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import math\n", + "wave = [ (int(x/block) / float(length/block)) * math.sin(x*math.pi/(block/8)) for x in range(0,length)]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[<matplotlib.lines.Line2D at 0x7f7fe1e54780>]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f7fe1e54cc0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(wave)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "duration=20.0\n", + "rate=22050\n", + "nsamples=duration*rate\n", + "repeats=int(nsamples/length)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data=[diracs * repeats, wave * repeats]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "ndata = np.uint8(np.array(data) * 127.0 + 128.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(430080, 2)" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ndata = np.swapaxes(ndata, 0, 1)\n", + "ndata.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from scipy.io.wavfile import write\n", + "write('/tmp/test.wav', rate, ndata)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}