MooDi is a cross-platform
musical application that was
originally developed for PLOrk.
It is
intended to serve as an alternative to the conventional musical
instrument for
use in any electronic musical performance setting. Unlike other
computer music programs, MooDi
is specifically designed for performance use.
Back to top MooDi consists of two components, MooDi PLayer and MooDi Instruments. MooDi PLayer, which was written using Processing, is the main graphical user interface that controls MooDi. Processing is an open source programming language and environment developed by artists and designers. As you will soon see, the Processing engine allows for stunning graphics, resulting in beautiful MooDi drawings. One of the most appealing aspects of Processing is the ease with which it communicates with other applications and environments by sending and receiving Open Sound Control (OSC) messages. MooDi PLayer sends OSC messages to different MooDi Instruments in order to trigger sound. If you do not use MooDi Instruments, MooDi will remain unsonified. MooDi Instruments are written in ChucK and are what bring MooDi to life. Chuck is a new, strongly-timed audio programming language for real-time synthesis and composition. Using ChucK, users are able to switch easily between different MooDi Instruments on-the-fly. If you are serious about learning MooDi, I recommend you first check out both the Processing and ChucK websites to familiarize yourself with both languages. Although not required, learning the languages will give you a deeper understanding of the inner workings of MooDi and a richer overall MooDi experience. Highlights of some MooDi features include:
Minimum System Requirements*PCMicrosoft Windows® XP (SP2)** Processor: Pentium 4 2.0GHz Memory: 512MB of RAM (1 GB recommended) 200MB of available hard-disk space Screen resolution: 1024 x 768 16-bit windows compatible audio card, preferably with DirectX or ASIO drivers Java™ Virtual Machine: Sun™ JRE 1.4.2 (or greater) Recommended system requirements: Microsoft Windows® Vista (32-bit or 64-bit) Processor: Pentium 4 2.6GHz (or greater) Memory: 2 GB of RAM Dedicated audio hard disk 7200RPM or faster with 2GB of available hard-disk space Screen resolution: 1280 x 1024 Windows Experience Index: 4.0 or greater 16-bit windows compatible audio card, preferably with DirectX or ASIO drivers Java™ Virtual Machine: Sun™ JRE 1.4.2 (or greater) Mac Mac OS X 10.4 Processor: PowerPC® G4 1.25GHz and up Memory: 512 MB of RAM (1GB recommended) 200MB of available hard-disk space Screen resolution: 1024 x 768 Java™Virtual Machine: Sun™JRE1.4.2 or JRE 1.5 from Apple Recommended system requirements Mac OS X v10.4.7–10.4.10 or 10.5 Processor: Intel Core Duo 1.83GHz (or greater), Mac Dual G5 2GHz (or greater) Memory: 1GB of RAM (2GB of RAM optimal) 7200RPM Hard Drive with 2GB of free space Screen resolution: 1280 x 1024 Java™Virtual Machine: Sun™JRE1.4.2 or JRE 1.5 from Apple Linux*** 32-bit Intel® Pentium® processor or equivalent LSB (Linux Standard Base) 3.1 compliant systems including Red Hat Linux WS 5, SUSE Linux Enterprise Desktop (SLED) 10 and Ubuntu 6.10 GNOME or KDE Desktop Environment 512 MB of RAM (1 GB recommended) 200 MB of available hard disk space GTK+ (GIMP Toolkit) user interface library, version 2.6 or higher *Minimum system requirements reflect the ability to run MooDi using a basic feature set. Some advanced or intensive operations and features may be limited by these hardware configurations. ** Home and Professional Edition only. Windows Media Center Edition is not currently supported. *** Running MooDi under Linux is rather unstable. For lack of time, we won't be testing extensively under Linux, but would be really happy to hear about any bugs or issues you might run into. Back to top Installation1. Although
the MooDi PLayer can run as a stand-alone application, you must first
download
and install ChucK in order to use MooDi Instruments and sonify MooDi. Visit the ChucK website for details and
instructions on how to download ChucK. Once
you’ve downloaded and installed ChucK, you can test
to see if
installation was successful by running the following code either in the
miniAudicle or in the terminal:
SinOsc s => dac;
If you hear a 3-second beep, ChucK installation has succeeded. 2. After installing ChucK, download the MooDi Performance Bundle. This bundle includes everything you need to get started. 3. To run
MooDi, simply double click the MooDi PLayer application in Finder, and
run any
MooDi Instrument you want from either the terminal or the
miniAudicle. If
everything goes well, you should see a screen that looks like this:
4. The
recommended way to run MooDi is to download the MooDi Performance
Bundle and
run the stand-alone MooDi application. However,
you may also download and install Processing,
from which you
can run the MooDi PLayer project directly. Running
MooDi from Processing is useful if you wish to
personalize your
MooDi PLayer by modifying the source code. Make
sure you’re familiar with the language before making
any changes.
![]() Getting StartedIf you
are new to the MooDi environment, the Tutorial contained
in this User’s Guide should
set you well on your way to producing righteous MooDi sketches. But before you go on to the Tutorial, make
sure you’ve thoroughly read this section, which provides an overview of
the
different MooDi functions and introduces common MooDi terminology. If you are already familiar with MooDi, you
can
skip ahead to the Advanced Techniques section in
the Performing with MooDi
chapter, or just open up MooDi and start drawing away.
Now it’s time to fire up MooDi!
When
MooDi is first started, you will see a large black screen with four
small boxes
in each corner. This screen is the MooDi PLayer. Getting to know the
MooDi
PLayer is very important, as it is the main graphical interface that
controls
MooDi. Just as a violinist knows where every note in every
position is on
his/her fingerboard, so too must you know MooDi like the back of your
hand. In the sections below, you will
see a quick set of words and functions that you should learn before
beginning
anything MooDi related. Take a minute to
familiarize yourself with these different functions and components of
the MooDi
PLayer. We'll go into further detail on each function later in
the
Tutorial, so don't worry if you don't fully understand everything just
yet. Gestures A
Gesture is any shape created by holding down the mouse and releasing
it. You must move your mouse a
distance of more
than two pixels in order for a motion to be recognized as a Gesture. Gestures can include lines, shapes, letters,
dots, and almost anything else imaginable. What
makes the Gestures really unique is their ability to
re-animate
themselves continuously once drawn, based entirely on how they were
initially drawn. You can control how your
Gestures move by
drawing them with different speeds. For
example, if you draw a line extremely fast and let go, the Gesture will
move
across your screen with great alacrity. If
you take your time and draw a circle very slowly in the
middle of the
screen, the circle will animate itself and move across the screen at
the same
languid pace. Gestures are often what
control the main sound of your MooDi Instrument, and they continue to
animate
themselves until manually cleared.
Musical
Objects It’s
important to be aware of the four orange boxes located in the corners
of the
screen. These are the all-powerful Musical Objects. Each
Musical Object controls a different sonic aspect of the MooDi
Instrument. As you will learn later,
manipulating these
objects is the key to mastering MooDi. When
a Gesture passes through a Musical Object, the boxes reappear in a new
location
with a new size, as dictated by your Size and Random Slider values
(which you
will learn about below). You are also able to move each Musical
Object
manually by clicking on the box to select it, and dragging it to
wherever you
wish on your screen. When you select a box, it will be
highlighted white
while you are dragging it around the screen. During
this time, the Musical Object cannot affect any
sonic qualities
of your instrument. Letting go of it
will return it to its original color. If
two musical objects happen to lie directly on top of each other, they
become a
pair and must both be moved at the same time. If
a Gesture hits these boxes, their pairing is broken and
you may begin
to move each box individually again. ![]() Idle Musical Object and manually selected Musical Object
All actions
in MooDi involve some form of
manipulating the Gestures, the Musical Objects, and sometimes both at
the same
time. For this reason, it is crucial
that you feel comfortable with both Gestures and Musical Objects before
moving
on to the next section.
You
may have noticed that the left side of your screen has two groups of
windows
that contain buttons, sliders, and knobs. You
need to familiarize yourself with these. The
group at the top is the Gesture Control
Group. As its name suggests, this group
contains buttons and knobs used to control many aspects of the
Gestures,
including their speed, color, and motion mode. Both
the Time and Mode Buttons in this group have
sub-menus that only
appear when the mouse hovers over them. Sub-menus
disappear once the mouse is moved elsewhere. Make
sure you understand how to make the
sub-menus appear and disappear. ![]()
Box
Control Group Beneath
the Gesture Control Group is the Box Control Group, which is used to
control
the Musical Objects further. In the same
way that the Gesture Control Group provides different buttons and knobs
allowing almost full control over the Gestures, the Box Control Group
provides
a rich set of features to control the Musical Objects.
Once again, both buttons have sub-menus that
can be accessed only when the mouse hovers over them. ![]()
Without
drawing any Gestures just yet, play around
with the buttons, sliders, and knobs in both groups.
Get used to how the sliders move around.
Choose a specific value and see how fast you
can reach it. As you’ll see later in this chapter, MooDi is all about drawing and finding the right collection of Gestures and Musical Objects on your palette. These two groups will play an integral part in your quest to paint the perfect MooDi palette, so make sure you know them forwards and backwards before moving on.
Console
Monitor In the
top left corner of the MooDi PLayer screen is the Console
Monitor. The
console monitor provides important statistics on the current palette at
any
given time. When you initially
open up MooDi PLayer, the Console Monitor should show something like
this: ![]()
KeyBoard
Grid The
square grid in the middle of the screen is the Keyboard
Grid. By default, the Keyboard Grid is
empty, and initially does not control any sonic qualities of the
instrument.
The
Keyboard Grid only controls aspects of the instrument when filled with
values. You can fill it in by typing any of the 52 letters
between ' A '
and ' z '. The darkness of each square, and consequently the
intensity of
the control over the instrument, is dictated by the letter you type, '
A '
being the darkest shade and ' z ' being the lightest. For
example, ' Z '
is lighter than ' A ' but darker than ' a ', and hence has
greater sonic
control than ' A ' but less than ' a '.
Beat
Lines The
moving lines at the bottom of the screen are the Beat
Lines. Beat lines appear every time you click
and release the mouse. Once a new Beat Line is created, it
travels across
the screen at 30fps. However, unlike
Gestures, once a Beat Line reaches the edge of the screen, it no longer
regenerates itself. Since
drum sounds are played every time a Gesture crosses a Beat Line, the
latter are
frequently used during rhythmic passages. For
example, clicking your mouse in a fast, rhythmical, 16th
notes fashion could imitate the effects of a hi-hat.
Experiment with the frequency of your
clicking to get different drum grooves. As
you’ll later see, depending on whether there is a
conductor running a
server patch, these lines may or may not be quantized.
Single Gesture moving
across MooDi PLayer
You should now see a single, straight, white line moving across the screen. The Number of Gestures line in your console monitor should now show ' 1 ', and you should hear a long modulating sound. If all these things have occurred, then you have successfully taken the first step to becoming a MooDi master! Adding
a new Gesture The
first thing you may have done when you opened MooDi was to draw
multitudinous
Gestures. You may not have noticed, but
you can only add up to 36 Gestures in a particular window. If you
add
more than 36 Gestures, MooDi will automatically delete the Gestures
that were
drawn first (FIFO structure). Each time you create a new Gesture,
the Number
of Gestures counter in the console monitor will increase to remind
you of
how many Gestures you currently have on your screen. Changing
Gesture Modes Now,
in the palette you've created, try drawing a circle in addition to the
line
already swimming on the screen. Go to the Mode Button under the Gesture Control Group
and click Stop. You might notice that the Gestures are no
longer
moving across the palette and the notes are no longer changing.
Stop Mode
is a convenient way to freeze and capture a certain shape or sound in
its place.
Listen
carefully to how the resulting sound compares to the sound of the
single moving
line. Click on Move under the Mode button and
the Gestures
should go back to Move Mode and start moving again. Hear
the
difference now? Think of Stop Mode as being the rhythm section
of a
Jazz Ensemble — the pianist who comps steady chords, or, as you will
see later
when using Beat Lines, the swinging drummer who keeps the overall
groove.
Move Mode, on the other hand, is the soloist of the ensemble, the Miles
Davis
of the group that plays virtuoso lines and scales over the underlying
groove. Switch back and forth between Stop Mode and Move Mode
until you
can tell the sonic differences between the two Modes. Find a
particular
note or chord that you like and try freezing and capturing it, then try
"soloing" over that chord with a particular shape. This may
take some time to get used to, so don’t give up. If you
feel like you've mastered controlling the different Gesture Modes, it's
time to
start shaking things up a little — literally! Take your hand off
the
mouse, grab the laptop by its sides, and start tilting it
forward. You
should notice that your Gestures start to get thicker and your
instrument
starts to get louder. ![]() Gestures get thicker when
tilting laptop forward
How is this all happening? MooDi uses the Sudden Motion Sensor (SMS) technology that is built into each Apple laptop to detect any tilt. The SMS is Apple's motion-based hardware and data-protection system used in all post-PowerBook laptops. The SMS is composed of a 3-axis accelerometer which detects acceleration in the x (side-to-side), y (forward and backward) and z (up and down) directions. The tilt function in MooDi PLayer always controls the thickness of the Gestures — tilt forward and the lines get thicker, tilt backwards and the lines get thinner. However, depending on what MooDi Instrument you open, the tilt-sensors can control different sonic aspects. For example, in nutti, tilt in the y-direction is mapped to the overall gain of the instrument — tilting forward increases the volume, and tilting backwards decreases volume. In melancholi, 2 axes of the tilt sensor are used — tilting forward and backwards controls the overall modulation rate, and tilting sideways controls overall panning. Make sure you understand the tilt functions across the different MooDi Instruments. Now in your
palette, try tilting the laptop backward towards yourself. You
should see
that the gestures get thinner and your instrument decreases in
volume. If
tilting forward or backward changes nothing, try restarting both the
MooDi
PLayer and nutti and try again. If you still get nothing, try
restarting
your computer, and remember that the tilt function only works on
computers that
have a built-in SMS (Apple PowerBook, MacBook, MacBook Pro). ![]() Gestures get thinner when
tilting laptop backward
Clearing Gestures The tilt function of MooDi has the ability to control more than just the thickness of the lines. While tilting the laptop either backwards-forwards or side-to-side changes the thickness of the Gestures and some sonic aspect of the sound, shaking the laptop either backwards-forwards or side-to-side clears all Gestures and Musical Objects on the palette, much like the classic Etch-a-sketch toy. Try shaking your laptop side-to-side (not too hard), and you should now have a blank palette. If your computer doesn't have a built-in SMS, you can also click 'c' on the keyboard to clear all gestures. While shaking your laptop deletes all Gestures at once, it is also possible to delete individual Gestures. This is accomplished by using the Gesture Knob at the bottom of the Gesture Control Group. Suppose you want to keep your straight line but to delete your circle. Simply set the Gesture Knob to your desired Gesture number (in this case ' 2 ' since the circle was the second Gesture you created), hit Delete, and voila! The Gesture should disappear right in front of your eyes. Using the KeyBoard Grid Once
you finish shaking your laptop, how about taking a look at the grid in
the
middle of your palette? This grid is the KeyBoard Grid, which is
empty by
default but easy to fill in. Simply hit any letter on the
keyboard
between ' A ' and ' z ', and you should see the KeyBoard Grid come to
life! The different gray-scale squares on the grid are mapped to
the
ASCII values of the keys. ASCII values increase as you progress
through
the alphabet, with capital letters having lower ASCII values than lower
case
letters. Thus, typing ' Z ' produces a much darker shade than
typing ' z
' in your Keyboard Grid. ![]() Single Gesture crossing
filled KeyBoard Grid
Every
time your Gesture crosses one of the shaded boxes, the instrument plays
pitched
white noise, as dictated by the lightness or darkness of the box. Lighter boxes play higher pitches while
darker boxes play lower pitches. Try filling the boxes in
ascending order
by typing out upper- and lower- case alphabets starting with ' A ' and
ending
with ' z '. This should give you a nice chromatic white-noise
scale. Eventually as you get used to the KeyBoard Grid, you'll
start
remembering different patterns of shades that give you different scales
and
melodies.
Revisiting the Box and Gesture Control Groups Now
that you know how your KeyBoard Grid works, take a closer look at your
Box
Control Group and your Gesture Control Group. As their names
suggest,
these groups give you complete control over your Musical Objects and
your
Gestures, changing anything from the color of a Musical Object to the
speed of
a Gesture. Both groups can be collapsed at anytime by hitting the
' - '
button next to the group names, and expanded by clicking the ' +
' sign.
Adding
and deleting Musical Objects Let's
review how to create a new Musical Object. Place your cursor over
the Add
New Button under the Box Control
Group. A sub-menu with the Add New option will
appear. Click
on that button and you should see a new Musical Object in the middle of
your
screen. You've just created your first new Musical Object!
You can create
up to 36 Musical Objects on your palette, but remember, Musical Objects
control
different sonic qualities of your instrument, so use them wisely.
If you
add more than 36 Musical Objects, MooDi will automatically delete the
Gestures
that were most recently drawn (LIFO structure). However, you can
also
manually delete boxes. Place your cursor over the Clear Boxes
button.
A sub-menu with the Clear All and Clear One options
will
appear. Click on Clear One, and the Musical Object most
recently
created will be deleted. Clicking Clear All deletes all
Musical Objects,
except for the initial four, which are always present on the palette. Changing
Musical Object Colors Ok,
now it's time to have some fun with your Musical Objects. Create
another
new Musical Object by selecting Add New —> Add
New. Suppose
you don't like the color of this Musical Object — orange is just a bit
too
harsh for your senses. You can easily switch the color by
clicking on one
of the 4 color boxes provided under the Box Control Group. Try
red, is
that any better? Now suppose you want to move the Musical Object
you just
created to a specific location on the screen, say, towards the
top.
Simply click and hold the Musical Object, and drag it to the top of the
screen. A Musical Object can be moved manually to any position at
any
time by clicking on it and dragging it to wherever you want. The
Musical
Object should be highlighted white when selected, and letting go of it
will
return it to its original color. ![]() Musical Objects are highlighted when manually moved Size
and Random Sliders
Now
try drawing another straight-line Gesture directly in the path of your
Musical
Object. When the Gesture hits your Musical Object, you'll notice
that the
Musical Object moves to a different position and changes size.
The degree
to which it shifts in position and size is controlled by the Size and
Random
Sliders. If the Size Slider is set to 0, there is a 0% chance
that
the size of the Musical Objects will change when hit by a
Gesture. If set
to 100, there is a 100% chance that the size of the Musical Objects
will change
when hit by a Gesture. The Random Slider works in the same
way.
However, when in Stop Mode, regardless of the value of the sliders,
Musical
Objects will not change in size or position when hit by a
Gesture. This
way, Stop Mode truly becomes a way to capture and keep exactly what you
have on
your palette at a specific moment. Notice
a change in anything else? Hopefully you were able to hear the
difference
in the sound of your instrument after passing through the Musical
Object. Musical Objects control different sonic aspects
across
different instruments, and hitting them with Gestures causes these
specific
aspects to change. For example, in nutti, hitting Musical Objects
changes
the modulation rate of the resonant filters. If you weren't able
to hear
the difference in sound, try moving the Musical Object directly in the
path of
the Gesture once again, and listen closely for any changes. Changing
Time Modes Tired
of looking at the same plain white Gesture? You can use your
Gesture
Control Group to make it more exciting. You've hopefully mastered
the
Mode function by now, so try experimenting with the Time
function. The Time Function controls
the
speed of your Gestures. Place your mouse over the Time Button and a sub-menu with Half,
Normal, Double, and Quadruple buttons should appear. If you click on Half, you
should notice that your Gesture moves at half its original
speed and that its color changes to blue. Now click on Double
and
you'll see that it moves at twice the original speed. The Gesture
should
also turn red, indicating that that you are in Double Time.
Finally, click on Quadruple and you'll notice that your
Gesture is now
flashing and moving at the speed of light — four times its original
speed! To return to your original speed, just click on Normal
and
your Gesture should return to its original white color.
Changing
Gesture colors Now,
suppose you don't like how your plain white Gesture moves around your
bright
red Musical Objects. You can easily switch the color of your
Gestures by
going to the Gesture Color buttons and choosing your desired
color. For
now, try choosing purple. Remember that when you are in a Time
Mode other
than Normal, the color of the Gestures cannot be
changed. This is
so that you don't forget which mode you are in. As a final
exercise, try
drawing 5 Gestures of all different shapes and sizes on your
palette. Be
creative, experiment with different shapes and thicknesses of the
stroke.
You should now hear 5 distinct sounds, hopefully all harmonically
pleasing. If you select Stop Mode, each individual sound should
become
clearer.
Congratulations on finishing the Tutorial! You should now be well on your way to drawing masterful MooDi paintings. Please continue reading for further information on how to use MooDi in a performance setting, and for more advanced techniques for the performer who wishes to take MooDi to the next level. For more information about the ChucK programming language and on-the-fly programming, please visit the ChucK website, particularly the documentation and example code sections. For more information about the Processing programming language, please visit the Processing website, particularly the learning and reference sections.
Performing with MooDi
|