#dsp

waynerad@diasp.org

Ciaramella is a new declarative audio programming language. "When it comes to audio programming languages there's no shortage of proposals, 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 practice, it seems to me that prototypes are actually developed in Matlab and Python, while production code is mostly written in C/C++."

"It all started in 2009, when I went to Helsinki, Finland, for and Erasmus exchange at the Aalto University (back then it was still called TKK) under the supervision of Prof. Matti Karjalainen. He had developed an experimental audio programming language and compiler in Common Lisp called BlockCompiler which was probably the only such tool which could automatically schedule Wave Digital Filters (WDFs). Unluckily the software was as quirky, clunky, unmaintainable, unmanageable, and user-hostile as you'd expect from a university project developed by a single person with a whole lot of other priorities in life."

"Ten years later (2019/2020) I have been developing an incredible amount of custom DSP algorithms, most of which were simulations of analog hardware. In order to make them perform efficiently ..."

"The Ciaramella language is, like Permafrost, fully declarative. This means that you don't specify the order in which operations are executed one by one, as for example in C/C++ or JavaScript, but rather you describe how each output is computed starting from the inputs and then it's up to the compiler to decide how to actually schedule the operations. Other than that, the syntax is C-like and the language is semantically based on the well-known patching and block interconnection paradigms that are already familiar to users of visual audio programming languages such as Pure Data and Max/MSP."

It looks like the basic design of the language consists of "blocks", "ports", and "connections". A "block" represents an SDF actor and encapsulates an operation. SDF here stands for "synchronous data flow model" and this language is considered a "synchronous data flow model" language. A block has lists of input and output "ports" attached to it. A block reads "tokens" from the input ports, performs some computational "operation" on them, and outputs them on the output ports. Ports are connected with "connections".

Examples of blocks include "elementary" blocks such as subtraction, multiplication, division, and sign change, signal generation blocks, time delay blocks, and composite blocks which contain other blocks.

The compiler, called Zampogna, compiles Ciaramella to JavaScript, and, believe it or not, is written in JavaScript itself. Not only that, but they say it is only about 1,000 lines of code.

In 2011 I wrote a music composition program and was very proud of the fact that the core composition engine was only about 1,000 lines of code. It's possible to do that when you write code that rigorously sticks to powerful mathematical abstractions. The user interface code, though, was many times that, and in fact not all the capabilities of the composition engine were ever expressed in the UI.

I did it in JavaScript, though, using jQuery sliders for changing the composition parameters and the WebAudio API to generate the sound. Since this is also in JavaScript, I'll see if I can incorporate it, especially since one of the weak points of my composition system was the lack of good instruments expressed as DSP algorithms. Maybe this can fix that.

Ciaramella, a declarative audio programming language

#solidstatelife #musicproduction #dsp

hudsonlacerda@diasporabr.com.br

Hi,

Does anyone know how to set up ALSA sound server to filter out noise from the microphone
for videoconferencing? (I have a really noisy computer.)

I was using #pulseeffects, but after upgrading #Debian to #testing version, #pulseaudio stopped to work properly. So I am using ALSA again. (And #apulse for firefox.)

I tried alsa-rnnoise, but it did not work (sound format conflict).

Thank you in advance.

#ALSA #question #pregunta #questão #pergunta #audio #noise #sound #som #GNU #Linux #DSP #noise #ruído

alien23@friendica.feneas.org

The Synthulator..... An Open Source DSP Chip project to keep synths alive


Project to emulate the Motorola 563xx DSP chipset (new contributors welcome).
The chief goal of the project is to be able to keep numerous past synthesizers based on the chip alive. These include:
Waldorf MW2/XT — Motorola 56303
Waldorf Q — Motorola 56303
Clavia Micro Modular — Motorola 56303
Clavia Nord Modular — Motorola 56303
Nord Lead 3 — 6 Motorola 56362
Nord Modular — 4 Motorola 56303
Novation SuperNova — Motorola 56303
Novation Nova — 5 Motorola 56362 (synth engine), and 1 Motorola 56303 (fx unit)
Access Virus A — Motorola 56303
Access Virus B — Motorola 56311
Access Virus C - Motorola 56362
Access Virus TI - 2x Freescale DSP 56367
Access Virus TI2 - 2x Freescale DSP 56367. Later models used DSP56321

EPROMs for (at least) most of the above can be found here:
https://dbwbp.com/index.php/9-misc/37-synth-eprom-dumps

The Discord channel for the project can be found here:
https://discord.com/channels/829099347975208970/846344911569813505

Image featured above is of a GUI made by "Hoverland" for controlling the Virus C on the Emulator.

#DSP #Synthesis #Motorola #Waldorf #Novation #Access #Clavia #Synthesizers #NoiseArchitecture #OSS #OpenSource #FOSS #FLOSS #Programming #ArtHarder