In Libre Office I write a placeholder Song - Artist line at the top (because formatting after is annoying otherwise)
then I add a 2 col table and set the border to invisible
finally, I save it as a template so i can use
shift ctrl n to make a new invisible 2 col table document that I paste the lyrics into
If I really want to squeeze in 2 songs maybe Il do 3 col but 2 is my go to to save paper.
print double sided if your printer has that functionality or print it and then flip it over and print on the other side.
Its really important for me to not have a song span more than 1 sheet of paper because otherwise they get lost
my goto site before was ultimate guitar but I refuse to sign in and they no longer seem to let you print without being a member
I used to go into the print setting on ug because they had an option to shrink the font and remove the chord diagrams and default to 2 col
I don't know of any other sites that have the 2 col option so thats why its good to know if you want to save paper and do it yourself.
most other sites that include chords have weird formatting that gets messed up if shrunken down or it just doesnt shrink well at all.
In that case I just go for the lyrics and figure it out by ear or write them in afterwards from some other site
A pet peeve of mine is when they capo it and it doesn't match the recording or they over complicate it with a bunch of sus2 chords.
Lead sheets are supreme I wish there was more available
musescore has a bunch of sheets that are overcomplicated needlessly
(I need to just get better at sight reading and it wouldn't be much of a problem
A lot of times the music is more complicated than it needs to be.
Monday, April 7, 2025
How To Save Paper While Learning Songs
Thursday, April 3, 2025
edison multi purpose envelope
cross fading with the mpe
this is a deep cut secret fl trick. probably could be used for comping takes too
fm8 waveforms for sytrus
those formant waves are sick you I think you can make them by rm'ing a saw wave in unipolar mode? anyway its wicked because normally you can't fm something that has rm applied in sytrus so it opens up some cool sound design possibilities
Wednesday, April 2, 2025
the 1 reason to use slicer over slicex
fruity slicer has chop on beat, or half beat while slicex just has autochop on 3 transient threshold levels. usually gives you too many or not enough usefull chops.
the whole point of using breaks is to keep those grooves which us why I don’t use transient chops which dump way too much junk midi to wade through in my piano roll.
Usually what I end up doing (if i go that route) is pick out a few choice 1 shots from the garbled mess that autochop spews and instead of quantizing it (which 90% shifts it to the wrong spot and ruins my shuffles) I draw it in.
before doing this its good to label the chops that are significant so you can find them easily in the piano roll.
breaks like the soul pride the timing is all over the place so how I work with it is i place the break at 0 in the timeline and drag the tempo till I see the snare align with the second grid line. Listening with the click on it should be fairly locked in for the rest of the bar up to the next snare and il use that next snare as my next anchor point to judge if i need to speed it up or slow it down for it to lock in. Usually thats enough to get a good loop but soul pride is really all over the place. id go in and just get a few choice shuffles and dip out once I resample them.
In edison you can go into sample settings to establish the tempo metadata in your sample before you save it and in render settings you use "save as acidized loop" to include the tempo in the .wav. Its also good practise to include it in the name of your file when you render it out.
The jungle warfare sample cds are sick but also kind of suck (like many sample cds). the problem is the sequenced loops try too hard to be original. they moved all the hits around to be uniquely choppy in a way that sounds bad for music. they sound good as loops stand alone but not as a supporting element in music. usually too busy and no backbeat. They are off kilter to sound jungley but they don’t hold up to be looped through an entire track because they are too busy. Its a whole lot of work to do un do it which is why its better to just use the original breaks imo. (it is inspiring to hear them though).
one of the best ways to chop that is surprisingly difficult to do in fl version 10 is to split a sample into even slices and throw it across your pads mpc style.
fruity slicer can do it if your tempo data is correct (you need to massage the sample into the grid and resample with edison on play mode sometimes to get the loops right first).
Slicex came in as the predecessor and I thought was better in every way until i revisited for that one purpose. the later versions of fl have edison/slicex scripts in the forum that finally let you chop to an even number of slices but my weird linux wine setup only lets me run version 10 (i got the last 32 but version v20 running once and 24 but it stopped launching for some reason and I gave up because 10 ran better for most things like 32 plugins wouldn't run in v24)
I like to keep my sessions short and focused. Im just going to fix my breaks and turn off the computer and go outside. my goal was to fix the soul pride break
- figure out the tempo for the main backbeat
- the shuffles
- try different time stretch algo
- half / double tempo sequence
resample all those in edison and export 1 wav with the tempo info
sytrus fx output demystified
Like many of the knobs in sytrus, the reverb volume slider is bipolar so the middle point is actually zero. I saw in the manual that you can route the fx to their own channel in the mixer but it wasn't working for me thats why. Each time I thought I switched it off I actually just inverted the phase.
Sunday, March 30, 2025
you don't need a fancy sampler
in fl studio i would use fruity soundfont player for multi sampled insturnents and drum kits. Sometimes i create layers, set and split children to play them from 1 midi lane (newer fl finally got around to letting you include samplers in patcher so you can use vfx splitter or set up key zone splits).
- in settings set omnipreview to 1
this lets you play everything in tbe channel rack at once!
Saturday, March 29, 2025
mid side
mid is the sum divided by 2
side is the difference divided by 2
mid = (left + right) / 2
side = (left - right) / 2
today I learned you can create envelopes by dragging audio files from the browser or from edison.
intermodulation distortion
clicking on automation clips (not in the old fl) you can import audio and use the peaks to create automation clips
my old way was using the fruity peak controller
you can also drag audio into fruity love filter and the envelope controller.
I've been into using ctrl t (typing keys), ctrl e (step edit mode) to enter in triads.
then using what I learned about the harmonic series to create spread voicings
was watching a flux pavillion against the clock where he was using just a saw wave in massive but it was the way he arranged it
that made it sound huge.
being infront of a piano its easy to reach for those spread voicings but clicking it is quite a hassle untill I learned this way.
ctrl up down, to octave shift
shift up down, for semitones
right click edit events
alt o creates an lfo do this for each time selection
you can set the rate synced to the tempo and have it interpolate between 2 ranges
like 16th note slowing down to eighth and ramping down the intensity
then you can export the events data to an automation clip
Friday, March 28, 2025
g melodic minor might make more sense than c major (harmonic series)
Does G melodic minor relate more to the harmonic series of C than most scales?
The harmonic series of C refers to the overtones generated when you play a fundamental C. These overtones are naturally occurring and help define what we perceive as consonance. The harmonic series of C includes notes like:
C (1st harmonic, fundamental) C (2nd harmonic, octave) G (3rd harmonic, perfect fifth) C (4th harmonic) E (5th harmonic, major third) G (6th harmonic) Bb (7th harmonic, but it’s flatter than equal temperament) C (8th harmonic) D (9th harmonic) E (10th harmonic) F# (11th harmonic, sharper than in equal temperament) G (12th harmonic) A (13th harmonic) Bb (14th harmonic, again a bit flat) B (15th harmonic) C (16th harmonic)
Now, the G melodic minor scale is:
G - A - Bb - C - D - E - F#
Compare this to the harmonic series of C:
It shares G, C, E, A, Bb, F#, and even D appears early in the series.
The G melodic minor scale includes several of the prominent early overtones from the harmonic series of C, particularly:
G (3rd, 6th, 12th harmonics) E (5th, 10th) Bb (7th and 14th, though slightly off) C (1st, 2nd, 4th, 8th, 16th) D (9th) F# (11th harmonic-ish — although not exact in equal temperament)
Conclusion
Yes, G melodic minor does align more closely with the harmonic series of C than many other scales — especially because it includes many partials (or close approximations of them), including the somewhat oddballs like F# (11th) and Bb (7th/14th), which are rare in most diatonic scales.
So in a way, G melodic minor “echoes” the color of the C harmonic series more than, say, a C major scale does. It's an excellent observation if you're exploring spectral relationships or tuning theory.
Monday, March 24, 2025
Tutorial: Tempo Math in Reaper
Let's say you have a song that is originally 124 BPM (beats per minute), and you drag it into Reaper, which has the default project tempo set to 120 BPM. You then change the project rate to 200 BPM. Now, the question is: What is the new tempo of the song in this new project rate?
Step 1: Calculate the percentage change between the original project tempo (120 BPM) and the new project tempo (200 BPM).
When you change the project tempo, you're effectively stretching or compressing the song to match the new tempo. To understand how much this changes the song’s tempo, you first need to find the percentage change between the project tempos.
The formula for calculating the percentage change is:
Percentage change = ((New Tempo - Original Tempo) / Original Tempo) * 100
Using the values provided:
Percentage change = ((200 - 120) / 120) * 100
= (80 / 120) * 100
= 66.67%
So, the project tempo has increased by 66.67% when the rate changes from 120 BPM to 200 BPM.
Step 2: Apply the percentage change to the original song tempo.
Now that we know the project rate increased by 66.67%, we can use this same percentage to adjust the original song tempo. The formula to apply the percentage increase to the original tempo is:
New Song Tempo = Original Song Tempo * (1 + (Percentage Change / 100))
Substituting the values:
New Song Tempo = 124 * (1 + (66.67 / 100))
= 124 * 1.6667
= 206.67 BPM
So, after adjusting the project rate to 200 BPM, the new tempo of the song is approximately 206.67 BPM.
Conclusion
By understanding how the project rate affects the tempo, you can calculate how much the song’s speed will change when you adjust the project tempo in Reaper. In this case, with a project rate change from 120 BPM to 200 BPM, the original song tempo of 124 BPM increases to approximately 206.67 BPM.
Friday, March 14, 2025
getting a-shell mini setup again
pkg install nnn (file browser)
mkdir -p ~/Documents/.vim/pack/bweew/start
lg2 clone nerdtree, vimwiki gruvbox, vim-orgmode
- use the pickFolder command to set bookmarks outside of the sandbox
- z command jumps to those bookmarks
let g:vimwiki_list = [{'path' : '~/Documents/vimwiki/'}]
add that to your .vimrc so vimwiki can work properly
fix linux mint keybindings clashing with everything
window manager tweaks, key used to grab windows ALT set it to none
in settings under keyboard:
alt super s = orca (most annoying thing ever its the first thing im going to remove I don't need to. it doesn't clash with anything I can think of but i remember it being really annoying and wasted a bunch of my time trying to figure out how to turn it off last time
xfce-app finder = alt f3
xfce-app fiinder collapsed = alt f2
xfce-popup-applicationsmenu = alt f1
xfce4-popup-whiskermenu = super L
xfdesktop--menu = ctrl esc
under window manager:
window operations menu = alt space
cycle windows alt tab / shift alt tab
close window = alt f4
toggle above = alt f12
toggle fulscreen = alt f11
workspaces = ctrl alt up/down/left/right
switch workspaces ctrl + f# ctrl f3 = space 3 etc..
Thursday, March 13, 2025
bunch of old vsts as dlls
was looking for a plugin called mda detune that was simple and sounded great found it on archive.org no installers needed from archive
Wednesday, March 12, 2025
saturating highs before lows
cool mixing trick from sage audio.
- use a shelf eq to tilt down the low end before running it through distortion then reverse it after.
- this preserves the bass from getting blown out
It's similar to how compressors that have a high-pass filter built into the detection circuit before the threshold to prevent pumping.
tal use (ultra simple eq) is one option its a free tilt eq
Tuesday, March 11, 2025
Friday, March 7, 2025
clean amps
softamp gt
these delays by arc dev noise industries are nice
dropbox linkthe guy who made that plugin makes folk dub shoegaze as terminal sound system
a beautiful machineantisound.net
terminal soundsystems website
My top picks lately
cyclotron, et-301, dubb box, quilcom bfp, madshifta by tobybear, synthscience freezechamber, the oli larkin ones like gatecomb, the demo of endless series
Thursday, March 6, 2025
wohlstand opl3 bank editor
opl3 bank editor
vinyl goddess
I want the bass patch from lvl 1 crush. cant do anything with vgm files.(plogue portasound could but hasn't been ported to linux yet) disco dsp opl loads sbi files. i think i could use opl3 bank editor to convert .snd files to work and even use it in adlib tracker.
flangers, binaural, ringmod, saturation, compressors
et-200 bbd delay
wah bundle
decimator - toby bear
formant filter - oli larkin
se64
auto talent
stepcomb
gatecomb
falseFI
faranear
rp-pan - panner doppler
spatializer - hrtf binaural by blue lab audio
stereo width - blue lab audio
stc-3 raz audio(looks like blue lab one above)
multiband stereo faker - klanglabs
anaglyph 3d binaural spatializer
sjoe dualband stereo enhancer - terrywest
binaural sim - gregjazz
ms - terry west
rs rotothree leslie rotary
brandulator modulated comb filters
dd flanger
syncersoft flanger(bass landscapes)
IO ring mod - b serrano
madring ring mod - novaflash
nasty DLA - vos
timewarp vibrato
adam monroe tremolo
flanger box - synthscience
bfp barberpole flanger - quilcom
gt ringmod - glitchtek
cab enhancer - acme bargig
ts-1 - samsara cycle audio vinylizer
devicer
echomachine - plektron
vocalizer formant filter - aquest
vowel filter - tobybear
trileveler 2 sonic anomaly
sn01-G vca bus compressor - senderspike
sl63x - smacklabs
reacomp
modern deathcore distressor clone - antress
devils compressor
dynamic freq lim - sir sicksik (mb transient shaping/ dyn eq)
Tuesday, March 4, 2025
some plugins
nick crow labs tube driver
ferox
grease tube
omnisone
jb broadcast
robin schmidt cross over 3 band splitter
func shaper
pitch shifter
gtune
mad shifta
and some more from today
ferric tdsGsat+ TBproaudio
softamp 30d AXP
SN03 senderspike
Mystique
tape cassete caelum audio
SGA1566
TesslaPRO
Thrill seekerLA
Tomato Pre
Noisebud Binvert
Bass Landscapes
Frequency multiply 7amp
bertom eq curve analyzer
Diagnostic studio beat assist
Bertom Denoiser
Correlometer voxengo
Isol8 TBproaudio
reaXcomp
stardust - arguru
unlimited - sonic anomaly
youlean loudness meter
dpmeter 5 TBProaudio
ms controller - raz audio
span voxengo
vola - sonic anomaly
doppler dome - agean music autopan modulator - synthscience
Sunday, March 2, 2025
Wednesday, February 26, 2025
sending midi cc 64 on press and cc 65 when held for 1 second - piano sustain pedal midi scripting
For use in Reapers super 8 looper. Experimented with using on release instead of on press (like in loopy pro) but the travel distance of this piano sustain pedal is too large to be accurate so I had to remove my double and triple tap functions, still awesome being able to double your midi inputs for 0$ was hoping to get all the functions mapped though.. looking at the m vave chocolate foot switch though looks pretty cool for 50$
import time
import rtmidi
from rtmidi.midiconstants import CONTROL_CHANGE
# Configuration - Customized for single pedal operation
SUSTAIN_CC = 64 # Default sustain pedal CC - Used for both functions
RECORD_TOGGLE_CC = 64 # Record/Play/Overdub (same as sustain)
CLEAR_LOOP_CC = 65 # Clear loop CC to be triggered by holding sustain
MIDI_CHANNEL = 0 # MIDI channel (0-15)
HOLD_THRESHOLD = 1.0 # Time in seconds required to hold sustain to clear loop
class LooperPedalController:
def __init__(self):
# Set up MIDI input/output
self.midi_in = rtmidi.MidiIn()
self.midi_out = rtmidi.MidiOut()
# State variables
self.is_recording = False
self.is_playing = False
self.pedal_down = False
self.press_start_time = 0
self.action_triggered = False
self.setup_midi()
def setup_midi(self):
# List available ports
in_ports = self.midi_in.get_ports()
out_ports = self.midi_out.get_ports()
print("Available MIDI input ports:")
for i, port in enumerate(in_ports):
print(f" {i}: {port}")
print("Available MIDI output ports:")
for i, port in enumerate(out_ports):
print(f" {i}: {port}")
# Let user select ports
in_port = int(input("Select MIDI input port number: "))
out_port = int(input("Select MIDI output port number: "))
# Open ports
self.midi_in.open_port(in_port)
self.midi_out.open_port(out_port)
# Set callback
self.midi_in.set_callback(self.midi_callback)
def midi_callback(self, event, data=None):
message, delta_time = event
# Process Control Change messages for the sustain pedal
if len(message) == 3 and message[0] == CONTROL_CHANGE | MIDI_CHANNEL and message[1] == SUSTAIN_CC:
value = message[2]
current_time = time.time()
if value >= 64: # Pedal down
self.handle_pedal_down(current_time)
else: # Pedal up
self.handle_pedal_up(current_time)
def handle_pedal_down(self, current_time):
# Record when the pedal was pressed
self.press_start_time = current_time
self.pedal_down = True
self.action_triggered = False
def handle_pedal_up(self, current_time):
duration = current_time - self.press_start_time
self.pedal_down = False
# If action was already triggered (by hold), do nothing more
if self.action_triggered:
return
# If pedal was pressed briefly (not held), trigger record/play/overdub
if duration < HOLD_THRESHOLD:
self.handle_record_toggle()
def handle_record_toggle(self):
# Toggle between record, play, and overdub
print("Quick press - Record/Play/Overdub toggle")
self.send_cc(RECORD_TOGGLE_CC, 127)
time.sleep(0.05)
self.send_cc(RECORD_TOGGLE_CC, 0)
# Update internal state (for display purposes)
if not self.is_recording and not self.is_playing:
self.is_recording = True
print("State: Recording")
elif self.is_recording:
self.is_recording = False
self.is_playing = True
print("State: Playing")
else:
self.is_recording = True
print("State: Overdubbing")
def handle_clear_loop(self):
print("Hold detected - Clearing loop (sending CC 65)")
self.send_cc(CLEAR_LOOP_CC, 127)
time.sleep(0.05)
self.send_cc(CLEAR_LOOP_CC, 0)
# Update internal state
self.is_recording = False
self.is_playing = False
print("State: Cleared")
self.action_triggered = True
def send_cc(self, cc_number, value):
message = [CONTROL_CHANGE | MIDI_CHANNEL, cc_number, value]
self.midi_out.send_message(message)
def run(self):
print("\n=== Single Pedal Looper Controller ===")
print(f"- Quick press CC {SUSTAIN_CC}: Record/Play/Overdub")
print(f"- Hold CC {SUSTAIN_CC} for {HOLD_THRESHOLD}+ sec: Clear loop (sends CC {CLEAR_LOOP_CC})")
print("=====================================\n")
print("Current state: Stopped")
try:
# Keep the script running
while True:
time.sleep(0.05) # Check frequently for responsive hold detection
# Check for hold while pedal is down
if self.pedal_down and not self.action_triggered:
current_time = time.time()
if current_time - self.press_start_time >= HOLD_THRESHOLD:
self.handle_clear_loop()
except KeyboardInterrupt:
print("Exiting...")
if __name__ == "__main__":
controller = LooperPedalController()
controller.run()

