BBoB - Big Board of Buttons
BBoB
BBoB is meant to be software that could run on any hardware platform. It will take one or more inputs and allow the scripting or sequencing of one or more outputs. I/O can be single bits such as a switch or relay (on/off) or multibit such as a keypress or serial port byte (Midi, DMX). As the name suggests, there should be many many buttons connected to a computer, with various outputs connected doing something fun and/or productive.

This code should compile on MS Windows, Unix/X11 (linux specifically), and possibly Mac OS-X (untested). Versions started with 0.0.0, and will go up to 0.1.0 when it works enough to do something usefully. Much will change until then. Plugin interfaces will change until 1.0.0, and many plugin frameworks are being done to make sure the most number of things can be done through the plugin interface. The main apps will basically load plugins and config files for plugins, and do minimal work.

TrollTechQt 4.3.2 required to build. A free Open Source (GPL) version is available to download. Binaries and distributed Qt libs here are from the free version. Installer gives option for MinGW download (required on MS Windows). Why Qt 4.3

bbobd : Runs as a Windows Service or Unix Daemon. Uses the BCore class to load plugins, and uses the same config file as Qonsole. It should do everything Qonsole does with out the User Interface.
Qonsole : Loads a main window, plugins load menus and provide dockable displays. Loads/Saves a config file of the active configuration.
Qted : Loads a main window, Example Qt text editor (open,save,print). Could be used to edit INI files. Will eventually be an XML editor.


plugins/BusConsole : Send and show Bus messages. Used for testing plugin communications between plugins. Listens on all buses for data and displays them.
plugins/ButtonBlockPlugin : Provides a display for 8 toggle switches. Right click menu for each button switches between Toggle (On/Off) and momentary. Title text above the switch is editable, and saved/loaded in settings. Will eventually provide a flexable number of switches, auto configuring for the selected size.
plugins/FaderBlockPlugin : Provides a display for 8 sliding faders. Title text above the switch is editable, and saved/loaded in settings. Will eventually provide a flexable number of faders, auto configuring for the selected size.
plugins/Fmod : FMOD Ex 4.06.19 is a library for audio output, input and processing. Also supports multichannel surround mixing. Only play features work now. Listens on StringBus for commands. Saves playlist on program exit, and loads the playlist on startup. Provides FFT for 32 channel spectrum levels.
plugins/LiveUpdate : Downloads an XML file from ChukTech.net, which contains a link to the latest version and a MD5 hash of the file. If a newer version is found, the option to download is enabled. If the download succeds, and the actual file hash matches the XML version, the option to install is enabled. If install is run, the application will save/quit and launch the installer.
plugins/PluginViewer : Shows loaded plugins in a dockable tree view. Menus for loading/unloading, but they don't work.
plugins/Test : Provides example, compiles first, testing only. Docks empty window.
plugins/Timecode : Provides a display of the system time, and can receive Bus Messages to set a time to pass on Bus Messages. This will eventually have support for MIDI Timecode (MTC) when I find a cross platform library that does that.
plugins/Sound : QSound support (built into Qt). Opens WAV files, loads ready to play, plays on demand. Listens on StringBus for commands.
plugins/Tcp : Tcp server and client. Listen on a port, pass data from multiple connections(32?) to one text slot.
plugins/Udp : Udp listener and sender. Listens to a port for packets, sends all data to one text slot.
plugins/GLExample : Qt OpenGL example as dockable window. Could have slots for changing parameters. Requires hardware that supports GL Framebuffers.
plugins/SDL : Handles supported types in libSDL. Currently only uses joystick. Requires libSDL to be installed, requires Cygwin to build on Win32.
plugins/Serial : Serial port support. Automatically finds available ports, provides common connection speeds. Uses QextSerialPort 1.2

Latest version
Screenshot
BBoB-0.0.75-src.tgz - full source - 4.6 Megs - html docs

BBoB-0.0.75-Inst.exe - Windows Installer - 7.0 Megs

Now using Qt 4.3.2. All apps are pure Qt... no other libs required. Plugins may require extra libs/DLLs. This makes it the most portable across the well supported Qt systems.

Many plugins support Modules/Channels, which can be connected in the Portmap tab of the Configuration Window.

LiveUpdate is now a plugin, and works! Future releases can be downloaded as Windows Installer through this plugin. All download/install functions are manual, requiring loading the plugin dialog, and clicking on the buttons.

Multiple desks are supported, fixed at 12 for now. Function Keys (F1-F12) activate desks. Plugin dialogs will load to all desks, and then can be turned off on each desk. Desk configurations are saved/loaded.

The most functional app is "qonsole".
"bbobd" now installs as a windows service, logs to the Application Event Log, and loads the same configuration as Qonsole. It has NOT been tested much.


Next version
More plugins need to implement Modules/Channels.
Qt 4.3 has scripting ability, get this worked into Qonsole or BCore.
Desks should be configurable, Number and Names.