peterf@2: {
peterf@2: "metadata": {
peterf@2: "name": "",
peterf@2: "signature": "sha256:86e9ec491930783959a81006aa94d67d1d51cd38090b58fd916b12717020fae9"
peterf@2: },
peterf@2: "nbformat": 3,
peterf@2: "nbformat_minor": 0,
peterf@2: "worksheets": [
peterf@2: {
peterf@2: "cells": [
peterf@2: {
peterf@2: "cell_type": "markdown",
peterf@2: "metadata": {},
peterf@2: "source": [
peterf@2: "# Audio effects and playback with Librosa and IPython Notebook\n",
peterf@2: "\n",
peterf@2: "This notebook will demonstrate how to do audio effects processing with librosa and IPython notebook. You will need IPython 2.0 or later.\n",
peterf@2: "\n",
peterf@2: "By the end of this notebook, you'll know how to do the following:\n",
peterf@2: "\n",
peterf@2: " - Play audio in the browser\n",
peterf@2: " - Effect transformations such as harmonic/percussive source separation, time stretching, and pitch shifting\n",
peterf@2: " - Decompose and reconstruct audio signals with non-negative matrix factorization\n",
peterf@2: " - Visualize spectrogram data"
peterf@2: ]
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "import librosa\n",
peterf@2: "import IPython.display\n",
peterf@2: "import numpy as np"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [],
peterf@2: "prompt_number": 17
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "import matplotlib.pyplot as plt\n",
peterf@2: "%matplotlib inline"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [],
peterf@2: "prompt_number": 18
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# Load the example track\n",
peterf@2: "y, sr = librosa.load(librosa.util.example_audio_file())"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [],
peterf@2: "prompt_number": 34
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# Play it back!\n",
peterf@2: "IPython.display.Audio(data=y, rate=sr)"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [
peterf@2: {
peterf@2: "html": [
peterf@2: "\n",
peterf@2: " \n",
peterf@2: " "
peterf@2: ],
peterf@2: "metadata": {},
peterf@2: "output_type": "pyout",
peterf@2: "prompt_number": 35,
peterf@2: "text": [
peterf@2: ""
peterf@2: ]
peterf@2: }
peterf@2: ],
peterf@2: "prompt_number": 35
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# How about separating harmonic and percussive components?\n",
peterf@2: "y_h, y_p = librosa.effects.hpss(y)"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [],
peterf@2: "prompt_number": 36
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# Play the harmonic component\n",
peterf@2: "IPython.display.Audio(data=y_h, rate=sr)"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [
peterf@2: {
peterf@2: "html": [
peterf@2: "\n",
peterf@2: " \n",
peterf@2: " "
peterf@2: ],
peterf@2: "metadata": {},
peterf@2: "output_type": "pyout",
peterf@2: "prompt_number": 37,
peterf@2: "text": [
peterf@2: ""
peterf@2: ]
peterf@2: }
peterf@2: ],
peterf@2: "prompt_number": 37
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# Play the percussive component\n",
peterf@2: "IPython.display.Audio(data=y_p, rate=sr)"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [
peterf@2: {
peterf@2: "html": [
peterf@2: "\n",
peterf@2: " \n",
peterf@2: " "
peterf@2: ],
peterf@2: "metadata": {},
peterf@2: "output_type": "pyout",
peterf@2: "prompt_number": 38,
peterf@2: "text": [
peterf@2: ""
peterf@2: ]
peterf@2: }
peterf@2: ],
peterf@2: "prompt_number": 38
peterf@2: },
peterf@2: {
peterf@2: "cell_type": "code",
peterf@2: "collapsed": false,
peterf@2: "input": [
peterf@2: "# Pitch shifting? Let's gear-shift by a major third (4 semitones)\n",
peterf@2: "y_shift = librosa.effects.pitch_shift(y, sr, 7)\n",
peterf@2: "\n",
peterf@2: "IPython.display.Audio(data=y_shift, rate=sr)"
peterf@2: ],
peterf@2: "language": "python",
peterf@2: "metadata": {},
peterf@2: "outputs": [
peterf@2: {
peterf@2: "html": [
peterf@2: "\n",
peterf@2: "