Skip to content

Instantly share code, notes, and snippets.

View eric-wood's full-sized avatar
🥑
probably snacking

Eric Wood eric-wood

🥑
probably snacking
View GitHub Profile

Setting up affinity2kicad

Note that this assumes some familiarity with tools like Homebrew, the shell, and concepts like PATH.

Installing dependencies

You'll need Python 3 to continue; MacOS still ships with v2, although Python 3 is available through the commandline tools.

Cataclysm parts ordering guide

Here's all the stuff you need to build this thing, all from a single source. No need to drill the enclosure, either!

PCB Link

Resistors

  • 1M - 1
  • 470k - 2
  • 220k - 2
var voice;
for(v of window.speechSynthesis.getVoices()) {
if(v.name === 'Fred') {
voice = v;
break;
}
}
const utterance = new SpeechSynthesisUtterance('Fitter. Happier. More productive.');
utterance.voice = voice;
// here's the MIDI notes for the sequence
// const NOTES = [36, 40, 43, 47, 48, 47, 43, 40];
// web audio oscillators want frequency values, tho, so here's the frequencies:
const NOTES = [65.4063913251, 82.4068892282, 97.9988589954, 123.4708253140, 130.8127826503, 123.4708253140, 97.9988589954, 82.4068892282];
let current = 0;
setInterval(() => {
postMessage(NOTES[current]);
current = current < NOTES.length - 1 ? current + 1 : 0;
}, 200);
@eric-wood
eric-wood / spec_helper.rb
Last active July 5, 2017 15:11
Minimal (yet effective) Capybara + headless Chrome testing setup
require 'rspec'
require 'capybara/rspec'
require 'selenium/webdriver'
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
webdriver_options = %w(disable-gpu)
webdriver_options << 'headless' unless ENV['WINDOWED'] == 'true'
function withMidi(WrappedComponent) {
return class extends React.Component {
constructor(props) {
super(props);
hasMidi = Boolean(navigator.requestMIDIAccess);
this.state = {
access: undefined,
input: undefined,

Keybase proof

I hereby claim:

  • I am eric-wood on github.
  • I am ericwood (https://keybase.io/ericwood) on keybase.
  • I have a public key ASBMbbFSMIrlv1j98Jcjsz5slmSGgDdRWOumjw9Idpv7SAo

To claim this, I am signing this object:

data = File.read(ARGV[0])
def bits(byte, offset, size: 2)
bitmask = (2 ** size - 1) << offset
(byte & bitmask) >> offset
end
def ascii(data)
data.gsub(/\u0000/, ' ')
end
@eric-wood
eric-wood / minilogue_midi.txt
Created March 25, 2016 19:07
Official Korg Minilogue MIDI spec
KORG minilogue Implementation Revision 1.00 (2016.02.10)
1.TRANSMITTED DATA
1-1 CHANNEL MESSAGES [H]:Hex, [D]:Decimal
+--------+---------+-------------+-----------------------------------------+
| Status | Second | Third | Description |
| [Hex] | [H] [D] | [H] [D] | |
+--------+---------+-------------+-----------------------------------------+