Tom

Install McLaren Labs’ rtpmidi on Chromebook Linux Bookworm

  • by

Our port of rtpmidi to Debian 12 (Bookworm) installs effortlessly in the Chromebook Linux subsystem. Why would you want to do this? The reason is to get MIDI events from external devices into the Linux subsystem of your Chromebook.

McLaren Lab’s rtpmidi installed in Chromebook LInux

Currently, when you plug a MIDI device into the USB of your Chromebook, it is not passed through to the Linux subsystem. By using rtpmidi you can send MIDI events from a device connected to another computer into the Linux subsystem of your Chromebook.

When used with a wired Ethernet connection (avoiding WiFi) the latency of such a set-up can rival a direct connection.

Read More »Install McLaren Labs’ rtpmidi on Chromebook Linux Bookworm

The Joys of Cocoa (in 2024)

  • by

The McLaren Synth Kit presents audio synthesis as the construction of a graph of audio operators (voices) with the parameters of each type of operator determined by an associated model. Voices define the code that is run in the audio thread and models hold the values that are read from the audio thread. This separation allows the audio thread code to be ensured that maniplations on the models do not block. With models safely out of the audio loop, UI interactions with model properties is straightforward and can use Cocoa idioms for manipulating property values.

At least that was the intent. The McLaren Synth Kit was released without associated GUI controls, but we believed it would be straightforward to define controls for the various models.

But we had never fully defined a Cocoa-based application that rested on the Synth Kit. We finally put it all together in our newly released application called “Synth80”.

Synth80 is a two-oscillator multi-timbral polyphonic synthesizer. This application pulls together the following features.

  • Cocoa bindings for linking Controllers to McLaren Synth Kit Models
  • Document-based application for saving and restoring presets
  • Undo/Redo facility
  • Single Document Interface document-based application for the singleton Synthesizer window

This article summarizes some of the things we learned about using Cocoa this way while developing Synth80.

Focus on Data Structures

We found that we were able to focus on modeling data more than building GUI elements. The models for our synthesizer elements (envelopes, oscillators, filters, etc) were designed first, with controls added later.

Read More »The Joys of Cocoa (in 2024)

LXD/rtpmidi – running McLaren Labs rtpmidi in a container

  • by

Container technology can be used for many things. It can be used for isolation, security, portability or resource management. One popular use of containers is to run a binary for one operating system on another operating system. We wondered if Linux lxc/lxd container technology would allow us to run the binary of rtpmidi for Ubuntu 22.04 on a Debian 12 system. We succeeded eventually.

This post outlines how we reached success. It is not necessarily a recommendation to follow this path. There are a lot of steps, and they can be confusing. But we are going to write down what we learned anyway.

Read More »LXD/rtpmidi – running McLaren Labs rtpmidi in a container

9Front and Audio on Raspberry Pi4

  • by

Last week I read about a new release of a fork of the Plan9 Operating System from the 9Front crew. The release is called “Human Biologics” and the new feature list was intriguing. There was now default support for git, and ssh, and some improvements to audio were included.

  • audio(1) – mp3, ogg, flac, ulaw, wav

I had heard about Plan9 on an off for years. I wondered what sorts of audio and MIDI support might be in this OS, so I gave it a ride. What follows is a short account of some things I learned.

Read More »9Front and Audio on Raspberry Pi4

GNUstep StepTalk is Alive and Well

  • by

A few years ago, I explored the idea of writing a small interpreter for embedding into McLaren Labs applications. The concept was to extend rtpmidi or a synth application with a scriptable ability to customize controls, behaviors or sound graphs. This would help make each application very slim, but to allow extension through scripting. (This is not a very novel idea: it’s been done many times before. 🙂 )

The Objective-C execution environment (libobjc) provides many hooks that make it fairly easy to call into the ObjC runtime from an interpreter, or even to bridge Objc method calls back to an interpreter. The idea of a scritping environment to accompany a GNUstep ObjC Appplication program seemed promising and I wrote a little interpreter (based on PostScript syntax) to test out some of the ideas.

Along the way, I learned about a much more mature project in libs-steptalk. Among other things, it provides a SmallTalk-like language for extending applications or even gluing them together in the GNUstep workspace. It seemed very old, but there were some tremendous ideas in there: I wondered if I could learn enough about it to use it, and I wondered if it still worked.

(Spoiler Alert! I did and it does.)

Read More »GNUstep StepTalk is Alive and Well

GNUstep Desktop – a refreshed look at NeXT/OpenStep

  • by

There’s a cool project called “GNUstep Desktop” that brings together many old GNUstep technologies, and a few new ones, to provide an entire integrated desktop. We gave it a whirl and are pretty impressed!

GNUstep Desktop on Debian 11

It’s pretty amazing that software that began life 30 years ago is still operational and evolving, but that is the case in the GNUstep project.

At McLaren labs, we have been a fan of modern ObjC on clang, and the ObjC runtime with Foundation libraries and have been slowly learning more about GNUstep GUI and desktop. To be honest, it has been a slow learning process. While there is actually very good information about the various pieces of the GNUstep project, it sometimes seems that there are too many conflicting versions around — there isn’t a single source of truth that brings everything together. But that being said, the quality of many of the components really amazes me.

Read More »GNUstep Desktop – a refreshed look at NeXT/OpenStep

Announcing McLaren Synth Kit

The “McLaren Synth Kit” is an Objective-C framework for using MIDI and Audio on Linux computers with the GNUstep programming environment. It is distributed as a project including libraries, headers and example programs at https://github.com/mclarenlabs/libs-mclaren-alpha. You can use it to experiment with sound synthesis for your own personal projects. The project is designed to provide ready-to-compile examples after you clone the repo.

Working with sound is a delicate endeavor. The Synth Kit does a lot of the low-level work of opening devices, managing an audio thread and copying MIDI events to and from dispatch queues. This leaves the audio programmer free to think about designing sounds as a graph of processing units, called Voices.

Standard Voices in the Synth Kit provide envelopes and oscillators of various types, filters and a reverb algorithm. Using the features of modern Objective-C (blocks, ARC and dispatch queues) the Synth Kit makes programming sounds easy, or at least “easier.”

Read More »Announcing McLaren Synth Kit