version 1.0
3.nov.1999
an instrument for the BeOS
(release 4.5 or higher)
by douglas irving repetto
screenshot (png) screenshot (gif)
download:
USA west coast
USA east coast
BeatyBeatyBeaty is an algorithmic audio event generator. it's a little like a drum machine, but more flexible. BeatyBeatyBeaty only works with sound samples - it does not support midi.
when you start BeatyBeatyBeaty, you'll see two windows. the large main window contains the event tracks, in which you create and process event curves. the smaller window lets you change various settings for each track. the windows will remember their positions after you run BeatyBeatyBeaty for the first time.
CONTROLS
as they appear in the control panel:
events: event creation mode.
pan/gain/freq: pan/gain/freq curve drawing mode.
load: load a sound -- they're loaded into memory, so they need to be not-so-long. you can also drag a sound from the Tracker onto a track and BeatyBeatyBeaty will attempt to load it. any non-compressed (aiff, wav, etc.) soundfile that the BeOS can play should work. to change a track's sound just load a new one. the sounds in "/boot/optional/sound/System Beeps" are fun to play with if you don't have any shortish sounds handy...
clear: clear/reset current events/curves (based on which mode you're currently in). shift+click will clear all data in the track.
mute: toggle track mute.
DATA
the data panel displays the various curves that control sample playback; the colors of the curves match the colors of the controls in the control panel.
use the mouse to draw curves. in EVENT mode events will be filled in on mouseup. in the other modes the changes are 'live' -- they take effect instantly
to zoom a track for more accurate drawing, ALT-CLICK on the data and the track will expand. ALT-CLICK again to collapse the view.
in EVENT mode, drawing towards the top of the track increases the probability that an event will happen, and drawing towards the bottom decreases the probability. more on this later. when you clear the events, the probability is set to zero, i.e. no events.
in PAN mode, drawing towards the top of the track pans right, bottom pans left. when you clear the pan curve, it resets to the center.
in GAIN mode, drawing towards the top of the track increases the gain, bottom decreases it. the gain resets to the center (0.5).
in FREQ mode, drawing towards the top of the track increases the sample-rate of the sound's playback, which results in a higher frequency sound. drawing towards the bottom decreases the sample-rate. a line right in the middle of the track means no change in sample-rate, so the sound plays back at its original frequency. frequency resets to the center (no frequency change).
there are various ways that you can manipulate curves you have drawn. these are detailed below in the KEYBOARD COMMANDS section.
drag the small rectangles on either side of the data panel to set the loop points for the track. you can also use key commands to change the loop points. see the KEYBOARD COMMANDS section for details.
push the PLAY button to start playing. push it again to stop.
use the MICROPULSE SPEED slider to change the micropulse rate. the micropulse rate determines how quickly you move through the data. it can go very fast or very slow. if you are going fast and trigger a sound, and then the sound is retriggered before it has finished playing, the old sound will stop playing and the new one will start. so if you have the micropulse rate set very high and/or you're using long sounds, you may only hear the beginning of the sound.
push the SYNC button to re-sync the tracks. they are synced to the top-most track. how would they get out of sync? read on!
EVENT LUMPINESS: what? okay, here's how it works: as mentioned above, when you draw an event curve, you're setting the probability that an event will happen at each point in time. there are various ways of interpreting this probability. the lumpiness slider interpolates between two interpretations. when the slider is at 0.0, there is no lumpiness, meaning that events will be linearly distributed -- if you draw a line across the middle of the track (meaning 50% event probability), then you will get an event every other pulse. if you add up all of these events, you'll find that 50% of the pulses have events and 50% don't. if you draw a line across the track at 25% then you'll get an event every 4 pulses, giving you 25% events, 75% non-events. so basically when there's no lumpiness the events are regular -- this is useful for creating steady rhythms.
if you set the slider to 1.0, then you get full lumpiness, meaning that events will be distributed statistically -- if you draw a line across the middle of the track (50%), then for each pulse there will be a 50% chance that that pulse will get an event. if you add up the events, you'll find that more-or-less 50% of the total pulses have events and 50% don't, although the events will be haphazardly placed. it's like flipping a coin: over a large number of flips you'll get about 50% heads and 50% tails, but you'll also get runs of one or the other. high lumpiness values are good for creating irregular/unpredictable rhythms
if you set the slider in between 0.0 and 1.0, you'll get a proportionate amount of linearity/lumpiness. if this doesn't make any sense, just try drawing some curves with different slider settings and it will probably get clearer. larry polansky and charles ames have each worked with similar methods of event distribution. polansky calls it "clumping" and ames calls it "lumpiness". my version of lumpiness borrows from both.
FREQUENCY OFFSET RANGE: this slider is a multiplier that controls how much effect the frequency curve has on the playback sample-rate of a sound. at 0.0 the frequency curve will have no effect, while at 1.0 the frequency curve will let you change the sample-rate by +-5000Hz. when a track is expanded you only have 100 pixels from top to bottom, which means that if you set this slider very high you'll hear large jumps in frequency even if the curve only changes a little bit. this gives the feeling of different notes being played. when you set this slider low the effect is more like detuning a sound than playing different notes.
GLISSANDO TIME: when you change the frequency of a sound via the frequency curve, you can either have the frequency change instantaneously, or you can have it glissando (glide) from one frequency to the other. this slider sets how quickly the change happens. at 0.0 the change is instantaneous, at 1.0 it takes one second.
TRACK SPEED: the micropulse speed slider in the event window controls the speed of the master micropulse, which all the tracks are synced to. each track can have its own speed relative to that micropulse. this slider lets you set a track's relative speed, from 0% (stopped) to 100% of the micropulse. all tracks start at 50% of the micropulse speed. if you change a track's speed, then it will get out of sync with the other tracks. if you want to get them back in sync, use the SYNC button in the event window.
TRACK GAIN: this slider lets you set the master gain for each track. the gain curve for a track is scaled by the gain set by this slider.
playback controls | |
space bar: | start/stop playback |
'y': | sync |
'm': | toggle mute |
'[' or '{': | move left loop point towards the right or left |
']' or '}': | move right loop point towards the left or right |
mode selection | |
'e': | EVENT mode |
'p': | PAN mode |
'g': | GAIN mode |
'f': | FREQ mode |
cut and paste: | |
command+c: | copy currently selected curve |
command+v: | paste currently selected curve |
shift+command+c: | copy exact events |
shift+command+p: | paste exact events |
various actions: | |
'c' or delete or backspace: | clear currently selected curve (event/pan/gain/freq) |
'C' or shift+delete or shift+backspace: | clear all curves/events in current track |
'l': | load a sound |
's': | smooth current curve |
left-arrow or right-arrow: | shift curve left or right. curves wrap around the edges of the track. |
control+left-arrow or control+right-arrow: | skew (squish) the curve towards the left or right. |
control+shift+left-arrow or control+shift+right-arrow: | flip the curve left-to-right. |
up-arrow or down-arrow: | shift curve up or down. curves wrap around the edges of the track. |
control+up-arrow or control+down-arrow: | skew (squish) the curve towards the top or bottom. |
control+shift+up-arrow or control+shift+down-arrow: | flip the curve top-to-bottom. |
curves can be freely cut and pasted between the various modes and between tracks. for example, you can take a pan curve from one track and paste it into the frequency curve or even the event curve of another track.
the shift+command copy/paste key commands only work on event curves. they are provided so that you can copy the exact events from one track and paste them into another. if you just copy and paste an event curve normally, it will be re-filled in when it's pasted into a new track, giving you similar, but different events. that may or may not be what you want...
you can load the same sound in a number of different tracks. try loading the same sound in 2 tracks. add some events, maybe the same events in each track. now draw a frequency curve in one track. copy the curve and paste it into the frequency curve of the other track. now shift the curve slightly, up, down, left, right, squished, whatever. the sounds will now be slightly out of tune with each other... it's a lovely effect.
make a jagged curve. smooth it a bit. now use the up-arrow to wrap it around the track so that some of it pops out on the bottom. smooth again. this will create a totally different curve. keep doing this. you can quickly generate all sorts of interesting curves this way.
when BeatyBeatyBeaty pans a stereo file it's just like panning on a mixer -- you can hear just the left, both the left and right, or just the right channel. there's nothing that says both channels of a stereo file have to be related. try loading a stereo file that has very different material in each channel. you can now use the pan curve as a sort of mixer...
load the same sound in 2 tracks. add the same events to each track. set the track speeds so that one is just a touch slower than the other, or set the loop points so that they're just a tiny bit off. you can easily create some very nice phasing patterns this way.
please let me know how BeatyBeatyBeaty works on your system.
thanks,
douglas
email: glmrboy@shoko.calarts.edu
email: douglas.repetto@dartmouth.edu
web: http://music.dartmouth.edu/~douglas
my beos software:
http://shoko.calarts.edu/~glmrboy/bestuff.html
permanent land:
2046 bellemead ave
havertown, pa
19083-2221 USA
current land (good at least through 2000):
6187 hopkins center
dartmouth college
hanover, n.h.
03755 USA