Skip to content
This repository contains material to build a hybrid single-reed instrument called the Half-Physler.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


The Half-Physler as presented in NIME 2019

This repository contains material to build a virtual single-reed instrument called the Half-Physler. In this design the excitation mechanism of the instrument is based on actual instrument parts (mouthpiece, clarinet reed, ligature) but the tube is simulated on the Bela board.

In this repository you find the C++ code to compile the tube model as an opcode for Csound. The opcode is implemented following the guidelines of the Csound Plugin Opcode Framework by Lazzarini (2017).


This is a Plug-In for Csound. So make sure you have the latest Csound (Version 6.10 and higher) installed.

The best way to install Csound is to follow the instructions on the Csound Website.

Install the Halfphysler (general info)

git clone

cd half-physler


It can be a bit difficult to access the Internet on the Bela Mini, as it has neither Wifi nor Ethernet on bord. On the Mac, you can share Internet with the Bela Mini plugged to your Mac via the USB port.

In short: In Mac setting allow under 'Sharing' that internet is shared with Bela and Beaglbone. (then the Bela IDE in the browser freezes)

In your terminal log into Bela:

myMac$> ssh root@bela.local

bela$> dhclient usb1

bela$> git clone

bela$> cd half-physler

bela$> make

Find more details here..

Using the Half-physler Opcode

First run a simple demo.


csound Demo_PC_Mac/demo_halfphysler.csd

Linux / Ubuntu

csound Demo_PC_Mac/demo_halfphysler.csd


This example needs an external signal! So connect a sound source to the audioIn0 of your Bela board. And a speaker to your right output, to hear some sound.

make installBela
belacsound --csd=/Bela/projects/Bela_HalfPhysler_DemoProject/_main.csd --period=32

In some cases we observed that building on Bela fails with error "plugin.h" not found. If you observe this, please report us.


  • currently not supported

Csound Opcodes:


Resonator with radiation losses, driven by an initial air velocity.

Csound code:

   aFeedb, aSound halfphysler aVelocity, kLength, kRad, kSlope, kEndReflection, kDensity, kPos
  • aVelocity = input signal to drive the tube model
  • kLength = length of resonator in meters
  • kRad = radius of beginning section in meters
  • kEndReflection = multiplier for end reflection coefficient
  • kDensity = multiplier for air density
  • k_Pos = pickup position along the tube (0-1) relative to length (this only affects the aSound output, not the aFeedb!)


The halfphysler_bela version uses a fixed number of grid points for the model (M=32). This ensures that the no memory will be allocated in the real-time thread, and a number of gridpoints is used that does not cause dropouts on Bela Mini. Furthermore, the feedback output is set to compensate for the latency of the Bela Mini Board (--period=32).

Further Information / References:

  • S. Schmutzhard, V. Chatziioannou, and A. Hofmann. Parameter optimisation of a viscothermal time-domain model for wind instruments. In Proceedings of the 2017 International Symposium on Musical Acoustics, pages 27–30, Montreal, CA, 2017.

  • V. Lazzarini. The csound plugin opcode framework. In Proceedings of the 14th Sound and Music Computing Conference, pages 267–274, 2017.

You can’t perform that action at this time.