Wednesday, July 2, 2025

getting mixxx to recognize the fc310 as hid

you need to flick the switch on the back of the controller to d instead of x for direct mode instead of x mode
you get a permissions error about usb devices to fix that create a udev rule


sudo vim /etc/udev/rules.d/99-logitech-f310.rules

# Logitech F310 Gamepad in DirectInput mode
KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c216", MODE="0666", GROUP="plugdev"

sudo udevadm control --reload
sudo udevadm trigger

sudo usermod -aG plugdev $USER
my hid mapping

its cool not needing to use antimicrox, this is as far as I got with the mapping. I was hoping to map the superknobs to controll the delay but have'nt figured it out yet
I still need to add the left/right nudge functionality

Tuesday, July 1, 2025

stuff I added to the mixxx custom keyboard config.

shift 1-8 for samples, removed the loop stuff because i never use it,
ctrl vx turn deck 1 super knob up and down c resets
ctrl r angle and m are up and down for deck 2 super knob
ctrl c and ctrl left angle bracket turn super knob send to zero


[Sampler1]
cue_gotoandplay Shift+!

[Sampler2]
cue_gotoandplay Shift+@

[Sampler3]
cue_gotoandplay Shift+#

[Sampler4]
cue_gotoandplay Shift+$

[Sampler5]
cue_gotoandplay Shift+%

[Sampler6]
cue_gotoandplay Shift+^

[Sampler7]
cue_gotoandplay Shift+&

[Sampler8]
cue_gotoandplay Shift+*

// -----------
// THE SUPER KNOB
// -----

[QuickEffectRack1_[Channel1]_Effect1]
enabled b
[QuickEffectRack1_[Channel1]]
super1_down Ctrl+x
super1_set_default Ctrl+c
super1_up Ctrl+v

[QuickEffectRack1_[Channel2]_Effect1]
enabled n
[QuickEffectRack1_[Channel2]]
super1_down Ctrl+m
super1_set_default Ctrl+,
super1_up Ctrl+.

How To Edit Metadata Using Clipboard Managers, Puddletags And Autohotkey

Its like a spreadsheet its really easy to see everything this way.
trying a few clipboard managers out so I don't need to manually type everything out each time.
diodon, parcellite, copyq
out of all of these my favorite is autohotkey
With it I can easily set it up to label genres like shift 1 jungle shift 2 footwork etc..

Monday, June 30, 2025

you can't safely eject usbs on ios

video about it

kind of freaks me out for djing.
tau lets you back up your database to iCloud or dropbox
it's stored locally within the app.
be careful because it might pull down an old version and overwrite your hard work setting cue points and adjusting beat grids.

They say the safest thing is to turn off your device to prevent corrupting it.

  • always make backups!

Tau dj mapping for dj control compact

my hercules dj control compact mapping

They got rid of the tempo faders on this controller. The software workaround is to hold shift and turn the jog wheel but the default mapping doesn't do that. This map fixes that but at the expense of being able to finely nudge which isn't great but its works if you just use the touch screen for that.

Saturday, June 28, 2025

fontforge masterclass

michael harmon is the man for making this fontforge tutorial series on youtube.

Friday, June 27, 2025

renoise defaulting to hdmi on raspberry pi 4 fix

install pipewire-jack and run pw-jack renoise to run it with the jack settting but have it bridged to run in the back with pipewire

Thursday, June 26, 2025

beorg and organice encryption with gnupg

Its a 3.99 IAP
beorg encryption
I usually sync everything in icloud and the notes app lets you lock notes
testing it out by using dropbox and syncing notes using organice.200ok.ch
to decrypt on linux:


gpg -d mynote.org

you can use the iSH app to decrypt also


  apk add gnupg
  

gpg -d mynote.org > output.org
that redirects the output from the terminal to a file

Wednesday, June 25, 2025

djay player pro em fix

I was sad
when this app stoped working it was a one time purchase light version without dvs and midi but still very wicked. I was able to still download it and install from under purchase history but it would stuuter.

the fix:
under output options enable experimental 96k output
im so glad it works again
they no longer aell dj player pro
tried to install that and it wouldnt let me subscribe.

the app is now a one time purchase of 50$ called tau djv1

The S Christian Collings GM GS soundfont

GMGS google drive link

reaper config

reaper config

fixing waveshare lcdtft display

sudo vim /boot/config.txt

#on the dtoverlay line add:
fps=30,speed=42000000
#so it reads like

dtoverlay=waveshare35a,fps=30,speed=42000000

this makes it refresh faster at the expense of screwing up the colors a bit

Friday, June 20, 2025

project m visualizer

milkdrop for linux

same post as last but with org export style sheet

setting up i3 on a fresh pi lite

make a file called .xsession

inside it add:

exec i3

add this to .profile

# if tty loads then startx and i3
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
  startx
fi

i3 config

in .config/i3/config put:

# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#

# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!


set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 12

# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8

# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3

# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.

# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork

# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet

# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar

# start a terminal
bindsym $mod+Return exec i3-sensible-terminal

# kill focused window
bindsym $mod+Shift+q kill

# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id dmenu_run

# A more modern dmenu replacement is rofi:
 bindsym $mod+d exec "rofi -modi drun,run -show drun"

# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop

# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right

# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right

# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split in horizontal orientation
bindsym $mod+h split h

# split in vertical orientation
bindsym $mod+v split v

# enter fullscreen mode for the focused container
bindsym $mod+m fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
#bindsym $mod+s layout stacking
#bindsym $mod+w layout tabbed
#bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+space floating toggle

# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# focus the child container
#bindsym $mod+d focus child

# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10

# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"

# resize window (you can also use the mouse for that)
mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym semicolon resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape or $mod+r
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+r mode "default"
}

bindsym $mod+r mode "resize"

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
        status_command i3status
}

#remove title bar
for_window [class="^.*"] border pixel 0

#open file manager
bindsym $mod+f exec thunar

bindsym $mod+w exec firefox

Created: 2025-06-20 Fri 03:59

i3 on pi lite

setting up i3 on a fresh pi lite

make a file called .xsession

inside it add:

exec i3

add this to .profile

# if tty loads then startx and i3
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
  startx
fi

i3 config

in .config/i3/config put:

# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#

# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!


set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 12

# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8

# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3

# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.

# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork

# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet

# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar

# start a terminal
bindsym $mod+Return exec i3-sensible-terminal

# kill focused window
bindsym $mod+Shift+q kill

# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id dmenu_run

# A more modern dmenu replacement is rofi:
 bindsym $mod+d exec "rofi -modi drun,run -show drun"

# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop

# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right

# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right

# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

# split in horizontal orientation
bindsym $mod+h split h

# split in vertical orientation
bindsym $mod+v split v

# enter fullscreen mode for the focused container
bindsym $mod+m fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
#bindsym $mod+s layout stacking
#bindsym $mod+w layout tabbed
#bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+space floating toggle

# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# focus the child container
#bindsym $mod+d focus child

# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10

# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"

# resize window (you can also use the mouse for that)
mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym semicolon resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape or $mod+r
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+r mode "default"
}

bindsym $mod+r mode "resize"

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
        status_command i3status
}

#remove title bar
for_window [class="^.*"] border pixel 0

#open file manager
bindsym $mod+f exec thunar

bindsym $mod+w exec firefox

Created: 2025-06-20 Fri 03:57

Thursday, June 19, 2025

clipart links

victorian

openclipart

dat

dat link

cc search

rectangular dividers

punk flyers

ms clipart searchdb

Encrypting text in vim with the vim-gnupg plugin


Plug 'jamessan/vim-gnupg'

" GPG SETTINGS for just password
let g:GPGPreferSymmetric = 1
" gpg so temp is also encrypted
" Prevent backup files (avoid leaving decrypted content on disk)
set nobackup
set nowritebackup
" Encrypt temporary files too
let g:GPGUseAgent = 1

Add above to vimrc and below to bashrc


# vim gpg
GPG_TTY=`tty`
export GPG_TTY

This symmetrical encryption prompts for a password on save and for 10 mins lets you re-open without a password in vim. To clear the cache so you are prompted immediately run in the terminal:


gpgconf --kill gpg-agent

Wednesday, June 18, 2025

how to get app image icons

I downloaded FreeCad as an app image I want to create a desktop shortcut but I needed an Icon


./freecad.AppImage --appimage-extract

Tuesday, June 17, 2025

mixxx export playlist as csv run csvkit on it to find duration of set


csvtool col 4 vertagogo.csv | tail -n +2 | awk -F: '{
    min=$1;
    sec=$2;
    total += min * 60 + sec;
} END {
    h = int(total / 3600);
    m = int((total % 3600) / 60);
    s = total % 60;

    if (h > 0) {
        printf "Total Duration: %d hour%s %d minute%s %d second%s\n",
            h, (h!=1?"s":""),
            m, (m!=1?"s":""),
            s, (s!=1?"s":"");
    } else if (m > 0) {
        printf "Total Duration: %d minute%s %d second%s\n",
            m, (m!=1?"s":""),
            s, (s!=1?"s":"");
    } else {
        printf "Total Duration: %d second%s\n", s, (s!=1?"s":"");
    }
}'

Assuming duration is in the 4th col then this script works
I also jumped through some hoops trying to figure out a way to sort them in the CLI by bpm but you can just click on them in mix.

Monday, June 16, 2025

printing csv as html tables using basic shell tools like tail

this shell script makes an html table out of a simple 2 col csv


#!/bin/sh
echo ""
echo "  "
echo "  "
tail -n +2 "$1" | awk -F',' '{print "    "}'
echo "  "
echo "
itemquantity
" $1 "" $2 "
"

I don't want to install numbers on my Ipad. A-shell mini/pythonista can run csvkit (csvtools is another good one) instead to do alot of basic data

  • shortcuts - data fetching, logging, file management
  • a-shell mini - csvtools, awk, sed, (maybe even a little grep)
  • pythonista - data analysis/ visualizations

Friday, June 13, 2025

my renoise shortcuts

linked from my other blog, was wondering why I couldn't find it on this blog

Making Shipping Labels In Calc

macmost did a cool tutorial using apple numbers and pages

The way I would do it before was to use scribus but then I found pages can do linked text boxes.


Heres how you would do the formula to get the same result in libre office calc


=A2 & CHAR(10) & B2 & CHAR(10) & C2

Monday, June 9, 2025

10 fun math tricks for predicting the future with forecasts

# Math Trick Description Use Case Example
1 Moving Averages Smooths data using a rolling average (SMA, WMA, EMA) Forecasting trends in sales or traffic
2 Exponential Smoothing Weights recent data more for responsive short-term forecasting Predicting next day's value
3 Linear Regression Fits a straight trend line to data Predicting future sales or prices
4 Polynomial Regression Fits a curve to account for nonlinear trends Modeling growth with acceleration
5 Logarithmic/Exponential Trend Fits curved models like exponential or logarithmic Forecasting growth or decay
6 Percent Change / Growth Rate Uses % increase/decrease to project future values Estimating next month's revenue
7 Seasonal Averaging Averages data by time periods (month, week, etc.) Forecasting monthly sales
8 Rolling Regression Applies linear regression over a sliding window Short-term stock price prediction
9 Z-Score Anomaly Detection Identifies and removes outliers using standard deviations Cleaning noisy time series
10 Fourier Transform (FFT) Finds cyclical patterns via frequency analysis Detecting seasonality in demand patterns

why not have another 10?

# Math Trick Description Use Case Example
11 CAGR (Compound Annual Growth Rate) Measures average annual growth rate over time Forecasting investment growth
12 Autoregressive (AR) Models Uses past values to predict the next one Time series forecasting like AR(1), AR(2)
13 Differencing (Δ) Subtracts previous values to remove trend or seasonality Stationarizing a time series
14 Cumulative Sum (CUSUM) Tracks cumulative change from a reference point Detecting slow shifts in process metrics
15 Holt-Winters (Triple Smoothing) Adds seasonality and trend to exponential smoothing Forecasting seasonally fluctuating data
16 Simple Lagged Features Adds previous values as new columns Enhancing model input with past behavior
17 Normalization/Standardization Scales data to make it comparable or Gaussian Preprocessing before regression or modeling
18 Clustering for Pattern Detection Groups similar trends using K-means or DBSCAN Discovering behavior groups in data
19 Savitzky–Golay Filter Smooths data while preserving shape Denoising noisy sensor or measurement data
20 Quantile Forecasting Predicts a range (not just average) using percentiles Risk modeling, demand estimation with bounds

10 more

# Math Trick Description Use Case Example
21 Slope Calculation (Rate of Change) Measures steepness between data points Detecting acceleration in trends
22 Cross-Correlation Measures similarity between two time series Lag detection between related variables
23 Seasonality Index Normalizes values by seasonal averages Adjusting for repeating seasonal patterns
24 Principal Component Analysis (PCA) Reduces dimensionality while preserving variance Feature compression before modeling
25 Residual Analysis Analyzes difference between actual and predicted values Improving model accuracy by modeling errors
26 Bootstrapping Resamples data with replacement to estimate confidence intervals Estimating forecast uncertainty
27 Time Series Decomposition Separates series into trend, seasonality, and residual Understanding data components for forecasting
28 Interpolation Fills in missing values between known data points Reconstructing incomplete datasets
29 Weighted Least Squares (WLS) Linear regression giving more weight to certain data points Handling heteroscedasticity in data
30 Bayesian Updating Updates forecast with new data based on prior beliefs Dynamic forecasting as new data arrives
# Math Trick Description Use Case Example
31 K-Nearest Neighbors (KNN) Forecasting Predicts based on the average of similar past patterns Forecasting similar behavior sequences
32 Dynamic Time Warping (DTW) Measures similarity between time series with time shifts Comparing sequences with misaligned timing
33 Prophet Model (by Facebook) Decomposable time series model with trend, seasonality, holidays Business forecasting with multiple components
34 Recurrent Patterns Detection Identifies repeating patterns in time series Analyzing periodic signals
35 Residual Smoothing Smooths the error component of a forecast Reducing noise in forecast residuals
36 Rolling Median Like moving average, but uses median for robustness to outliers Smoothing noisy data with outlier resistance
37 Data Binning Groups continuous values into categories Trend simplification or histogram generation
38 Signal Denoising (Wavelet Transform) Removes high-frequency noise while preserving structure Processing raw sensor or stock data
39 Granger Causality Test Determines if one time series can predict another Identifying causal predictors
40 Lead-Lag Analysis Measures which variables lead or follow others in time Input feature timing alignment
41 Change Point Detection Detects shifts in trend or distribution Finding when market behavior changes
42 Trend Strength Index Quantifies how strong the trend is Deciding if forecasting is appropriate
43 Signal-to-Noise Ratio (SNR) Compares signal strength to background noise Evaluating data quality for prediction
44 Elastic Net Regression Combines Lasso and Ridge for robust regression Forecasting with high-dimensional features
45 Lag Correlation Matrix Compares correlation across time lags Feature selection from past data
46 Time-Weighted Averages Weighs recent data more heavily based on time decay Real-time adaptive forecasting
47 Histogram-Based Forecasting Predicts based on distribution of past values Probabilistic forecasting from historical data
48 Rolling Standard Deviation Tracks volatility over time Measuring uncertainty or instability
49 Confidence Interval Forecasting Predicts with upper and lower bounds Risk-aware forecasting
50 Ensemble Averaging Combines forecasts from multiple models Improving accuracy through diversity

Sunday, June 8, 2025

how to backup contacts

my mom lost her phone.  
got me asking myself 
"how could I prepare if I knew I was going to loose my phone?"
I want to make a nice table of some important contacts to stick on the fridge
without having to manually click through each one.
shortcut to batch export contacts as a zip full of vcfs

sudo apt install python3-vobject
python tool to convert vcf to csv heres my scribus template

the SG_NEXT-RECORD needs to not be on the first record or it won't show. It needs to be in smaller also. This tripped me up at first

Friday, June 6, 2025

Lingot - a cool little tuner for linux


sudo apt install lingot

blend modes explained

Blend Mode What It Does Effect Description
Normal Displays the top layer as-is. No blending occurs — pixels on top layer simply cover the bottom layer.
Multiply Multiplies base and blend layer colors. Darkens the image; white does nothing, black stays black.
Screen Multiplies the inverse of the colors, then inverts the result. Lightens the image; black does nothing, white stays white.
Overlay Combines Multiply and Screen based on base brightness. Increases contrast; darks get darker, lights get lighter.
Color Dodge Brightens the base color to reflect the blend color. Intense lightening; highlights are boosted dramatically, midtones stay.
Color Burn Darkens the base color to reflect the blend color. Increases contrast by darkening; shadows deepen.
Difference Subtracts the darker color from the lighter one (absolute difference). Inverts colors where layers differ; useful for creative or abstract effects.
Soft Light Gently darkens or lightens based on blend color. A subtle overlay; like shining a diffused spotlight.
Hard Light A harsher version of Soft Light, combines Multiply and Screen. High-contrast lighting effect; amplifies intensity.
Darken Keeps the darker of the base and blend colors. Replaces lighter areas with darker ones.
Lighten Keeps the lighter of the base and blend colors. Replaces darker areas with lighter ones.
Blend Mode When to Use It Example Use Case
Normal When no blending is needed. Adding a logo or icon to a design without any blending.
Multiply To darken an image or add shadows and shading. Adding realistic shadows under objects or deepening midtones in a photo.
Screen To lighten an image or simulate light. Creating a soft glow effect or simulating bright light over an object.
Overlay To boost contrast and make textures pop. Enhancing details in skin or fabrics in photo retouching.
Color Dodge To create intense lighting or shine. Adding sparkles, lens flares, or lighting highlights on metallic surfaces.
Color Burn To deepen shadows or create high-contrast gritty effects. Creating dramatic poster effects or adding depth to a stylized illustration.
Difference For abstract, surreal, or comparison visuals. Creating glitch art, testing pixel alignment, or designing inverted backgrounds.
Soft Light For subtle lighting effects and texture enhancement. Gently increasing contrast on portraits or applying a textured paper overlay.
Hard Light To emphasize highlights and shadows more aggressively than Soft Light. Adding strong rim lighting or punchy contrast to action scenes or comics.
Darken To keep only the darkest parts of overlapping layers. Merging grunge textures into a background while preserving shadowed details.
Lighten To reveal only the brightest parts of a texture or image. Overlaying bokeh or light leaks without affecting darker image areas.

Thursday, June 5, 2025

How to turn a bunch of jpegs into a pdf from cli


img2pdf $(ls -v *.jpeg) -o output.pdf

Monday, June 2, 2025

fontself

app store link to fontself for ios
seems like the best app for making your own custom fonts

Sunday, June 1, 2025

Inkscape background remove extension

Rembg is a python tool to remove backgrounds
problem is i used pipx to install it so inkscape cant find it
It works fine in the cli though and its great
link to linuxlinks page on rembg


rembg i 'path to input' 'path to output'

inkscape mail merge - next generator

youtube link showing how to use the extension the extension on gitlab

You can batch generate documents from csv like scribus or affinity publishers datamerge

Monday, May 26, 2025

Learned scribus last night

learned about DTP (desktop publishing software)

  • affinity publisher 22$ ios

It has a cool feature called datamerge where you can use spreadsheets to populate designs. Scribus can do mailmerge from csv. being able to patch process multiple things into a cohesive publication is a big deal. the data entry format looks like this.

%VAR_placeholder%

Here is the link for the python script that adds this functionality
scribus generator

you can print your own shipping labels and make stickers!!

Sunday, May 25, 2025

my dim byz

dropbox link

The link is to a pdf I made of spread voiced chords in every key. alternating between a major 6 and a diminished chord to harmonize up the major scale using the b6 as a passing note to create an even octatonic scale. each diminished chord can resolve to 4 different keys. page 4 is on half whole diminished scales on ukulele and then I included a few other scales for fun

Saturday, May 17, 2025

every dim7 substitution

mapped it all out as mermaid then touched it up in autodesk sketchup
bc it was super short and wide.
previewed it with mermaid js
screenshot with flameshot
added mermaid js and markdown support to my blog to try
to do it all with mermaid but im not going to keep it
I like using html now and its not worth loading the
highlight js cdn twice.
ai upscaled it in ibispaint because it was pixelly.

printerfriendly version dropbox link

relating c# dim to 4 keys visually

the lowest diminished chord on uke is c#dim7.

  • c#m f#7 bmaj7
  • em a7 dmaj7
  • gm c7 fmaj7
  • Bbm eb7 abmaj7

the c#,e,g,Bb diminished chord is a half step below the d,f,ab,b diminished chord where the 1 chords live.

im saying m6 and m3 meaning b3 here

Thursday, May 15, 2025

Best Native Teleprompter on apple

ios and on mac you can use the pages app. It has a scroll function. I don't trust the free apps the data harvesting creeps me out. many of the paid ones you can't even own they are like a 60$ yearly subscription. Even after you buy them you still need to by a two way mirrored glass camera attachment. If its not going to be good even after spending 60$ Id rather just memorize it. If your eyes arent looking at the camera directly theres no point. Might be useful for some makeshift karaoke

Harmonic Major Modes

Mode Name Scale Degrees
1. Harmonic Major 1 – 2 – 3 – 4 – 5 – ♭6 – 7
2. Dorian ♭5 1 – 2 – ♭3 – ♭4 – ♭5 – 6 – ♭7
3. Phrygian ♭4 1 – ♭2 – ♭3 – ♭4 – 5 – ♭6 – ♭7
4. Lydian diminished 1 – 2 – 3 – ♯4 – 5 – ♭6 – ♭7
5. Mixolydian ♭2 1 – ♭2 – 3 – 4 – 5 – ♭6 – ♭7
6. Lydian Augmented ♯2 1 – ♯2 – 3 – ♯4 – ♯5 – 6 – 7
7. Locrian ♭♭7 1 – ♭2 – ♭3 – 4 – ♭5 – ♭6 – ♭♭7

Wednesday, May 14, 2025

12 great scales

Scale Degrees (Relative to Major Scale)
Ukrainian Dorian 1 – 2 – b3 – ♯4 – 5 – 6 – b7 – 1
Byzantine 1 – b2 – 3 – 4 – 5 – b6 – 7 – 1
Hungarian Minor 1 – 2 – b3 – ♯4 – 5 – 6 – 7 – 1
Melodic Minor 1 – 2 – b3 – 4 – 5 – 6 – 7 – 1
Harmonic Minor 1 – 2 – b3 – 4 – 5 – b6 – 7 – 1
Aeolian 1 – 2 – b3 – 4 – 5 – b6 – b7 – 1
Dorian 1 – 2 – b3 – 4 – 5 – 6 – b7 – 1
Lydian Dominant 1 – 2 – 3 – ♯4 – 5 – 6 – b7 – 1
Lydian ♯2 1 – ♯2 – 3 – ♯4 – 5 – 6 – 7 – 1
Half-whole Diminished 1 – b2 – ♯2 – 3 – ♯4 – 5 – 6 – b7 – 1
Whole-Half Diminished 1 – 2 – b3 – 4 – b5 – ♭6 – 6 – 7 – 1
Altered Scale 1 – b2 – ♯2 – 3 – ♯4 – b6 – b7 – 1

Sunday, May 4, 2025

drop 2 spread voicings

Major 6

LH RH
1, 6 3, 5, 1
2, 7 4, b6, 2
3, 1 5, 6, 3
4, 2 b6, 7, 4
5, 3 6, 1, 5
b6, 4 7, 2, b6
6, 5 1, 3, 6
7, b6 2, 4, 7
degree LH RH note third details
1st major 6th minor third, 4th egc over ca bottom note in RH
3rd minor 6th maj 2nd, 5th g,a,e over ec. The g,a cluster is 4th inv of A min7 bottom in LH top in RH
5th 6th minor third, 5th a min7 fifthless (acg) over g6 shell top in LH
6th b7th maj third, 4th 6th chord cea (am7 2nd inv) over ag 7th shell 2nd note in RH

Notice how the third isn't voiced in the right hand on the 5th degree but it is on the 1st, 3rd and 6th. The third is in the left hand on the 3rd degree as the bottom note, then on the 5th degree the third is the top note in the left hand. It's absent from the left hand on the 6th degree while the RH takes it.

Its cool how the third shuffles back and forth between hands. On the 3rd degree the pinkies get joint custody on that day.

Minor 6

LH RH
1, 6 b3, 5, 1
2, 7 4, b6, 2
b3, 1 5, 6, b3
4, 2 b6, 7, 4
5, b3 6, 1, 5
b6, 4 7, 2, b6
6, 5 1, b3, 6
7, b6 2, 4, 7

The difference between the major and the minor is the b3. The Diminished patterns stays the same.

Saturday, April 26, 2025

E3 to E6 Maj Triads as Hz

Root Root Hz Third Third Hz Fifth Fifth Hz Octave Octave Hz
E3 164.81 G#3 207.65 B3 246.94 E4 329.63
F3 174.61 A3 220.00 C4 261.63 F4 349.23
F#3 185.00 A#3 233.08 C#4 277.18 F#4 369.99
G3 196.00 B3 246.94 D4 293.66 G4 392.00
G#3 207.65 C4 261.63 D#4 311.13 G#4 415.30
A3 220.00 C#4 277.18 E4 329.63 A4 440.00
A#3 233.08 D4 293.66 F4 349.23 A#4 466.16
B3 246.94 D#4 311.13 F#4 369.99 B4 493.88
C4 261.63 E4 329.63 G4 392.00 C5 523.25
C#4 277.18 F4 349.23 G#4 415.30 C#5 554.37
D4 293.66 F#4 369.99 A4 440.00 D5 587.33
D#4 311.13 G4 392.00 A#4 466.16 D#5 622.25
E4 329.63 G#4 415.30 B4 493.88 E5 659.26
F4 349.23 A4 440.00 C5 523.25 F5 698.46
F#4 369.99 A#4 466.16 C#5 554.37 F#5 739.99
G4 392.00 B4 493.88 D5 587.33 G5 783.99
G#4 415.30 C5 523.25 D#5 622.25 G#5 830.61
A4 440.00 C#5 554.37 E5 659.26 A5 880.00
A#4 466.16 D5 587.33 F5 698.46 A#5 932.33
B4 493.88 D#5 622.25 F#5 739.99 B5 987.77
C5 523.25 E5 659.26 G5 783.99 C6 1046.50
C#5 554.37 F5 698.46 G#5 830.61 C#6 1108.73
D5 587.33 F#5 739.99 A5 880.00 D6 1174.66
D#5 622.25 G5 783.99 A#5 932.33 D#6 1244.51
E5 659.26 G#5 830.61 B5 987.77 E6 1318.51

the grand staff and hz values

my mnemonic for visually finding notes that align with the logarithmic markers on tb spectrogram was approximately

  • glorious g1 50ish hz
  • green g2 100ish hz
  • grapes g3 200ish hz
  • beat b4 500ish hz
  • big b5 1k
  • bells b6 2k
  • ebony eb8 5k
  • ebeneezer eb9 10k

Maybe instead for the limited range I'll make it "green grass blue birds. for approx 100hz, 200hz, 500hz, 1khz"

the lines on sunvox's spectrogram seem to visually align with c notes and powers of 2.

heres my annotated graphic of the grand staff with some significant pitch landmarks to help make sense of the bigger picture as to where the notes all fit in. Notice how glorious ebony ebeneezer bells doesn't fit because it extends beyond the ledger lines. (no g1, b6, eb8, eb9)

Saturday, April 19, 2025

how to tune a piano to et using a single reference pitch

This could all be hogwash but I thought it was interesting.

the first few intervals are downa 4th till you get to c4 which is a tritone away. Down again a 4th to g, up a fifth then d down to f, d is the maj 6 of f or f is the minor third in d. After that f3 to f4 is octaves.

Step Note Direction Beat Rate (approx.)
1 A4
2 E4 Below 0.9 bps
3 B3 Below 6–7 bps
4 F#3 Below 3–4 bps
5 C4 Above 5–6 bps
6 G3 Below 2–3 bps
7 D4 Above 1–2 bps
8 F3 Below 4–5 bps
9 F4 Above 0 (octave)

This gives you a base for equal temperament from f3 to f4 which you can expand outwards tuning to octaves and checking against 12ths (octave and a fifth) to get the rest of the notes.

how off is et from ji

Most off:

  • Minor seventh (7:4): +31 cents
  • Major third (5:4): +13.7 cents
  • Minor third (6:5): −15.6 cents
  • Major sixth (5:3): +15.6 cents

Closest to just:

  • Perfect fifth/fourth: 1.96 cents off
  • Octave: perfectly in tune

Friday, April 18, 2025

Frankie Lymon "Little Bitty Pretty One" Vocal Exercise

dropbox link to the audio file

Original was in Bb
I pitched it down to start on G to give you a bit of room to warm up into the Bb.
I automated a formant shift so as it pitches up it doesn't sound as chipmunked.
This Exercise moves through all 12 keys using the mm sound

The MM Sound

  1. Gently Engages the Vocal Folds
    The "mm" sound, especially when done lightly (like humming), encourages your vocal folds to come together without too much pressure. It helps you get your voice going without strain.
  2. Resonance and Placement
    It brings the vibration forward, often felt in your lips, nose, or face (aka "mask"). This helps with resonance, which makes your voice sound fuller and carry better.
  3. Breath Connection
    Doing "mm" helps you manage airflow and breath support. You’re not pushing too hard, so it keeps everything in check — breath, tone, and tension.
  4. Lip and Facial Relaxation
    It warms up facial muscles and gets your articulators (lips, cheeks, etc.) moving in a relaxed, focused way — which is great before diving into more intense singing or speaking.
  5. Easy Onsets
    You can explore clean onsets (how your voice starts) without attacking the note harshly. It's like easing into singing instead of jumping in cold.

Wednesday, April 16, 2025

C Diatonic 7th Chord Freqs - c2 To C4

Chord Note Octave 2 (Hz) Octave 3 (Hz) Octave 4 (Hz)
Cmaj7 C 65.41 130.81 261.63
E 82.41 164.81 329.63
G 98.00 196.00 392.00
B 123.47 246.94 493.88
Dm7 D 73.42 146.83 293.66
F 87.31 174.61 349.23
A 110.00 220.00 440.00
C 130.81 261.63 523.25
Em7 E 82.41 164.81 329.63
G 98.00 196.00 392.00
B 123.47 246.94 493.88
D 146.83 293.66 587.33
Fmaj7 F 87.31 174.61 349.23
A 110.00 220.00 440.00
C 130.81 261.63 523.25
E 164.81 329.63 659.26
G7 G 98.00 196.00 392.00
B 123.47 246.94 493.88
D 146.83 293.66 587.33
F 174.61 349.23 698.46
Am7 A 110.00 220.00 440.00
C 130.81 261.63 523.25
E 164.81 329.63 659.26
G 196.00 392.00 783.99
Bm7♭5 B 123.47 246.94 493.88
D 146.83 293.66 587.33
F 174.61 349.23 698.46
A 220.00 440.00 880.00

Wednesday, April 9, 2025

Fun Fact : 251hz Is Very Close To Middle C

c4 = 261.63hz
b3 = 246.94hz

its b3 27.94% sharp
251 hz is b3 + 28 cents


Determining if 251 Hz is a Sharp B3

The Problem

Determine whether 251 Hz represents a sharp B3 note by calculating its position between the standard frequencies of B3 (246.94 Hz) and C4 (261.63 Hz).

Step-by-Step Calculation

1. Identify the Reference Frequencies

  • B3 = 246.94 Hz
  • C4 = 261.63 Hz

2. Calculate the Distance Between Notes

The full semitone distance between B3 and C4:

Semitone Range = 261.63 Hz - 246.94 Hz = 14.69 Hz

3. Calculate the Distance From B3 to Our Target

Target Distance = 251 Hz - 246.94 Hz = 4.06 Hz

4. Calculate the Percentage Position

Position Percentage = (Target Distance ÷ Semitone Range) × 100%
Position Percentage = (4.06 Hz ÷ 14.69 Hz) × 100% = 27.64%

5. Convert to Cents

In musical terms, one semitone equals 100 cents. To convert our percentage to cents:

Cents from B3 = Position Percentage × 100 cents
Cents from B3 = 27.64% × 100 cents = 27.64 cents

Conclusion

251 Hz is a B3 note that is approximately 27.64 cents sharp. Since this is less than 50 cents (which would be halfway to C4), we can properly describe it as a "slightly sharp B3" rather than a flat C4.

Formula Summary

To find where a frequency falls between two reference notes:

  1. Calculate the semitone range: HigherFrequency - LowerFrequency
  2. Calculate the target distance: TargetFrequency - LowerFrequency
  3. Calculate the position percentage: (TargetDistance ÷ SemitoneRange) × 100%
  4. Convert to cents: PositionPercentage × 100 cents

Tuning an Instrument to Room Resonance

Goal:
Make your instrument lock in with the natural resonance frequencies of the room, so it sounds fuller, louder, and more "alive."


1. Understand Room Resonance

Every room has natural frequencies it favors — like how a wine glass vibrates at a particular pitch.
These resonant frequencies depend on:

  • Room dimensions (length, width, height)
  • Surfaces (walls, floor, ceiling material)

At certain frequencies, the sound waves bounce perfectly and amplify themselves.
Those pitches are where your instrument will sound best or loudest without extra effort.


2. Find the Room Resonant Frequencies

You have a few ways:

Quick and Ears-Only Method

  • Stand in the middle of the room.
  • Hum a steady low pitch.
  • Slowly glide your voice up (like a slow siren).
  • You'll notice some notes "bloom" — they get louder or feel like the room "catches" them.

When you hit one, hold it. Walk around.
If it stays loud in multiple spots, that's a room resonance.

Write these down (even roughly):
Example: "Somewhere around a low A" or "near middle C."

Technical Method (Optional)

Use a tone generator app (many free ones exist) and sweep from 20 Hz to 500 Hz slowly.

When the tone gets super loud without raising the volume, that's a resonance peak.


3. Tune Your Instrument

Once you know the resonant frequencies:

  • Match a string or note on your instrument to a nearby room resonance.
  • You don’t have to match exactly — being close can still boost the sound.
  • Tiny detunings (a few cents sharp or flat) can help maximize resonance.

Example:
If your room has a big resonance around 110 Hz (A2),
you might slightly adjust your guitar’s tuning so the open A string aligns even better.


4. Play and Adjust

  • Strum or bow or pluck your instrument near the center of the room.
  • Listen for notes that seem to "hang" or get louder with less effort.
  • Slightly tweak tuning until certain notes or chords ring out.

5. Other Tips

  • Height matters: Some notes resonate better higher up (standing) or lower down (sitting).
  • Corners boost bass: Low frequencies are stronger in corners. Try playing there.
  • Move around: Find "sweet spots" where both you and the room are happy.
  • Use harmonics: On strings, lightly touch at 12th fret, 7th, 5th — natural harmonics often catch resonances strongly.

Why Do This?

  • Bigger, richer sound.
  • Easier to project without forcing.
  • Can make a cheap instrument sound surprisingly powerful.

Bonus: Use It Musically

  • Tuning your drone notes (if you’re using one) to a room resonance makes the whole room feel like it’s vibrating with your music.
  • Great for solo performance, ambient setups, and recording.