Skip to content

Instantly share code, notes, and snippets.

@ology
ology / error.txt
Created September 26, 2025 03:47
Seg fault on 2nd thread?
^C
KeyboardInterrupt detected. Signaling threads to stop...
^CTraceback (most recent call last):
File "/Users/gene/sandbox/Music/midi-threads.py", line 44, in <module>
time.sleep(0.5) # keep main thread alive and respond to interrupts
~~~~~~~~~~^^^^^
KeyboardInterrupt
During handling of the above exception, another exception occurred:
@ology
ology / .py
Last active September 14, 2025 22:47
timedelta
from datetime import datetime, time, date, timedelta
today = date.today()
print(today) # 2025-09-14
my_time = time(10, 30, 0)
print(my_time) # 10:30:00
my_datetime = datetime.combine(today, my_time)
print(my_datetime) # 2025-09-14 10:30:00
duration_to_subtract = timedelta(minutes=30)
print(duration_to_subtract) # 0:30:00
new_datetime = my_datetime - duration_to_subtract
@ology
ology / VoiceGen.py
Created September 4, 2025 18:20
Copilot return from "Convert this Perl module to a Python class:"
import random
from collections import defaultdict
from typing import Callable, List, Dict, Any, Optional
class MusicVoiceGen:
def __init__(self, pitches=None, intervals=None, possibles=None, weightfn=None,
contextfn=None, startfn=None, MAX_CONTEXT=1):
if pitches is not None and intervals is not None:
if not isinstance(pitches, list) or not pitches:
raise ValueError("have no pitches to work with")
@ology
ology / .pas
Last active June 1, 2025 16:35
Beginnings of Delphi12 SQLite DB access
unit Shopping;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.SQLite,
FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs, FireDAC.VCLUI.Wait,
@ology
ology / CC.pm
Last active May 25, 2025 08:33
Trying to clock from RtMidi
# ...
sub clock_it ($self, $device, $dt, $event) {
return 0 if $self->running;
$self->running(1);
$self->rtc->send_it(['start']);
$self->rtc->loop->add(
@ology
ology / .pas
Created May 16, 2025 18:26
Pascal's Triangle in Pascal
program PascalsTriangle;
uses crt;
var
triangle: array[1..20, 1..20] of integer;
i, j, n: integer;
begin
clrscr;
@ology
ology / .pas
Created May 15, 2025 18:41
Perl Schwartzian transform to Pascal
program SortStrings;
uses SysUtils;
var
unsorted: array of string;
sorted: array of string;
i, j: Integer;
temp: string;
@ology
ology / .txt
Created April 18, 2025 19:12
Possible Win10 + perl 5.40 list_devices issue?
C:\Users\diamo\Documents\Music-Code>perl list_devices.pl
Use of uninitialized value $path in -d at C:/Strawberry/perl/vendor/lib/FFI/CheckLib.pm line 252.
MidiInWinMM::initialize: no MIDI input devices currently available.
MidiInWinMM::initialize: no MIDI input devices currently available.
Input devices:
@ology
ology / .pl
Last active March 22, 2025 02:04
Two controller controlling...
#!/usr/bin/env perl
# fluidsynth -a coreaudio -m coremidi -g 2.0 ~/Music/FluidR3_GM.sf2
# PERL_FUTURE_DEBUG=1 perl rtmidi-dual.pl
use v5.36;
use MIDI::RtController ();
my $input_name_1 = shift || 'joystick'; # midi controller device
@ology
ology / play.pl
Last active March 11, 2025 20:35
Controller play with mostly correct timing!
elsif ($ev eq 'control_change' && $note == 25 && $vel == 127) { # play
log_it(recording => 'off');
$recording = 0;
if (!$playing && @$events) {
log_it(playing => 'on');
$playing = 1;
my $part = sub {
my (%args) = @_;
my $t = $args{bpm} / 60; # beats per second
for my $i (0 .. $args{events}->$#*) {