13 comments

  • vunderba 1 hour ago
    Nice job. Feels like there's a bit of misunderstanding of what this project is. It has nothing to do with audio - it's purely a means of mapping MIDI to shell commands.

    There was (still is) a very popular program called BOME Midi Translator that did something similar - think of it like AutoHotKey but specifically for midi.

    Back when I made heavy use of Kontakt libraries I got frustrated at the lack of an easy way to audition the patches (of which there could be hundreds on a single sampler). To get around it, I created a Bome script so when I pressed an unused button on my midi controller it would trigger a mouse click to advance to the next patch in my DAW and then send a note-on / note-off for C4 for half a second.

    Made previewing the sounds much easier.

  • Arkanosis 1 hour ago
    That's nice!

    That may not seem like an obvious use-case when only thinking about a piano, but since it's mapping MIDI keys to commands, I guess it should be able — or at least no very far from being able — to map ergonomic MIDI controllers to actions that are not as ergonomic with the usual keyboard / mouse / trackball / touchpad most people use.

    I wrote what I believe is a similar tool but with completely different goals initially: https://github.com/Arkanosis/smhkd ; I use it with a cheap MIDI controller (namely the KORG nanoKONTROL2) and was considering using another one with motorized faders (namely the Icon Platform M).

    MIDI controllers are great for all kinds of non-musical things like: - setting the volume / balance / solo / mute for speakers / multiple headsets and mixing multiple applications (eg. using pactl); - setting the zoom level / brightness for camera / webcam (eg. using v4l2-ctl) ; - setting the source / brightness for monitors (eg. using ddcutil)…

    • vustagc 35 minutes ago
      I see I'm not the first to have this idea haha. I suppose you could use additional midi controllers as extra "function" keys, for things like volume control, brightness, etc.. Could be useful especially if using smaller keyboards without a numpad or a function row.
  • pimlottc 38 minutes ago
    Some other existing utilities for triggering commands with MIDI signals:

    - https://gitlab.com/enetheru/midi2input

    - https://midimonster.net/

  • ctoth 2 hours ago
    How about chords? Melodies which are paths? Passwords? Lots of great potential here!
  • shrubble 51 minutes ago
    I thought you might have “composable” pipelines!
  • sigseg1v 2 hours ago
    This is one of those projects that would be 10x better with a video demonstration!
  • gchamonlive 1 hour ago
    This reminds me of the Symphonic which is featured in the show Halt and Catch Fire
  • smokel 3 hours ago
    Ooh, let's spend next weekend doing this with my acoustic piano!
  • zozbot234 27 minutes ago
    There is an existing system for chorded text input via a piano-like system, known as the Michela stenotype. Plover supports it. The basic input is two ranges, each for one hand: the left-hand range goes D#-C, the right-hand is E-C#. The basic assignment is as follows:

      D# F \ pinky  \
      E  S /         |
      F  C \ ring    |
      F# Z /         |
      G  P \ middle  |
      G# N /        /
      A  R \ index  \
      A# X /         |
      B  I \ thumb   |
      C  U /        /
      
      E  u \ thumb  \
      F  i /         |
      F# e \ index   |
      G  a /        /
      G# n \ middle \
      A  p /         |
      A# z \ ring    |
      B  c /         |
      C  s \ pinky   |
      C# f /        /
    
    Basic usage picks one letter at most from each of the four groupings: the l.h. accounts for syllable onset (split into an initial and an intermediate component), the r.h. for syllable rime (split into a nucleus-like and coda-like component). Some very brief special cases to further illustrate the system (not accounting for special usages or abbreviations, which are even more complex):

      FC/cf   - h as in hat, or -st as in best
      SC/cs   - v as in vie, leave
      FZ/zf   - th, voiced or unvoiced
      SZ/zs   - used for hard ts or dz originally, but often repurposed in modern use
      FP/pf   - t as in tie
      SP/ps   - ch as in China
      CP/pc   - k sound, as in because
      ZP/pz   - j sound, as in just
      FN/nf   - -nd- as in and
      SN/ns   - -ng- as in sing
      CN/nc   - w as in wine
      ZN/nz   - y as in yes
      FCP/pcf - b as in because (compare h, t, k)
      SCP/pcs - d as in day (compare v, ch, k)
      FZP/pzf - -shun ending, or hard g (compare t, th, j)
      SZP/pzs - m sound (compare ch, j)
      FCN/ncf - r sound (compare h, w, -nd)
      SCN/ncs - l sound (compare v, w, -ng)
      FZN/nzf - nt sound (compare th, nd, y)
      SZN/nzs - x, ks or -ction (compare nd, y)
      X       - also internal -s- as in observe
      RI      - -l- as in glass
      XI      - internal -w- or -f- as in dwarf
      RU      - internal -m-
      XU      - internal -n-
      UI      - internal -p-, -b-
      RIU     - internal -t-, -d-
      XIU     - internal k/hard g sound
      RX      - reserved for disambig.
      ie      - short o as in lot
      ua      - long a as in face
      ue      - long e as in fleece
      ui      - long i as in pie
      ia      - -ou- as in our
      ea      - -ea- as in bread
      uie     - long o as in foot
      uia     - long u as in music
      iea     - -oa- as in load
      FCR     - str- as in stream
      FCRI    - spl- as in splash
      FCRU    - spr- as in sprint
      FCXIU   - scr- as in scroll
      Uu      - -aw- as in dawn
      Ii      - -oy- as in choice
  • matthew_hre 2 hours ago
    My Claude Code sessions are about to sound like the Breath of the Wild soundtrack
  • runamuck 2 hours ago
    So I can run shell from a Miracle Piano connected to a NES running Linux?
  • shablulman 3 hours ago
    [dead]
  • CagedJean 1 hour ago
    [dead]