Skip to content

Instantly share code, notes, and snippets.

@jiaaro
jiaaro / chord_pregression_player.py
Created May 23, 2015 17:27
Make a chord progressions
from pydub import AudioSegment
from pydub.generators import Sine, Square, WhiteNoise
from pydub.playback import play
# From https://gist.github.com/jiaaro/339df443b005e12d6c2a
def note_to_freq(note, concert_A=440.0):
'''
from wikipedia: http://en.wikipedia.org/wiki/MIDI_Tuning_Standard#Frequency_values
'''
return (2.0 ** ((note - 69) / 12.0)) * concert_A
@jiaaro
jiaaro / timings.py
Created May 6, 2015 23:12
ujson timings
# Timings taken on a MacBook Pro (Retina, 15-inch, Mid 2014)
# running OS X 10.10.3
In [1]: import sys
In [2]: print sys.version
2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]
In [3]: data = [{str(x): y+z for x in range(10) for y in range(50)} for z in range(500)]
In [4]: import json
@jiaaro
jiaaro / bpm_detection.py
Created March 19, 2015 16:17
Super simple BPM detection with pydub
from pydub import AudioSegment
from pydub.silence import detect_nonsilent
seg = AudioSegment.from_file("./ghosts_and_stuff.m4a")
# reduce loudness of sounds over 120Hz (focus on bass drum, etc)
seg = seg.low_pass_filter(120.0)
# we'll call a beat: anything above average loudness
beat_loudness = seg.dBFS
@jiaaro
jiaaro / Generate WAV from MIDI.md
Last active April 11, 2023 04:11
Generate a wave file from a MIDI file with Pydub

Simple example of rendering a midi file with Pydub

Basically, this takes a MIDI input file (I just googled and grabbed one of Maroon 5's "Animal" – I know, I know) and generates a WAV file.

NOTE: This is the slowest midi rendering program I have ever seen!

Dependencies:

MP

dashboard

  • Analysis | almost all the fields

dpm_core

  • Market | description / latest update
  • Panel | headers

homepage and sidebar features

@jiaaro
jiaaro / hotkey_helpers.js
Last active February 27, 2023 22:01
Mac Automation – Javascript (JSX) Hotkey helpers
// How to use:
// 1. Open "Script Editor" (requires OS X 10.10 Yosemite)
// 2. Change the language from "AppleScript" to "JavaScript"
// 3. Paste the code below and replace the safari example.
//
// More info:
// https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html
var sys_events = Application("System Events");
@jiaaro
jiaaro / installing_pyaudio.md
Last active January 21, 2023 18:40
How to install PyAudio into a VirtualEnv on Mac OS X 10.10

Install portaudio using homebrew (or method of your choice)

brew install portaudio

create $HOME/.pydistutils.cfg using the include and lib directories of your portaudio install:

[build_ext]
function Event() {
this.listeners = [];
}
Event.prototype.subscribe = function(fn) {
this.listeners.push(fn);
}
Event.prototype.unsubscribe = function(fn) {
for (var i = 0; i < this.listeners.length; i++) {
if (this.listeners[i] === fn) {
this.listeners.splice(i, 1);
@jiaaro
jiaaro / splitstereo.sh
Created August 7, 2014 19:10
Split Stereo Files (ffmpeg)
#!/bin/bash
INFILE="${1}"
LFILE=$(SND="$INFILE" python -c "import os; print '{0}.L{1}'.format(*os.path.splitext(os.environ['SND']))")
RFILE=$(SND="$INFILE" python -c "import os; print '{0}.R{1}'.format(*os.path.splitext(os.environ['SND']))")
echo "Splitting $INFILE into:"
echo " LEFT: $LFILE"
echo " RIGHT: $RFILE"
echo
@jiaaro
jiaaro / gist:fda3d04cf76f49f8051e
Created August 6, 2014 21:14
app revenue calculations
Development time: 3 weeks (15 * 8 == 120 hours)
Marketing time: 2 weeks (10 * 8 = 80 hours)
hourly: $200 (must pay well enough to justify risk)
profit target: $40k (200 hrs * $200)
revenue target: $60k (40000 / 0.67, Apple's cut)
--------