Skip to content

Instantly share code, notes, and snippets.

View jussi-kalliokoski's full-sized avatar

Jussi Kalliokoski jussi-kalliokoski

View GitHub Profile
@jussi-kalliokoski
jussi-kalliokoski / bugzilla-to-github.coffee
Created December 25, 2012 21:54
A script to export bugzilla's bugs to github's issues.
request = require 'request'
Restzilla = require 'restzilla'
BUGZILLA_URL = 'https://www.w3.org/Bugs/Public/'
BURL = 'http://localhost:8000/AudioWG/MIDI%20API/'
GH_USER = 'jussi-kalliokoski'
GH_REPO = 'webmidi-issues'
GH_URL = 'https://api.github.com/repos/' + GH_USER + '/' + GH_REPO + '/issues'
GH_AUTH =
username: 'octocat'
@jussi-kalliokoski
jussi-kalliokoski / example.js
Last active June 12, 2025 08:58
Web MIDI API with maps
var select = document.createElement('select');
var selectedPort = null;
var onMessage = function (event) {
// TODO: Use the message
};
var selectPort = function (id) {
var newPort = midiAccess.inputs.get(id);
@jussi-kalliokoski
jussi-kalliokoski / draw-waveform.js
Created September 24, 2014 06:41
Waveform drawing
function getAudioData (url, time) {
return new Promise(function (resolve, reject) {
var context = new AudioContext();
var track = new Audio(url);
var bufferLength = time * context.sampleRate;
var buffer = new Float32Array(bufferLength);
var collector = context.createScriptProcessor(0, 1);
var audioSource = context.createMediaElementSource(track);
var samplesCollected = 0;
@jussi-kalliokoski
jussi-kalliokoski / 1-midi-stream-simple-example.js
Created February 15, 2016 07:42
Web MIDI Streams examples
const NOTE = 69;
const NOTE_ON = 0x90;
const NOTE_OFF = 0x80;
const SECONDS = 1000;
function startSequencer (destination) {
let active = false;
setInterval(() => {
const now = performance.now();
const type = active ? NOTE_OFF : NOTE_ON;
@jussi-kalliokoski
jussi-kalliokoski / RouteParser.ts
Created March 21, 2024 08:35
A fully typed route parser.
// Usage:
// let parseRoute = routeParser("/users/{userId}/posts/{postId}");
// let params = parseRoute("/users/123/posts/456");
// console.log(params); // { userId: "123", postId: "456" }
const KIND_KEY = "key" as const;
const KIND_VALUE = "value" as const;
/**
* Create a route parser from a route string.
@jussi-kalliokoski
jussi-kalliokoski / git-pick-file.sh
Last active July 11, 2022 10:08
Cherry-picks commits from master that have changes to specified files.
$!/usr/bin/env sh
branch=`git symbolic-ref --short HEAD`
git checkout master
commits=`git log --pretty="%H" --reverse -- $*`
git checkout $branch
for commit in $commits; do
git cherry-pick $commit
done
function memcpy (src, srcOffset, dst, dstOffset, length) {
var i
src = src.subarray || src.slice ? src : src.buffer
dst = dst.subarray || dst.slice ? dst : dst.buffer
src = srcOffset ? src.subarray ?
src.subarray(srcOffset, length && srcOffset + length) :
src.slice(srcOffset, length && srcOffset + length) : src
@jussi-kalliokoski
jussi-kalliokoski / dispose.js
Created February 25, 2013 20:44
A polyfill for ArrayBuffer#dispose
void function () {
if ( 'dispose' in ArrayBuffer.prototype ) return
var blob = new Blob([''], {
type: 'text/javascript'
})
var url = URL.createObjectURL(blob)
var worker = new Worker(url)
URL.revokeObjectURL(url)
@jussi-kalliokoski
jussi-kalliokoski / Makefile
Created March 30, 2012 19:55
sudo make me a sandwich
NOOP := rm -f
me:
@$(NOOP)
a:
@$(NOOP)
sandwich:
@if [ `whoami` = "root" ]; then echo "one sandwich coming right up!"; else echo "hah, make me!"; fi
@jussi-kalliokoski
jussi-kalliokoski / LICENSE.txt
Last active March 8, 2018 11:44 — forked from 140bytes/LICENSE.txt
A 140byt.es UUIDv4 generator.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2011 Jussi Kalliokoski <jussi.kalliokoski@gmail.com>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE