A review and description of the book by Daniel Dennett
Fluid Analogies Research Group
A java implementation of Copycat by Scott Bolland.
Fluid Concepts and Creative Analogies describes a cognitive model that is very compelling and fun to study. Almost every chapter in the book describes a separate implementation of the cognitive model.
When you run that java implementation, the incredible thing is that the cognitive model seems to actively pursue an agenda in a human like way. But when you break down what it does, the simplistic way I see it is that it is like a simulation of an ant colony, with codelets in the place of ants. Like an ant, each codelet is attracted to a "salient" part of the workspace and does one little piece of work - proposing or building a structure, changing the salience of a new part of the workspace, changing the activation and slippability of one of the concepts in the slipnet, and so on. As the codelets run, the system seems to be pursuing an agenda, an agenda that is different every time it runs, and that is emergent rather than explicitly programmed in.
Trying to apply this cognitive model to other domains is a mind bending exercise.
When applying a genetic algorithm to a problem for example, you just need to define a few recombination operators for generating new proposed solutions from old ones, and a fitness function for measuring a proposed solution. When this program runs, it isn't doing much more than performing a search in many directions.
When applying this cognitive model to a new domain, you need think far more deeply. You need to choose the concepts involved, how they are connected to each other and how these concepts manifest themselves through the "top-down" codelets they can generate and how "bottom-up" codelets should be influenced by the activations of the concepts. When you see this program running, you see a story unfold about a thought process rather than just a dry search. The system notices features, which may activate concepts, which may direct the system to search for features related to that activated concept. The activation of a concept may also strengthen the bond between two other concepts, causing a slippage of activation. For example, thinking about the letter "a" and the concept of successorship may lead you to start thinking about the letter "b".
Its this richness and depth of domain knowledge that gives systems based on this cognitive model such a compelling, beautiful character.
As well as Fluid Concepts and Creative Analogies, I've been reading the following two books written by co-authors and collaborators:
Analogy-Making as Perception - A Computer Model by Melanie Mitchell
The Subtlety of Sameness by Robert French
Synthbench is an audio synthesis tool inspired by the "Reactable" instrument.
- Generators and LFO controllers with waveforms editable in real time
either interactively with the mouse or through lua commands.
- Generators and LFO controllers that use standard waveforms.
- High pass, low pass and band pass filter effect nodes
- Delay / phase shift effect node
- A tracker, accessible using tracker controller nodes that can be
attached to a generator like any other controller node
- The two parameters of a generator node can be separately controlled by
a controller node
To adjust the tempo, the center node (small purple circle) needs to be
selected and the controls window needs to be visible ("Controls" menu
item toggles it).
The "mf" and "ma" controller nodes need to be attached to a generator
to enable it to be controlled by the tracker. Sliding the "Track"
parameter selects which track controls the controller node.
If you find that a controller node is controlling the pitch instead of
the amplitude or vice versa, try moving the controller around the
generator until what it controls changes.
When placing a high or low pass filter, you may want to increase the Q
parameter slightly to make the effect more dramatic.
The generator and controller nodes that allow you to modify the
waveform are the "lua" nodes. The "WaveformEdit" menu item toggles the
The "Waveform", "Tracker" and "Synthbench" menu items toggles the
visibility of the respective panes.
This demo uses an engine similar to wtf-atabimp, with a few new features, such as high speed OpenGL rendered voxels and a clean up of the mp3 playing code. All voxel operations (such as "adding" and "carving out" voxels) are done in constant time, with the "housekeeping" of the voxel render list occuring at render time.
This demo is built on a framework that allows the entire demo to be driven by lua. The lua files are included, and can be modified freely. There is also a console available from the demo itself, providing a "live coding" environment which permits complete modification of the demo while it is running. There is an unmarked pane splitter at the bottom of the window which can be moved to reveal the console. The console now maintains a persistent session, so the command history is maintained between runs.
Thanks to cTrix for his wizardry in creating this awesome music for the demo!
- Stack window refreshes after every command
- WikiReader style boot menu
- New sample programs
- Added SP@ word
- WikiReader consistent implementation of PICK
- Found and fixed a memory corrupting crash bug in Ficl Forth associated with the LOCALS| word. WikiReader Forth doesn't support LOCALS| so this is moot.
- Includes a scroller sample which doesn't use LOCALS| or PICK