Setting up an IRC server is pretty simple as long as you make sure to read the man pages and any other information given (especially the INSTALL file). Of course, that doesn’t really work all that well when you go about things the way I did initially.

Photo by Forest & Kim StarrI first started researching different IRC daemons to use in Ubuntu Server, and settled upon one. Finding that there was already a binary for it inside the Ubuntu repository, I decided to go that route. Quick and easy, yeah? IRC set up painlessly and after a quick configuring of the ircd.conf, I thought everything was dandy. I logged in and queried NickServ to register my nick, only to find there was no such nickname or channel. Looking this up, I realized I needed to set up some Services. I found the package I wanted to use and set about configuring it for use. I got it to set up and everything was a-okay, except for the fact that I could not get global operator working.

Now, the server is internal and does not need a global operator, so that wasn’t too big of a deal. Deciding to go with a passworded server instead of going through and configuring ChanServ to manage things, though, seemed to be a rather big deal. The binary I was using does not have ssl enabled, which means I have to compile everything from source.

This is the way I originally was going to do it until I let the temptation of using a binary overpower me. From this I have learned that if you are going to do something super specific with an application, do not install a binary. It is one of those common sense no-brainers which we are susceptible to once in a while, especially when we have become used to installing applications from binaries. All I can do is shake my head and laugh. After all, it is a learning experience isn’t it? It is just another one of those “trust your first instinct” things that I ignored.

So, if you are going to be installing applications to a workstation or server, make sure you that the binary will do everything you want it to, otherwise you are going to end up having to take several steps back, configure, and compile from source. What are your speed bumps?

 

Somewhere between the realms of oscilloscopes and player pianos lies a radical music instrument called Pure Data, or PD. You can hear what sorts of things Pure Data can do at the Pure Data Exhibition page.

Hopefully this article will make it very easy for newbies to get into PDing and I encourage anyone and everyone to give it a shot. On the other hand, it will require patience and lots of active thought. Lots of active thought. In fact, background knowledge of general mathematical algorithms would be very helpful for first time Pure Data enthusiast. Pure Data is ridiculously in-depth. If you are at all familiar with programming it will make sense to you. If not, do not fret; Pure Data is simple enough (in my opinion) that one can create some really cool stuff with not very much effort or prior programming knowledge. This is not to say that Pure Data can be seriously confusing and frustrating at times, but the payoff is very, very rewarding and, at times, very surprising.

Also, this article will not focus on obtaining and installing Pure Data. The installation process is self-explanatory enough that it should be easy for most computer users to install properly. If this is not the case, there is a vast number of resources available on the Pure Data community site that can assist in this.

Anyway, let’s get on with it.

Pure Data

As stated on Pure Data’s website:

Pd (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing.

In other words, Pure Data allows you create and modify images and sounds using “objects” organized in such a way that can closely resemble a flow chart. I use Pure Data for audio processing.

Diving into Pure Data

I am going to assume that you have properly installed audio drivers. Mac OS X has CoreAudio installed by default and this is perfectly acceptable for low-latency music creation. Windows and Ubuntu are a little less fortunate right off the bat. Windows has the wonderful ASIO emulation drivers ASIO4ALL, though if this is not your cup of tea, you can get by with the basic (and slow) Windows drivers. In the Linux realm, there exists a flavor of Ubuntu made explicitly for multimedia purposes called Ubuntu Studio. I have no experience with this distribution, therefore I cannot provide support for this. Again, you can find most information you need at the Pure Data community site.

Let’s get started.

The Main Window

Upon running Pure Data, you’ll notice the main window appear on your screen.
Pd Main WIndow
This window will run at all times and provides valuable output related to errors and other program output.

Edit mode and run mode

As you work with Pure Data, you will be using two modes available in the program. Edit mode allows you to add, remove and modify objects, messages, numbers, etc. in your Pure Data patch. When you switch to run mode (by pressing Control-E in Windows/Linux or Command-E in Mac, or by choosing Edit > Edit mode) you’ll be able to click around your patch window.

Inlets and outlets

Almost everything we use in Pure Data has inlets and/or outlets. To connect to ‘lets, we click and drag from any in to any out, or vice versa. This is what we will call “wiring”.

Our first path

We’ll start with something fairly basic. Don’t be scared. I’ll explain everything.

firstpatch

This might look like a jumble of random objects, but is, in fact, a very simple oscillator. From the top, shall we?

The osc~ object

osc~

The osc~ generates an oscillating cosine wave. The signal is sent out from it’s bottom left outlet. In this case, it is connected to the top right inlet of the *~. In our example, osc~ is being used to generate our tone. In this case, it is a 440 hertz tone (the A above middle C on a piano). The 440 after osc~ is called our “creation argument”. Most objects in Pure Data have the ability to accept creation arguments, thus, affecting their attributes at the time the object is created. Creation arguments are not always required, though. In most cases, a default value is decided for the object in question.

The dac~ object

dac~

To get audio out of Pure Data and into our sound device, we use a Digital-to-Analog Converter. In this case, Pure Data’s dac~. If you have your Audio Settings properly configured, dac~ will shove anything from it’s inlets to your speakers (or headphones, earbuds, etc.). In short, this is required if you want to get anything to make sound.

The *~ object (and the * object)

signalmultiply

multiply

Pure Data’s operations are base almost entirely around mathematical functions. Multiply (*) and signal multiply (*~) (more on what exactly a signal is later) are two such functions that allow us to multiply two (or more) numbers or audio signals. In this example, the signal multiply is being used to add two signals together. The first signal is the osc~ and the second is a volume control of sorts. Multiplying the two together controls the overall volume of the osc~. More on this later.

The vertical slider

Vertical Slider

There exists a number of types of controls that can be used to modify parameters and events used by Pure Data. One of those is the vertical slider. In this case, we are using it to control the amplitude (volume) of the osc~. The vertical slider has one inlet and one outlet.

The message

message

Like the vertical slider, the message exists to help modify and control parameters and events in Pure Data. I am using two messages here to help control the audio flow. Messages can be clicked with the mouse (when the patch is not in edit mode, Control-E on Windows and Linux, Command-E on Mac) to trigger events. The first message tells Pure Data to turn on it’s DSP (Digital Signal Processing) functionality. The second message… you guessed it, turns off it’s DSP functionality. In essence, this makes it easy for me to turn on and off the audio (instead of checking and unchecking the “compute audio” checkbox in the main window.

The signal

Notice how most of our objects end with a tilde? ~ This is to denote that the object in question generates an audio signal. Some objects (such as the multiply object) have control-generating and signal-generating flavors. You can also tell if an object generates a signal or a control by the style of inlets and outlets it has.

control

Inlets and outlets that have no fill are controls.

signal

Inlets and outlets that have a dark fill are signals.

Putting it all together

  1. When we click on the ; pd dsp 1 message, audio is started and we can start moving the vertical slider up and down. Floating-point values between 0 and 127 (you can change this by right-clicking the slider and choosing properties, then change bottom and top under output-range) are generated by the slider and …
  2. …multiplied by 0.01 to make the effect volume range of the oscillator 0 to 1.27 decibels which is…
  3. …multiplied by a 440 cycles-per-second cosine wave generated by the osc~ which…
  4. …outputs to our Digital-to-Analog Converter which…
  5. …plays a 440 hz tone on our speakers at the volume chosen on the vertical slider until we…
  6. …click the ; pd dsp 0 message to stop all audio flow.

Conclusion

Hopefully, this short article gives you a bit of insight into just how simply Pure Data operates. Next time, we’ll take a look at creating some real music with Pure Data.