Skip to content

Instantly share code, notes, and snippets.

View craffel's full-sized avatar

Colin Raffel craffel

View GitHub Profile
@craffel
craffel / pretty_midi chiptunes.ipynb
Last active October 24, 2015 00:45
Functions for drum synthesis, arpeggiation and chiptunes synthesis in pretty_midi. View here: http://nbviewer.ipython.org/gist/craffel/3eb7513d4540f4acee93
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@craffel
craffel / draw_neural_net.py
Created January 10, 2015 04:59
Draw a neural network diagram with matplotlib!
import matplotlib.pyplot as plt
def draw_neural_net(ax, left, right, bottom, top, layer_sizes):
'''
Draw a neural network cartoon using matplotilb.
:usage:
>>> fig = plt.figure(figsize=(12, 12))
>>> draw_neural_net(fig.gca(), .1, .9, .1, .9, [4, 7, 2])
@craffel
craffel / gist:50a422f431350f0b3b09
Last active May 28, 2018 23:40
Faster pretty_midi Fluidsynth method
import tempfile
import subprocess
import os
import pretty_midi
import librosa
def fast_fluidsynth(m, fs):
'''
Faster fluidsynth synthesis using the command-line program
instead of pyfluidsynth.
@craffel
craffel / gist:a90a8baff0377e7f9542
Created June 8, 2015 20:54
Dynamic time warping in Theano
'''
Dynamic time warping implementation in Theano
See also
https://github.com/astanway/theano-dtw
https://github.com/danielrenshaw/TheanoBatchDTW
'''
import theano
import theano.tensor as T
@craffel
craffel / whetlab_results.json
Created July 3, 2015 03:08
Hashing hyperparameter search result dump from Whetlab
This file has been truncated, but you can view the full file.
{
"description": "CQT no beats",
"hypers": "{\"objective\": {\"hyper_dims\": {\"44672\": {\"bscale\": [0], \"bcenter\": [0]}, \"44673\": {\"bscale\": [1], \"bcenter\": [1]}, \"44674\": {\"bscale\": [2], \"bcenter\": [2]}, \"44675\": {\"bscale\": [3], \"bcenter\": [3]}, \"44676\": {\"bscale\": [4], \"bcenter\": [4]}, \"44677\": {\"bscale\": [5], \"bcenter\": [5]}, \"44678\": {\"bscale\": [6], \"bcenter\": [6]}}, \"nnet_parameters\": [{\"shape\": [7, 50], \"value\": \"eJwNlvc/FI4fx1FCwuejoRJJoSgpWsI7pOxZyPooojT4IDK+iRZKmRll5M7qzLM53hzHcZxZx4nO\\nqMgKDZ+sb//A65fn6/F8vb6Clzq888Cbknx/Jc+HwvcJPeVgp0k07ai6KUwJhwb3AlXbUTJ6UTaN\\nxUQVodpUv2Ui+SYOVI2mCPmycUNqDWGLJgHeeYYyv0TlQEr2S4N06Vo4Jra2+W79G0D/vrVfke0g\\npfbzzfCBbthy07Z/TO06Kscz6MaxHfiI97vQYXIfuEbUclUwmuDz/QslrtUsrPzVLksVHkS53Z61\\nRtIIe7W6j+jOEeG2uNf9F9JFmE31cNjBRcLFro2+vBJVKPD2qOzsQCOmUJWknlIG8JLLHe0Ht5tx\\nw5NqcpFfNxw3n7yVkYlQWEVQkCguwsHe8ZZDuaNYWnhya2MJwuhcxgaWTgvWRpNi/hlm4by9pg0h\\nmQrHTRP03YRJKK1bcErerQddRzkmPP8lwuUzEjsoLyqxcZ/ckxXjepTjFcyb+smBF2Of6s
@craffel
craffel / Fast padding.ipynb
Created November 19, 2015 00:22
Faster 'same' mode convolutions in Lasagne, for even filter sizes too!
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@craffel
craffel / get_live_uspop2002.py
Created December 2, 2015 19:30
Get liveness score for each entry in uspop2002
"""
Create a tab-separated value file for uspop2002 entries which includes each
track's Echo Nest "loudness" score
"""
import pyen
import os
import time
# Put your Echo Nest API key in a file called .echonest_key
@craffel
craffel / clean_clean_midis.py
Last active April 24, 2016 23:34
Scripts used for generating the clean MIDI subset, as used in https://github.com/craffel/midi-dataset
import os
os.chdir('..')
import sys
sys.path.append(os.getcwd())
import normalize_names
import pickle
with open('data/Clean MIDIs-md5_to_artist_title.pickle') as f:
md5_to_artist_title = pickle.load(f)
@craffel
craffel / mrr.py
Created January 19, 2016 02:47
Compute mean reciprocal rank between two sets of feature vectors
def mean_reciprocal_rank(X, Y, indices, metric='hamming'):
''' Computes the mean reciprocal rank of the correct match
Assumes that X[n] should be closest to Y[n]
Default uses hamming distance
:parameters:
- X : np.ndarray, shape=(n_examples, n_features)
Data matrix in X modality
- Y : np.ndarray, shape=(n_examples, n_features)
Data matrix in Y modality
- indices : np.ndarray
@craffel
craffel / popcount_array.pyx
Last active October 11, 2022 20:48 — forked from aldro61/popcount_array.pyx
Popcount of a numpy array of integers of any dtype
"""
Functions for computing the population count (aka Hamming weight) of an array
in-place using the built-in popcount routine.
Works with any integer datatype 64 bit-width or smaller.
Compile with gcc flag -mpopcnt
Adapted from
https://gist.github.com/aldro61/f604a3fa79b3dec5436a by Alexandre Drouin
"""
import numpy as np
cimport numpy as np