• Posts
  • RSS
  • ◂◂RSS
  • Contact

  • Game Controller MIDI

    June 20th, 2018
    music  [html]
    Expression controllers can make synthesized instruments sound much better, but they're generally pretty expensive. For example, the breath controller I've been playing with cost me EUR 132. There's nothing fundamentally expensive about it, just a low volume product. Which got me thinking: is there some commonly mass produced device that gives a smooth range of outputs? What about a game controller?

    I've never been into console gaming so I don't know much about controllers, but after looking at some pictures it looked like the PS4 one is well laid out for joystick use, so I ordered one ($26, shipped):

    It connects via USB, and pygame can read from it out of the box:

    >>> import pygame
    >>> pygame.init()
    (6, 0)
    >>> j = pygame.joystick.Joystick(0)
    >>> j.init()
    >>> while True:
    ...   for event in pygame.event.get():
    ...      print(event)
    ...
    <Event(7-JoyAxisMotion {
      'joy': 0,
      'value': 0.003906369212927641,
      'axis': 0})>
    <Event(7-JoyAxisMotion {
      'joy': 0,
      'value': -1.000030518509476,
      'axis': 4})>
    ...
    

    Since music is so latency sensitive (though maybe not for expression controllers?) I didn't want to have to go via python, so I decided to write something small against the OSX native API. The docs for the native API are pretty annoying, so the SDL source was a helpful guide.

    It's ready and working, and you can try it out:

    • Build it from source (github):

      $ git clone https://github.com/jeffkaufman/gcmidi.git
      $ cd gcmidi
      $ make run
      
    • Download a binary:

      $ wget https://www.jefftk.com/gcmidi
      $ chmod ugo+x gcmidi
      $ ./gcmidi
      
    It presents as a virtual MIDI controller named "game controller" with ten continuous controller outputs on CC-20 through CC-29.

    Comment via: google plus, facebook, r/WeAreTheMusicMakers

    Recent posts on blogs I like:

    Austerity is Inefficient

    Working on an emergency timetable for regional rail has made it clear how an environment of austerity requires tradeoffs that reduce efficiency. I already talked about how the Swiss electronics before concrete slogan is not about not spending money but ab…

    via Pedestrian Observations February 27, 2021

    Fireside Friday, February 26, 2021

    Fireside this week, but next week we are diving into our long awaited series on pre-modern textile production, though we will be particularly focused on the most important clothing fibers in the Mediterranean world, wool and linen (rather than, say, silk …

    via A Collection of Unmitigated Pedantry February 26, 2021

    The Troubling Ethics of Writing (A Speech from Ancient Sumer)

    (Translated from a transcript of an ancient Sumerian speech by Uruk's most well-respected Scriptological Ethicist) Writing is a profoundly dangerous technology: Access to writing was initially, and still remains, uneven. What's worse, the rich are m…

    via BLOG - Cullen O'Keefe February 15, 2021

    more     (via openring)


  • Posts
  • RSS
  • ◂◂RSS
  • Contact