# The Arts Builder Handbook

Stefan
Westerfeld

    stefan@space.twc.de

08/04/1999
1.07.00

This Handbook describes Arts Builder

aRts
Arts Builder
synthesizer
multimedia
structure
music
sound

## Introduction

### What is aRts?

Arts expands to "analog realtime synthesizer", but when you are reading this documentation, you perhaps already know...

aRts simulates a complete "modular analog synthesizer" on your - digital - computer. Create sounds & music using small modules like oscillators for creating waveforms, various filters, modules for playing data on your speakers, mixers, faders,... You can build your complete setup with the gui of the system, using the modules - generators, effects and output - connected to each other.

Over the time, it has evolved to be useful for a wider range of applications than only analog synthesis. Arts has become an audio middleware, which may solve tasks like full duplex effect processing, midi synthesis, audio server functionality, emulation of a sampler, .... Others like hard disk recording might follow.

An important change happened with the integration of aRts in the KDE2.0 Desktop. It now provides the base for many multimedia services there, most visible of course as always running sound server which allows you to run multiple applications which use the sound device at once.

This program (Arts Builder) is distributed under the GPL (Gnu Public License). Many parts of aRts are also distributed under the LGPL (Gnu Lesser Public License), to allow using aRts with non-GPL'd software.

### Inside aRts

While there may be a few software synthesizers already, aRts was designed with one goal in mind: flexibility

So it wasn't designed to be a program where you get two (or ten) finished instruments that simply sound nice, and provide some parameters. Not even three effects and a mixer.

Everything - from the smallest building block up to complex structures (e.g. mixers with equalizers, effect banks, houndreds of buttons and parameters on the screen) - should be able to be buildable of the small modules aRts consists of. There shouldn't be something that couldn't be recombined, reconfigured, replugged, rerouted or redesigned. A virtual studio where everything can be put you want it to be.

Of course there will be instrument libraries, effect libraries, and collections of mixers, complex filters, midi processing units, etc. that come with aRts. But these are not inside the code, all of it will be written in aRts itself, so that everything is accessible via Arts Builder. This is still some way to go though - but we're getting there.

Sure enough, new synthesis modules can also easily be written and integrated in the aRts system.

## Quick Start

### How Arts Builder works

Unfortunately, with all this rewriting going on for KDE2.0, I didn't have the time to get the documentation completely adapted. So for now, you'll have to live with a quick introduction how Arts Builder works, and then you are on your own.

First of all, when trying to run Arts Builder, you should also be running the sound server (artsd). Usually, when you use KDE2.0, this should already be the case. If not, you can configure the automatic sound server startup under KControl - Sound - Sound Server.

When you are running aRts, it always runs small modules. Arts Builder is now a tool to create new structures of small connected modules. You simply click the modules inside the grid. To do so, choose them from the "Modules" menu, and then click somewhere in the green-grey plane.

Modules usually have ports (where usually audio signals are flowing in or out). To connect two ports, click on the first, which causes it to turn orange, and then click on the second. You can only connect an input port (on the upper side of a module) with an output port (on the lower side of a module). If you want to assign a fixed value to a port (or disconnect it), do so by double clicking on the port.

So here is a very simple example to get you started.

Start artsbuilder.

You need a Synth_AMAN_PLAY-module to hear the output you are creating (when using artsd as audio server). So create a Synth_AMAN_PLAY-module by selecting Modules/Synthesis/Sound IO/Synth_AMAN_PLAY and clicking on the empty module space. Put it below the fifth line or so, because we'll add some stuff above.

To make it nicer, you can doubleclick on the first and second parameter (title and autorestoreid), and give your audio output a name (which will be visible later in artscontrol for instance). Doubleclick on them (the two leftmost ports of the module), select constant value and type "hello_arts" or something like this in the edit box. Click okay to apply.

Create a Synth_WAVE_SIN module and put it above the Synth_AMAN_PLAY module. (Leave one line space in between). As you see, it produces some output, but requires a "pos" as input. First lets put the output to the speakers. Click on the "out" port of the Synth_WAVE_SIN and then on the "left" port of Synth_AMAN_PLAY. Voila, you have connected two modules.

All oscillators in aRts don't require a frequency as input, but a position in the wave. The position should be between 0 and 1, which maps for a standard Synth_WAVE_SIN object to the range 0..2*pi. To generate oscillating values from a frequency, a Synth_FREQUENCY modules is used.

Create a Synth_FREQUENCY module and connect it's "pos" output to the "pos" input of your Synth_WAVE_SIN. Specify the frequency port of the FREQUENCY generator as constant value 440.

Hit File/Execute structure. You will hear a sinus wave at 440 Hz on one of your speakers. Guess what you need to do to get it on the other speaker as well? ;)