Running an audio synthesis/analysis language on an embedded device
Asked Answered
D

2

6

What is the experience running programs written in an audio synthesis/analysis language such as ChucK, Pure Data, Csound, Supercollider, etc. in an embedded device such as an Arduino Mega, Beagle Board or a custom board with a microprocessor or DSP chip?

I would like to know which language and hardware you chose and why. What were the obstacles, etc.? My objective is to run programs that can be easily programmed by musicians/producers in a board that is not too expensive.

I received input from someone who is successfully running ChucK programs in a Beagle Board (Ubuntu Linux on a Beagle Board running ChucK), but his choice of language and hardware was made very lightly, his setup is not using the DSP in the Beagle Board and it seems like overkill to run a whole Linux install to process audio signals.

Any input is appreciated!

Update: I found Zengarden which is a Pd runtime implementation (as a standalone C++ library) and runs well on ARM based devices. For now, I'll go with the BeagleBoard and Zengarden but in a later stage of the project, I'll need to replace the BeagleBoard with something that costs less.

I'd love to hear more input from the community.

Deadfall answered 28/12, 2010 at 16:0 Comment(3)
Newton Armstrong runs supercollider on a screenless piece of hardware running linux. But that's not what you're talking about. I'm curious too. If you come up with an answer, I'd love to hear about it! ([email protected])Exorbitance
Thanks @WillHartung for the lengthy answer!! Hopefully someone will provide some input on the choice of audio language.Deadfall
I'm sure this is not quite what you want, but the IPRE project's OSC stubs for ChucK are related. Others may find it useful, particularly if working with kids.Livable
D
5

Thanks everyone for your comments and answers. For everybody else's reference, I ended up writing a JACK client in C++ that parses and interprets PureData patches and ran it on a BeagleBoard with Angstrom Linux and JACK server. Here's a video and a tutorial that I wrote: http://elsoftwarehamuerto.org/articulos/691/puredata-beagleboard/

Deadfall answered 19/12, 2011 at 14:37 Comment(0)
A
4

First, I am not an audio programmer, so I'm not familiar with the actual demands of the signal processing necessary to achieve what you want to achieve.

But, it's difficult to contrast something like the Beagle Board and the Arduino Mega, since they're really in different leagues of base performance. The Beagle Board is a 1 GHz ARM vs the Arduino Mega's 16 MHz. That tells me that whatever processing you may be interested in doing may well be within the capabilities of the Beagle Board, but the Arduino Mega would have almost no chance without an attached DSP to do the actual work.

The next consideration, is whether any of the packages you were considering using actually target DSPs for their runtimes. At a glance they seem like high level sound processing languages. With the Beagle Board, you may well have the processing power to evaluate and compile the sound source code that these packages use and let them compile in to their targets, but on the Arduino Mega, that seems unlikely.

If all you're doing is working with a piece of hardware that will be running the artifacts created by the packages you mentioned, then the Arduino Mega may well be suitable as the "development" is done on a more powerful machine. But if you want to work with these packages as is, and use them as a development tool, then running them on a Linux port to something like the may simply be a better option.

Again, after casual looking about, the Arduino Mega is roughly half the price of the Beagle Board, but the Beagle Board may well let you work at a much higher level (generic Linux). Whether either will be powerful enough for your final vision, I can't say. But I would imagine you could get a lot farther, a lot faster, using the more powerful system -- at least in the short term.

Atonic answered 28/12, 2010 at 17:27 Comment(1)
At each stage from an arduino, to a compact contemporary ARM chip running bare metal or a tiny OS, to a low end embedded linux system, to a high end ARM embedded linux comparable to a smartphone, to a nettop/netbook there's a large increase in performance at a small increase in price. For programming convenience, the big tipping point is probably when you can use desktop-like methods, for example, when you can run embedded linux on the thing without memory pressure and have a file system and and working cross compilers or interpreters for most languages.Pavier

© 2022 - 2024 — McMap. All rights reserved.