RSS feed

On potentiometers and parameter mapping, part 2

Posted by Stefano at 13/02/2023, 17:05:21 UTC.

As promised, in this second episode we'll see how the potentiometer interaction metaphor influences music DSP and how we can leaverage our knowledge to improve user experience.

Read more · Comments

On potentiometers and parameter mapping, part 1

Posted by Stefano at 02/02/2023, 17:45:20 UTC.

They infest synthesizers, effect units, amplifiers, studio gear, electric musical instruments, DAWs, and plugins. Potentiometers, whether knobs or sliders, real or virtual, are definitely the most common mean of interaction with music gear.

No doubt there's much more to them than just representing some value within a given range. Let's uncover a few secrets and see how they can inspire day-to-day DSP.

In this first episode (out of two, presumably) we'll touch on the relevant, and perhaps trivial, analog aspects. Getting them right is, however, essential to the more advanced DSP concepts to be discussed in part 2.

Read more · Comments

Let's get this community rolling

Posted by Stefano at 22/01/2023, 21:37:34 UTC.

Sorry for not having updated you in a long time. We actually have quite many news but we've also been incredibly busy lately (and still are).

Let's get started right away!

Read more · Comments

A bunch of research

Posted by Stefano at 20/09/2022, 16:11:45 UTC.

This year's DAFx conference, in which we have presented two new scientific papers, is now just behind us and we're now announcing our participation to the upcoming CIM and ADC conferences.

So, what are we doing at conferences?

Read more · Comments

Conditionals in Ciaramella

Posted by Stefano at 06/08/2022, 11:03:41 UTC.

Ciaramella is not the first declarative dataflow language around. Remarkable members of this category of languages, at least to some degree, include FAUST, Lustre, Kronos, Reaktor Core, and Max's Gen.

Last time I discussed why we were unsatisfied with them and had to invent our own. Essentially, to me they don't really seem to be designed for actual development of music tech products (Lustre being innocent here, as it is openly not designed for that). Plus, I am somewhat irritated by their strong coupling between syntax and complier internals which cripples modularity (details in this paper, and I have to admit we might have mistreated Reaktor Core somewhat, but it's still practically unusable for other reasons IMO).

Another aspect in which these languages are lacking or needlessly complicated is branching/conditional execution (vulgarly, "if"s, "switch"es, etc.). There are valid technical and historical reasons for this, but I believe it's time to get past them. In this post I'll tell you what we're doing about it in Ciaramella.

Read more · Comments

An A-SID trip, part 4

Posted by Stefano at 15/07/2022, 10:25:55 UTC.

After all it's however 2022 and musicians/producers want the affordability and ease of use of today's technology, understandably. Here's how we modeled the MOS 8580 SID chip and "ported" everything to the modern world.

Read more · Comments

An A-SID trip, part 3

Posted by Stefano at 12/07/2022, 16:01:13 UTC.

This time I'll tell you about the hoops through which I've been going to run the program on real hardware.

Spoiler: it was an expensive nightmare leading to a huge final reward.

Read more · Comments

An A-SID trip, part 2

Posted by Stefano at 08/07/2022, 15:45:08 UTC.

Getting the design to actually work was easier said than done, to put it mildly. This second part of the story is about the implementation details.

Read more · Comments

An A-SID trip, part 1

Posted by Stefano at 04/07/2022, 14:19:01 UTC.

I've been playing with the C64 ever since I have memory. I probably even learnt to read and write on it. Yet I haven't asked myself how it generated sound until a few years ago, when I accidentally stumbled upon the MIDIbox SID. Since I do the work that I do, I looked around for information on the SID chip as well as on classic game music composers (such as the genius named Tim Follin) and modern chiptune music acts (YMCK are amazing). As I found out that:

  • the SID chip contains a digitally-controlled resonant analog filter which can take analog audio as input;
  • analog audio input and output are actually accessible through the A/V port on the back of the C64;
  • people went as far as decapping the chip and taking die shots using light microscopes at micrometer resolution, and then reverse engineering the schematics from such pics;

I knew that one day or another I had to do something about it. And here we are now. Let me tell you about the long journey towards the creation of A-SID and its release on 2022-06-04. (should we call it C64 day now?)

Read more · Comments

Ciaramella, a declarative audio programming language

Posted by Stefano at 27/05/2022, 14:04:12 UTC.

Domain-specific languages (DSLs) are ubiquitous in computer science and engineering today. You can find one or more successful examples in most engineering subfields, e.g., MATLAB for numerical computing, R for statistics, Mathematica and Maxima for symbolic computation, VHDL and Verilog for hardware description, SQL for querying relational databases, HTML and CSS for web hypertext and layout… and the list goes on and on.

When it comes to audio programming languages there’s no shortage of proposals either, yet in my experience none is taken seriously enough in the music tech industry to be used in actual products or even for prototyping (perhaps I might be partly wrong, but this is what I’ve witnessed so far). The academia also seems to largely ignore them, with the exception of the people directly involved in their development and a few enthusiasts. In pratice, it seems to me that prototypes are actually developed in Matlab and Python, while production code is mostly written in C/C++.

While I don’t necessarily believe that experts tend to choose their tools wisely, I think I can easily see why these tools are failing at being useful enough to get adopted for their intended purpose, and I also think we can do better. That is why we funded a doctoral position last year to research and develop Ciaramella, a new audio programming language that can actually be used.

Read more · Comments