Skip to content

Instantly share code, notes, and snippets.

View ology's full-sized avatar
💭
🤔

Gene Boggs ology

💭
🤔
View GitHub Profile
@ology
ology / control.pl
Last active February 19, 2025 04:51
Why is a note played when note_off() fires?
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper::Compact qw(ddc);
use MIDI::RtMidi::FFI::Device ();
my $midi_in = RtMidiIn->new;
$midi_in->open_port_by_name(qr/tempopad/i);
@ology
ology / build.log
Last active January 24, 2025 18:09
cpanm Alien::RtMidi # fails on my Linux
cpanm (App::cpanminus) 1.7047 on perl 5.040000 built for x86_64-linux
Work directory is /home/gene/.cpanm/work/1737741557.397385
You have make /usr/bin/make
You have LWP 6.77
You have /usr/bin/tar: tar (GNU tar) 1.35
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
@ology
ology / .pl
Last active January 21, 2025 00:31
swing math
# $d->metronome44($d->bars, $d->ride2, $d->quarter, 67)
sub metronome44 {
my $self = shift;
my $bars = shift || $self->bars;
my $cymbal = shift || $self->ride1;
my $tempo = shift || $self->quarter;
my $swing = shift || 50; # percent
my $x = dura_size($tempo) * TICKS;
my $y = sprintf '%0.f', ($swing / 100) * $x;
my $z = $x - $y;
@ology
ology / .log
Last active January 18, 2025 18:02
Mojo upload is undef??
Use of uninitialized value $file in concatenation (.) or string at .../upload.pl line 96.
Mojo::Server::Sandbox::d51d682e78b961e143b7ed5b80fccaf5 L96
[2025-01-18 09:45:41.85818] [31751] [error] [TA0Dg0GidrV3] Can't call method "size" on an undefined value at .../upload.pl line 102.
@ology
ology / date-primes.txt
Last active December 30, 2024 20:19
Prime dates
> perl primes/date-primes.pl 2024
Prime dates: {
'2024' => {
'01' => [ 20240107 ],
'02' => [ 20240219 ],
'03' => [ 20240323, 20240327 ],
'04' => [ 20240411, 20240419 ],
'05' => [ 20240531 ],
'06' => [ 20240603, 20240611 ],
@ology
ology / clock-it.pl
Last active December 13, 2024 17:12
Perl MIDI clock - No dice
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long qw(GetOptions);
use MIDI::RtMidi::FFI::Device ();
use Time::HiRes qw(usleep);
my %opt = (
virtual => 'foo',
@ology
ology / clock-it.pl
Last active December 12, 2024 23:57
Trying to send a MIDI clock with perl
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long qw(GetOptions);
use MIDI::RtMidi::FFI::Device ();
use Time::HiRes qw(usleep);
my %opt = (
virtual => 'foo', #'perl-rtmidi',
@ology
ology / clock-it.py
Last active December 12, 2024 23:28
Clocking my synth over my usb audio interface with python
import mido
import time
# https://github.com/ology/Music/blob/master/clock-it.py
def send_clock(outport, bpm=120):
# Calculate the time between clock messages (24 PPQN per beat)
interval = 60 / (bpm * 24)
try:
while True:
@ology
ology / clock-it.py
Created December 12, 2024 20:08
Trying to send a pulse to a synth over my MIDI interface... Close, but no cigar (yet)
import mido
import time
def send_clock_messages(outport, bpm=120, num_beats=4):
# Calculate the time between clock messages (24 PPQN per beat)
interval = 60 / (bpm * 24)
for _ in range(num_beats * 24):
outport.send(mido.Message('clock'))
time.sleep(interval)
@ology
ology / out.txt
Created November 9, 2024 18:18
Can't list deps in my pyproject.toml?
(Python) gene@zappa:~/sandbox/dev/Python> pip install -i https://test.pypi.org/simple/ chess-coverage==0.1.1
Looking in indexes: https://test.pypi.org/simple/
Collecting chess-coverage==0.1.1
Using cached https://test-files.pythonhosted.org/packages/44/73/23e180406c9f065a76a81594b70cf8d1f17503f31b742c695b2ca7224fd0/chess_coverage-0.1.1-py3-none-any.whl.metadata (42 kB)
INFO: pip is looking at multiple versions of chess-coverage to determine which version is compatible with other requirements. This could take a while.
ERROR: Could not find a version that satisfies the requirement chess (from chess-coverage) (from versions: none)
ERROR: No matching distribution found for chess