"The Book of Knowledge of Ingenious Mechanical Devices" was a manuscript written by al-Jazari in 1206 which described automata and mechanical devices used in early Islam. One of the more famous is the "The Elephant Clock" pictured here. Other machines include wine servers. The devices were 'programmed' to be random and unpredictable.
There is an excellent explanation of some of these devices and the book in general @ http://66.244.200.112/D1006Gunalan_Nadarajan.wmv - this is a conference presentation by Gunalan Nadarajan on his paper :
Islamic Automation: A Reading of al-Jazari's The Book of Knowledge of Ingenious Mechanical Devices (1206)
http://www.banffcentre.ca/bnmi/programs/archives/2005/refresh/lisiten.asp
Professor Noel Sharkey from Sheffield University is building a replica of al-Jazari's automata boat which acts like a programmable drum machine.
[quote]
"Al-Jazari's machine was originally a boat with four automatic musicians that floated on a lake to entertain guests at royal drinking parties. It had two drummers, a harpist and a flautist."
"The heart of the mechanism is a rotating cylindrical beam with pegs (cams) protruding from it. These just bump into little levers that operate the percussion. The point of the model is to demonstrate that the drummer can be made to play different rhythms and different drum patterns if the pegs are moved around. In other words it is a programmable drum machine."
[/quote]
The guys from pawful.org have been working on a livecoding game called Al-Jazari which is a musical robot livecoding system based on the principles of al-Jazari's automata boat.
view the video demo at http://www.youtube.com/watch?v=zxwLllYchlw
[quote]
"Al-Jazari is written in scheme for fluxus, and continues in the gamepad driven vein of BetaBlocker.
Livecoding for all the family! Only for use at royal drinking parties."
"The language consists of instructions to move and turn the robot, along with conditionals based on the external state (blocked, robot to my left, right etc) and jump instructions to switch between 4 seperate code states. A simple signalling system to allow the bots to communicate is planned."
[/quote]