i n n e r  j o i n

mar-2026

a respite from the snowy onslaught of february. rainy signs of spring. its march.

the first day of march was a joy. after a dinner with my parents kayla and i headed to a purim concert of some of our favorite klezmer bands, west philly orchestra and mariposas galacticas. while we werent in costume it was great to dance with so many folks, celebrating, being joyous.

my hebrew name mordecai, מָרְדֳּכַי, comes from this holiday where mordecai warned esther, אֶסְתֵּר‎, of hamans plot to annihilate the jewish people.

i tend to try to lean on that background as much as i can remember. of my "namesake". there is a lot of injustice and cruelty in this world to people. that reality has continued as horrors continue in palestine. in iran. in lebanon. in so many places at the hands of the united states both domestically and globally.

it can feel like a shout into the ether to denounce the atrocities from afar. i try to do my best to do good to the people in my immediate. and part of resistance is showing joy. dancing. in the face of authoritarianism.

*-------------------------------------------------------------------------------------------------*

the early weeks of march saw the return of the neighborhood soccer group. while it was a smaller turn-out of around 6 people weve consistently seen double that the following weeks :^)

last year after taking part in a local league with my roommates we decided it would be nice to have a group that meets and is...well...a little more casual. we really liked running around and playing but some folks just took the winning and losing too seriously. so we started an ad-hoc group thats grown of the past year. theres no fee. no skill requirement or expectation. we dont even keep score. we just want to play.

it was really nice to be back running. i sprained my toe pretty bad in autumn last year and spent the winter resting it (after mistakenly not resting it enough in the autumn) and being in the depths of winter i was feeling a little stir-crazy - itching to get back to playing.

the field had been wet and muddy but i dont think anything couldve stopped me. i needed to move badly.

*-------------------------------------------------------------------------------------------------*

in the previous update i alluded to some workshop of sorts to share my love for field recording. in march i hosted the first of the three!

while i had planned to guide folks through the library exploring a space that is meant to be without sound, i foolishly forgot the public library is closed on sundays.

oof

nevertheless a healthy showing of curious faces arrived! i showed them the different gear - mics and the like, and we set off in groups around the area.

after a couple hours of wondering we reconvened at a cafe. it was truly one of the most heartwarming moments of my adult life to hear folks excited to just be listening to the sounds around them in this new way. its something i certainly have been loving since being introduced to it by good friend yaka.

there are two more trips planned before this all culminates in a performance so if youre in the area and interested feel free to reach out :^)

PXL_20260307_171932500

*-------------------------------------------------------------------------------------------------*

march excitedly continued forward with a stay in rural pennsylvania house (animal) sitting for a family-friend. this meant watching over: 1 dog, 9 chickens, and 6 (mostly outdoor) cats.

to go from being truly immersed in the sounds of a busy part of philadelphia to thrusting myself into the countryside was a bit of a whirlwind. exhilarating and unnerving almost.

but the time was really nice. windows open. the sounds of frogs waking from slumber with the pitter-patter of rain on a tin roof. and while there was a storm and the power went out there was deep appreciation for the change of pace and scenery.

the most stressful thing was probably keeping up with the amount of eggs the chickens were laying.

*-------------------------------------------------------------------------------------------------*

in my previous update i mentioned working on a simple script to run my field recordings. its come a long way from the idea phase and now runs a script where im able to load, over a local network, audio files and play, edit, stop, filter various samples on the spot.

its really fun to be working on something technical like this in my personal and creative life instead of just work. ive been thinking of more use-cases, more creative coding projects i want to do (similar to the little python script on the homepage that acts like a tiny mycelial network).

i enjoy the look of code. i think its fun to look at. for anyone curious here is some of the code for this script :^)

-- ─────────────────────────────────────────────────────────
-- Polls
-- ─────────────────────────────────────────────────────────
local polls_dur    = {}
local polls_loaded = {}

for i = 1, NUM_VOICES do
  local slot = i
  polls_dur[slot] = poll.set("dur_" .. slot, function(val)
    if val and val > 0 then
      voices[slot].duration = val
      if voices[slot].file_path then
        for _, f in ipairs(fm.files) do
          if f.path == voices[slot].file_path then
            f.duration = val; break
          end
        end
      end
      state.dirty = true
    end
  end)

  polls_loaded[slot] = poll.set("loaded_" .. slot, function(val)
    local loaded = (val == 1)
    if loaded ~= voices[slot].loaded then
      voices[slot].loaded = loaded
      state.dirty = true
    end
  end)
end

-- ─────────────────────────────────────────────────────────
-- Helpers
-- ─────────────────────────────────────────────────────────
local function next_empty_slot()
  for i = 1, NUM_VOICES do
    if voices[i].file_path == nil then return i end
  end
  return nil
end

local function last_filled_slot()
  for i = NUM_VOICES, 1, -1 do
    if voices[i].file_path ~= nil then return i end
  end
  return nil
end

local function assign_to_slot(slot, file)
  local v      = voices[slot]
  v.file_path  = file.path
  v.name       = file.name
  v.loaded     = false
  v.duration   = 0
  v.is_playing = false
  v.in_point   = 0.0
  v.out_point  = 1.0
  v.lpf        = 20000
  v.hpf        = 20
  v.amp        = 0.8
  v.rev_mix    = 0.0
  v.rev_room   = 0.5
  v.pitch      = 0.0
  v.fade_in    = 2.0
  v.fade_out   = 2.0
  v.pan        = 0.0
  v.loop       = true

  engine.load_voice(slot, file.path)
  polls_dur[slot]:start(0.5)
  polls_loaded[slot]:start(0.5)

  -- Mark loaded after 2s — SC buffer read is fast for typical WAVs
  v.loaded = false
  local load_slot = slot
  clock.run(function()
    clock.sleep(2)
    voices[load_slot].loaded = true
    print("fieldwork: slot " .. load_slot .. " ready")
    state.dirty = true
  end)

  state.dirty = true
  print("fieldwork: slot " .. slot .. " <- " .. file.name)
end

local function clear_slot(slot)
  engine.stop_voice(slot)
  voices[slot] = new_voice()
  if polls_dur[slot]    then polls_dur[slot]:stop()    end
  if polls_loaded[slot] then polls_loaded[slot]:stop() end
  state.dirty = true
end

local function launch_voice(slot)
  local v = voices[slot]
  if not v.file_path then
    print("fieldwork: slot " .. slot .. " empty")
    return
  end
  -- Mark loaded optimistically so UI shows ready state
  v.loaded = true
  engine.play_voice(
    slot,
    v.in_point, v.out_point,
    1.0,
    v.amp,
    v.lpf, v.hpf,
    v.rev_mix, v.rev_room,
    v.pitch,
    v.fade_in, v.fade_out,
    v.pan,
    v.loop and 1.0 or 0.0
  )
  v.is_playing = true
  state.dirty  = true
  print("fieldwork: launched slot " .. slot .. (v.loop and " [loop]" or ""))
end

local function stop_voice(slot)
  engine.stop_voice(slot)
  voices[slot].is_playing = false
  state.dirty = true
end

local function stop_all()
  engine.stop_all()
  for i = 1, NUM_VOICES do voices[i].is_playing = false end
  state.dirty = true
end

*-------------------------------------------------------------------------------------------------*

for march:

a friend of mine in the dnd group showed me a bass he made that looks like it would be played by a big toad in a bayou.

anyway. the weather is warming up. soccer is back. soon enough well be talking about the garden. tomatoes. heat.

im hoping to escape somewhere soon. allergies hit me hard. let me know if you have any ideas where spring allergies arent so bad.

heres to april though. see you then.

PXL_20260319_175911480

View original