Anatol Waschke
technical solutions for the showbiz
home tools print about

all content on this site is published under
Creative Commons License
all names and trademarks are property of their respective owners

if you see blinking text on this site it means that this part is still to be translated

click on the flag to switch the language
de pt en

Document last modified @ April 26 2013 16:10:42.(GMT)


bai.tu logo

What is "bai.tu"

"bai.tu" is a patch framework in puredata to manage sound and video machines for a show.(lighting control over DMX512 is under way)
the main idea is to be able to manage dedicated machines for each task and/or backup systems in frame accurate syncronization
for that purpose sound and video processing is done by seperate modules.
for the moment only *.wav sources in stereo format are accepted as sound sources, but you could have several stereo sources running in sync to build a multichannel performance.
bit depth and sample rate depend on your hardware configuration.
neither bai.tu or puredata perform any checks on your system config, you will have to do that by yourself.
so if you take, for example, a video stream coming from a dvd, split it into video and audio, but the machine running your audio is configured to run at 41kHz samplerate you will get weird results in terms of sync: the sound coming from the dvd has a 48kHz samplerate but will be played back at 41kHz.
video has been proven to be stable with the *.avi-container as a source using the pd-extended platform.(without compression and using a plane DV codec!)
if you want to use other puredata releases you will need the GEM libraries for video manipulation.
the number of streams and the complexity of manipulations depend mainly on your hardware

"bai.tu" is ment to be completely crossplatform and has been tested on Linux (mainly on Debian based systems), MacOS X and Windows
of course i would advise to stay away from Windows platforms for stability, performance and sanity reasons!
like allmost everything else on this site, this stuff is open source and copyleft!
do whatever you want with it as long as you're having fun!

bai.tu logo


you don't really need an install to use this framework.
all you need to do is to extract the files to any place on your harddrive that pleases you and add that location to pd's library path's
if you're updating from a previous version you might just overwrite the files of the old version (please keep in mind that a backup is always a good idea).
PLEASE check and re-check your setups after any updates, and remember: if it's working fine, don't fix it!

bai.tu logo

using "bai.tu"

documentation is, for the moment, so poor that it's really more like none existing.
there is a patch in the "trunk" directory called "patch.pd" where you can find most of the modules in use and, maybe, get an idea of how they are ment to be managed.
all video objects and containers have some kind of remote control.
it is usefull to keep track of your network connections and ports when using multiple machines: any overlapping ports and/or adresses will cause absolute mayhem.

the cue system:
every show, technically speaking, has some kind of a cue structure the operator or technician runs through step by step
"bai.tu" is based on exactly that principle
there are two cue "generators" or counters: [sequence] and [sequence_sync #acceptingport]
the first is used for local cue management (cues might be triggered remotely) and has 20 direct outlets (bang)
you don't need to use any of those but it might be easier for some to see the physical connections
additionally every triggered cue sends a bang to its respective receiver, for example [receive cue23]
cues do not have, for the moment, any description or text associated.
[sequence_sync #port] works in exactly the same way locally
except that you can syncronize your cues thruout a network of machines
with the parameter "#port" you define on wich port your machine should be listening for connections and cue triggers and with the last inlet on the right you can tell it to connect to other machines with a [connect #port( message.
you should always create a kind of feed back connection chain with the last machine in your connection chain connecting back to the first
that way all machines in the chain will verify that they're all in sync.
both modules accept keyboard input:

  • "[SPACE]" - the equivalent to "GO!" advances one cue (the zero cue does not trigger anything and there is a subzero cue for safety)
  • "[BACKSPACE]" - the equivalent to "GO BACK!", goes one cue back in your chain of events (going back from the zero cue causes a reset in all modules to their initial state)
  • "[SHIFT]"+"[A]" - switches to "online", meaning that local keyboard input will be accepted (there is a checkbox showing wether or not)
  • "[SHIFT]"+"[Q]" - switches "offline"
  • "[ENTER]" - the equivalent to [pd gem create(, turns the video output on using the last given configuration, this key obeys the online/offline mode
  • "[ESC]" - the equivalent to [pd gem destroy(, turns the video output off, this key obeys the online/offline mode as well

  • [sequence] and [sequence_sync #port] will do a system wide reset if they receive a "GO!" after the last cue has been executed, so you get the show up and running right away for the next gig.
    in order to get this working correctly you have to set the "MAX MEM" value to the number of your last cue.

    several setups with the same instalation:
    "bai.tu" saves all its configuration values like video size, fade times, number of cues etc. the moment you change them or add a new module
    each time you create a new module, "bai.tu" will try to find and load a previous configuration coming, for example, from a previous module with the same name
    by default these values are stored in the same path where you decided to keep the library
    this means all patches using bai.tu as a library will share parameters
    to define a different location for your setup just add a [spath /absolute/path/to/your/config/] object
    once again neither puredata or "bai.tu" perform any checks on that location
    be sure that you have read/write permission and that the given directory exists, also don't forget the leading and trailing "/" (in Blindowz it would be "drive:\" and "\", but M$ has always been kind of backwards)

    !!!! IMPORTANT !!!!
    none of your media sources or streams names should contain spaces or any weird characters
    puredata has the habit of reading just until that character and stopping there
    and this will produce some really strange havoc within your setup!
    (spaces are list separators, and, since all parameters are stored as a list, having spaces in a path or filename would create a list within a list, so just don't use them)

    bai.tu logo


    "bai.tu" version 0.9.51 rc2   right-click and choose "save as ..."
    "bai.tu" version 0.9.52 rc2   right-click and choose "save as ..."
    you can also get it from
    SSH: ""
    and over GIT: "git://"