Otoom home page

OCTAM v.2 - the artificial mind

Contents

Basics
Functional overview
Settings - and what they mean
Where to go from here
Tests and Error messages
Contact and bug report
Copyright and credits


Settings - and what they mean

OCTAM can simply be started with its default settings, established during the initialisation process. However, the settings can be changed if so desired. The results can be quite interesting.

The images are at 70% of their original size.

Main window
Settings window
    AI Engine tab
    AI dynamics tab
    AI input / output tab
    ShapeWorld tab
ShapeWorld window
Note

 

anchor arrowMain window

Contains the most common controls and descriptors. More detailed configurations are available in the Settings window.

Main window

In order of appearance, left to right, top to bottom:

(1) Start F5 / Stop F5 / Resume F5
The button text changes according to the current state. Starts, stops, and resumes the AI Engine cycling. The current node states (ie, memory) will be retained.

(2) Reset
Resets the AI Engine matrix to its default values. Only available if the AI Engine is not running. The node states will be newly initialised, which means previous memory will not be retained.

(3) Save
Current node states are saved to a file (the size of the file can get rather large).

(4) Load
Previously saved AI Engine states can be loaded from file. Once loaded, OCTAM checks if the current memory is sufficient to run the AI Engine at this deployment.

(5) Settings
Opens the Settings window.

(6) About
Contact, link to this manual.

(7) AI Engine - Matrix
Shows the general deployment of the main matrix. The parameters can be changed in the Settings window.
In the example above the numbers mean -
    19881 main matrix nodes (the matrix is always a square)
    100 element matrix nodes per main matrix node (also squares)
    5 other nodes each main matrix node is connected to
    3 steps along each branch of the tree per main matrix node (traversal depth)
    12 nodes between one main matrix node and another which is connected to another region,
        for example, from the video region to the audio region
    1 cycle of the main matrix per overall cycling
    1 input cycle per overall cycling
    1 output cycle per overall cycling
    32766 the maximum value an element matrix node can have (in this case),
        it can be set in the Settings window, AI Engine tab → (11) Range of node values.

(8) AI Engine - Number of nodes
The total number of nodes, ie, main matrix nodes times the element matrix nodes per main matrix node. It does not include the total number of nodes processed via the trees.

(9) AI Engine - Cycle number
The number of the overall current cycle as they are counted while the AI Engine is running. The counting continues after a Stop/Start, but starts with 1 after a Reset.

(10) AI Engine - Cycle time (ms)
The time in milliseconds the current cycle has taken to complete. It constantly varies according to the processes running in the computer. A cycle includes getting the video data from the web cam and their processing, getting any audio data as input to the AI Engine as well as those sent to sound modules for the speaker(s), a cycle through the matrix, collecting video and audio output, and sending the outputs to ShapeWorld and audio modules respectively. The larger the deployment of the AI Engine, the longer the cycle time (from ~100ms to several minutes).

(11) Web cam - Web cam direct
The web cam's output can be seen in the view port to the left. The option is only available if the AI Engine is not running. Can be used for testing the video and adjusting the web cam's position.

(12) Web cam - Web cam to AI Engine
Output from the web cam is directed to the AI Engine (default). At that point there is no actual transfer of the data unless (13) Web cam - Video ON is ticked.

(13) Web cam - Video ON
If checked, the web cam is switched on and its data are transferred to the AI Engine, they are also available for other displays controlled in the Settings window. If unchecked the AI Engine is still running however.

(14) Web cam - Audio ON
If checked, the audio data from the microphone in the web cam are transferred to the AI Engine and are also available for other types of sound controlled in the Settings window. It can only be activated if Video ON has been checked, but if left unckecked the audio region in the AI Engine is bypassed and any other sound options in the Settings window under the AI input / output tab are disabled. This setting does not influence the audio option for ShapeWorld.

(15) Audio - |
An indicator that recording and transfer of the audio data from the microphone are in progress. It changes from '|' to 'O' intermittently. Because this animation is not given a high priority during cycling, the changeover does not always happen at the precise moment. Therefore that indicator does not influence the internal sequencing of the data flow.

(16) Audio - Show audio data as graph
Brings up a window displaying the audio data as a bar graph. Due to the time lag incurred in drawing the bars when the recording produces a large volume of data (and thereby holding up the cycling), the display in this case is reduced to the size of the audio input region (this is a simple cutoff for display purposes - the data for the AI Engine are processed comprehensively). The recording takes place during the cycling, so a cycle time of 1200ms will produce ~1200ms worth of recorded data, and so on. audio graph window
In this case the options were (13) Web cam - Video ON, (14) Web cam - Audio ON, AI input / output tab → (17) Audio - From AI Engine, (18) Audio - Wave form only, (21) Audio - Wave form used: machine 1. Because only the underlying wave form is used (a kind of sine wave), the additional data for machine 1 do not show.

(17) ShapeWorld - Start
Starts ShapeWorld in a separate window. More options are available there, see the tool tip for (20) ShapeWorld - Hotkeys, also under the Settings - ShapeWorld tab.

(18) ShapeWorld - Reset window
Resets the ShapeWorld window to the center of the screen. The window format can be changed in (3) ShapeWorld - Display size under the Settings - ShapeWorld tab. To place it somewhere else on the screen drag it with the mouse and the position will be stored.

(19) ShapeWorld - ShapeWorld audio ON
Activates / deactivates the audio module once ShapeWorld has been started. The audio module is independent from (14) Web cam - Audio ON under the Web cam options, but with Audio ON checked the audio data from the AI Engine's output are combined with its video output and transmitted to the ShapeWorld audio module. With Audio ON unchecked the ShapeWorld audio module is only influenced by the shape parameters as they occur within ShapeWorld. Changing from one option to another may take two or three cycles to become noticeable because the audio parameters are affected gradually as they are updated from the outside.

(20) ShapeWorld - Show hotkeys tooltips
Hover the mouse cursor over it and a tool tip appears with the available hotkeys for the ShapeWorld window (toggle window to maximum size, release mouse cursor, toggle wire mesh, rotate shapes, reset shapes to their default orientation).

(21) Keyboard - Keyboard ON
Enables input via the keyboard. The keys and their ASCII values are displayed below. By default the keyboard regions in the AI Engine are kept to a minimum, but they can be made larger in the Settings window under the AI Engine tab. There is no corresponding output.

(22) Display - OFF
No display in the view port above.

(23) Display - Video output nodes
The view port shows the video output nodes as coloured rectangles by translating their numerical values into a combination of Red-Green-Blue colour values. The colours themselves are essentially meaningless, but a certain hue shared by some nodes indicates their similar numerical values; in other words, there is an affinity relationship between them. The layout of the rectangles corresponds to the format of the view port, although the actual output nodes in the matrix are arranged around its rim, from bottom-right to bottom-left, then from bottom-left to top-left. See (25) Display - Node regions below.

(24) Display - Inner matrix nodes
The view port shows the nodes of the inner matrix as coloured squares by translating their numerical values into a combination of Red-Green-Blue colour values. This display serves to follow the patterns of affinity relationships among the nodes as the AI Engine goes through its cycles. The inner matrix is the main node matrix without its rim, that is without the nodes belonging to the in- and output regions (see the OtoomCM page for the layout). A certain hue shared by some nodes indicates their similar numerical values or degree of mutual affinity relationships. They can be particularly interesting when various modes of the adjustment algorithm are selected (see Settings window, AI dynamics tab). Refer to the OtoomCM page regarding such relationships and how they are achieved. The layout of the squares corresponds to the layout within the matrix, made to fit the rectangular format of the view port. Since the number of nodes can be very large (over 77,000, depending on the amount of memory available at the time of loading the program as well as the user's choice), and the pixel size of the monitor cannot be less than 1, in case the view port's width or height cannot accommodate all of them some outer rows and/or columns will be missing (scroll bars are unsuitable for technical reasons). In the main however the overall patterns of affinity relationships will still be discernable. If any other display mode is selected in the Settings window under the AI input / output tab, a green '+' will appear to the right of this line.

(25) Display - Node regions
The arrangement of in- and output nodes, and the inner matrix nodes (dedicated to video, audio, keyboard) are shown. Their respective distributions are set in the Settings window, AI Engine tab → (12) Inner regions (%) and (13) Output regions (%).

node regions   node regions

For example, with the video and audio node layout as shown here, the node regions display has the video input region (top rim) in orange, the audio input region (top and right-hand rim) in light blue, followed by a blank because there are no more nodes dedicated to anything. The inner matrix has the video section in red, then the audio section in blue, followed by a grey area because none of the nodes there are assigned to either video, audio or the keyboard. The bottom and left-hand rim has the video output nodes in orange, then the audio output in light blue, then the unassigned section. The sizes of the respective regions represent the percentage values selected in AI Engine tab → (12) Inner regions (%) and (13) Output regions (%).

(26) Display - Colour spectrum for display
The standard colour spectrum visible to the human eye is used to interpret the numerical values of the matrix nodes. From left to right; red means lowest values, purple indicates the highest.

(27) Show web cam selection only once
During initialisation and when activating video (which includes switching on the web cam to begin with) the connected web cam(s) are ascertained. If unchecked, the user can either confirm the existing selection or select another web cam each time. If checked, the previous selection is used automatically.

(28) Select windows resizing ON
If checked, all the windows can be resized. This may be necessary if the operating system draws the windows slightly differently from what they were designed during development. In such a case the resizing needs to be done only once. To come into effect the respective window needs to be closed and opened again (in the case of the Main window this means closing and starting OCTAM again). If unchecked none of windows can be resized.

(29) Disable tool tips
Tool tips can be dis- or enabled for all windows.


anchor arrowSettings window

Here, changing the configuration of the main matrix, how the nodes are processed, handling the in- and output to and from the AI Engine, and controlling ShapeWorld are available under the respective tabs. They all have their default values, but playing around with them can lead to interesting results.


anchor arrowAI Engine tab

The following relates to parameters used to deploy the AI Engine. They cannot be changed while the AI Engine is running, except for (5) Reset connections, which is not part of the setup.

Settings window 1

In order of appearance, left to right, top to bottom:

(1) Maintain default ratio of connections
If selected (default), the ratio between the main matrix nodes and the number of connections per node is 0.02%. The minimum number of connections is 3. For example, at the default setting of 19,881 main matrix nodes, each of the main matrix nodes is connected to 3 other nodes. See below for the alternative, (4) Change connections, within memory limits.

(2) Section matrix
If checked (default), each region of the inner matrix (video, audio, keyboard) will be treated as a different section when it comes to connecting the nodes with each other. That means every node except for the nodes connecting to the next region has its own tree within its region. If unchecked, the entire inner matrix is treated as one single region, and the trees of each node reach across the entire inner matrix.

(3) 59
The percentage of available memory used according to the node number settings below. The percentage is determined by the number of main matrix nodes and the number of element matrix nodes per main matrix node, plus several arrays to store intermittent values. It may not be possible to reach exactly 100% because the matrices are squares and the number is adjusted accordingly.

(4) Change connections, within memory limits
If selected, the number of connections per node can be set arbitrarily, although limited by the amount of available memory established during the initialisation process. Note that the higher the number of connections, the longer the cycling time because the number of nodes per tree increases exponentially. The alternative is (1) Maintain default ratio of connections, see above.

(5) Reset connections
Refers to the tree traversals, and can be applied while the AI Engine is cycling. Since every inner matrix node is the root node of a tree, a node can represent one or several child nodes in some other tree. Without Reset the tracking of child nodes does not necessarily eliminate a pre-visited other child node, and the actual number of visited child nodes per tree would then be less than the theoretical total number of child nodes for that tree. With Reset the number of visited child nodes are exactly the total number of possible child nodes. As a consequence the overall mutual relationships between matrix nodes are more comprehensive (it also increases the cycle time).

(6) Number of main matrix nodes
The number of nodes in the entire main matrix (including the in- and output regions, its rim). The default is 19,881. Since the matrix needs to be a square, any value typed in will be rounded down to yield a whole square number. If the resultant square exceeds the available memory, the previously stored value will be used. A minimum of 3,249 nodes has been chosen to accommodate the node connections and their offsets (see (10) Offset for connecting node regions below).

(7) Number of element matrix nodes
The number of element matrix nodes within each main matrix node. The default is 100. Since the matrix needs to be a square, any value typed in will be rounded down to yield a whole square number. If the resultant square exceeds the available memory when mapped across the entire main matrix, the previously stored value will be used. A minimum of 64 has been chosen to accommodate the transfer of video and/or audio data into each element matrix.

(8) Number of connections per node
The number of nodes each node of the main matrix is connected to. The default accords with the ratio between the main matrix nodes and the number of connections per node, 0.02% (see (1) Maintain default ratio of connections above). The minimum is 3. Note that this number, in conjunction with the number of main and element matrix nodes and the traversal depth (see (9) Traversal depth below), increases the total number of nodes to be processed considerably and hence the cycle time of the AI Engine. Under the AI dynamics tab → (1) Nodes on each tree, the number of child nodes can be shown at the particular connection/depth combination.

That number grows very quickly. For example, with number of connections == 30 and a traversal depth == 19, the total number of child nodes for this tree will amount to 12,023,394,486,206,899,999,999,999,999. If the depth is now 20, the message "Number is too large to display!" will appear instead of the number. Keeping those numbers low is recommended.

(9) Traversal depth
Each node of the main matrix is the parent node of a tree, where the number of connections are the branches. Since every one of the child nodes is connected to other nodes in turn, traversal depth determines how many steps along those branches of child nodes should be taken before returning to the root node (the traversal is of a depth-first type). The minimum is 1. Increasing this number raises the number of nodes to be processed considerably and therefore the AI Engine's cycle time - see above. (Note: the 'traditional' traversal of a tree uses a stack-like process, whereby each branch is placed in memory, to be 'unrolled' once the end of a branch has been reached. To avoid such a memory-hungry operation, in OCTAM the traversal makes use of address pointers and the traversal follows those pointers, thereby using minimal memory)

(10) Offset for connecting node regions
Certain nodes within the inner main matrix connect to nodes in the next region (from the video region to the audio, and then to the keyboard region). How far they are away from each other is determined by the offset. Therefore an offset of 12 means every 12th node is connected to the other region, and the lower that value the denser the cross-region connections are, which means the regions are more interrelated with each other when it comes to their mutual affinity relationships. Max prov next to Min under the descriptor shows the maximum (provisional) value, given the settings resulting in the (6) Number of main matrix nodes, (8) Number of connections per node, and the node numbers under (12) Inner regions (%). Since the regions' size can be adjusted in terms of their respective percentages of the entire inner matrix, the offset can be too high if any of the regions is too small (has too few nodes) to allow for that spacing. In that case the previously stored value will appear. To enable another value do one of the following: increase the (6) Number of main matrix nodes, lower the (8) Number of connections per node, or increase the percentage(s) for the video, audio or keyboard regions in order to increase the node numbers there. Using the value indicated by Max prov will always guarantee sufficient space for those connections. See (12) Inner regions (%) below for more.

(11) Range of node values
Each node in the element matrices contains an integer which is used by the adjustment algorithm between the nodes. This option sets the maximum value the adjustment calculations can result in. The slider allows for a selection within the range of 10 - 65535, and the button to the right circles through the presets from 127 → 255 → 32767 → 65535. The presets accord with the C++ types under a 64-bit system: signed char, unsigned char, signed short, unsigned short (any higher numbers are problematic for the video and audio processes). Note that from a value of 100 downwards the adjustment algorithm has hardly any effect at all.

(12) Inner regions (%)
The numbers in the text boxes are percentage values applied to the number of nodes within the input region as well as to the number of nodes within the regions of the inner matrix. The inner matrix is sectioned into three regions: video, audio, keyboard (Video, Audio, KeyB). The text boxes allow their respective sizes to be set as a percentage of the inner matrix. The percentage values may not add up to exactly 100 because rounding down is used to avoid overstepping the arrays. The numbers below each text box indicate the resultant number of nodes in that inner matrix region. A region comprising x number of nodes occupies a certain functional space inside the inner matrix; the size of the inner matrix does not change. For example, with 19,881 overall nodes having 10% for the video and audio region and 1% for the keyboard region, there will be 1,932 nodes for the video and audio region each and 193 nodes for the keyboard region (provided Main window → (21) Keyboard - Keyboard ON has been checked). This means so many nodes respectively will be used for video, audio and/or keyboard input processing, with the rest only subject to the internal adjustments between the other nodes' integers (the latter go on regardless). Since the cross-region connections are affected, the particular output tends to be more varied the larger its respective region is. Input regions are not affected, they always occupy the top row and right-most column of the main matrix. Select Main window → (25) Display - Node regions to see the layout.

(13) Output regions (%)
There are two output regions, one for video and the other for audio. Setting their respective sizes as a percentage of the entire output region will connect a particular number of video and/or audio output nodes to the inner matrix from where they receive the results of the adjustment calculations (the number of nodes is indicated below the text boxes). Therefore the lower such numbers are, the less significant the output for that type. Select Main window → (25) Display - Node regions to see the layout.

(14) Accept
Clicking the button will delete the current AI Engine and build a new one according to the above parameters. If the button is not clicked, the AI Engine will remain as it is.

(15) Reset
Resets the AI Engine to its default values, as far as the parameters under this tab are concerned. Settings under the other tabs are not affected.

(16) Close
Closes the Settings window, whether any parameters have been saved or not.


anchor arrowAI dynamics tab

The following parameters change the ongoing behaviour of the AI Engine. They can be changed while the AI Engine is running.

Settings window 2

In order of appearance, left to right, top to bottom:

(1) AI Engine - Nodes on each tree
Shows the number of child nodes each tree has, based on AI Engine tab → (8) Number of connections per node and (9) Traversal depth. That number gets very large rather quickly, and therefore leads to an increase in the cycle time.

For example, with number of connections == 30 and a traversal depth == 19, the total number of child nodes for this tree will amount to 12,023,394,486,206,899,999,999,999,999. If the depth is now 20, the message "Number is too large to display!" will appear instead of the number. Keeping those numbers low is recommended.

(2) AI Engine - Show a tree
If checked, the slider acts as a percentage selector where the location of the root node (shown in red in the view port) represents the number of the inner matrix node in terms of that percentage (eg, '50' will show a root node which is somewhere around the centre). Overrides any current display selection (eg, video output nodes, inner matrix nodes, etc); when unchecked the display reverts to the previous selection. Given the possible number of inner matrix nodes, the location number is an approximation only. The child nodes are shown in orange and can be anywhere within the inner matrix. However, see below (3) AI Engine - Reset nodes:

(3) AI Engine - Reset nodes
Since the child nodes are part of the tree traversal (to which this display is linked), if checked, only one tree with its child nodes will be shown. If unchecked, all the child nodes across the inner matrix are shown since in one way or another all the nodes are linked together and share each others' tree branches. Also, if checked the cycle time becomes somewhat longer. (It's the only downside to having a more efficient tree traversal combined with a relatively trivial memory use)

(4) AI Engine - Node values (shift bits by...)
The integers resulting from the adjustment calculations between the nodes (see the OtoomCM page) can be right and/or left bit shifted (see Bitwise operation). The operation is inserted after the adjustment procedure. Left shifts are the equivalent of a multiplication, right shifts of a division. Depending on the upper limit of the integers set under AI Engine tab → (11) Range of node values, the lower the limit the earlier the left or right shift selection will result in undefined behaviour. What this means can be gleaned by observing the node colour values in the view port of the Main window, be they video or inner matrix nodes (the latter may be more instructive). Generally speaking, pushing the numbers downwards (right shifting) will expand the sets of low-value nodes, and concentrate the others within a medium to higher range of values, since less and less value adjustments fall into the second category. Right-shifting the bits from 1 to 2 to 3 etc will make the phenomenon more pronounced, until just about all the node values are packed into the high-end category. Left-shifts result in a similar compartmentalisation, except that values in the higher range tend to be more diverse (try a left-shift of 14). Whatever their ultimate values, their effects can nevertheless be noticed in ShapeWorld in the geometric transformations as well as the accompanying audio. These effects can be quite interesting. The buttons underneath are shortcuts to some right/left shift selections. Note that any shift by 32 or higher results in undefined behaviour.

(5) AI Engine - Node values - cast limits
The upper limit of the range within which a value resulting from the adjustment algorithm between the element matrix nodes is allowed to be. Although the initial result from the algorithm is as per formula, the number will be mapped across that limited range. Therefore the narrower the range, the more similar the final node values due to the diminished differentiation. Depending on the selection in AI Engine tab → (11) Range of node values, the mapping has a varying effect. Also influences the affinity relationships among the inner matrix nodes.

(6) AI Engine - Node values (multiply by...)
The integers resulting from the adjustment calculations between the nodes (see the OtoomCM page) can be multiplied by any value from -32 to +32 (including 0). It is done during the adjustment procedure. The effects are somewhat different from (4) AI Engine - Node values (shift bits by...) above; in the main the results tend to move within the selected ranges of the node integer values (AI Engine tab → (11) Range of node values).

(7) AI Engine - Number of inner matrix cycles
Sets how many times the AI Engine cycles through the inner matrix. One whole matrix cycle consists of: (1) input from outside to the input regions, (2) data are sent to the nodes the input regions are connected to, (3) traversal of the inner matrix node trees, (4) transmitting the results to the respective output regions, (5) collecting the results to be used outside the AI Engine.

(8) AI Engine - Push affinities
If checked, the affinity values as a result of the adjustment algorithm among the element matrix nodes are proportionally adjusted in terms of the differences between each other. Hence the affinities between nodes become more accentuated; how visible the effect will be depends on the attractor-type relationships that emerged to begin with (see the OtoomCM page).

(9) AI Engine - Number of input cycles
Sets how many times the AI Engine cycles through the data transfer between input regions and inner matrix.

(10) AI Engine - Affinity values | Lower affinity limit
If checked, the affinity values of the inner matrix nodes and/or the video output nodes are displayed in the view port, following the same colour designation as used for the nodes values; the higher the affinities, the more to the right the colours will be.

The slider underneath Lower affinity limit selects the lower limit above which a node with a matching affinity value will be allowed to contribute to the output. The effect is influenced by (5) AI Engine - Node values - cast limits and AI Engine tab → (11) Range of node values. Affinity values must be checked.
AI dynamics settings  affinity values

In the example above the node values have the upper limit of 32767 and the Lower affinity limit has been set to 82. Therefore any node with an affinity value lower than 82 does not participate in any further adjustment calculations. Now the inner matrix nodes (the entire matrix consists of 19,881 nodes) display a concentration of very high affinity values (those that made it through), seen in the purple bands at the top, centre, and bottom. Elsewhere the node values with their affinities are unaffected.

Note that with the Lower affinity limit set to 0, the Affinity values checkbox serves display purposes only. With the affinity limit set to a number > 0, the affected inner matrix nodes influence the overall output, but only as long as Affinity values remains checked.

(11) AI Engine - Number of output cycles
Sets how many times the AI Engine cycles through the data transfer between inner matrix and the output regions.

(12) ShapeWorld - Additional factor
Whatever the parameter values that are used to configure the combinatorial shapes in ShapeWorld, this option allows those values to be multiplied by a factor from -10 to +10. Under certain conditions the shape-defining parameter values stay within a small range (for more detail see under ShapeWorld tab). Changing this settings can make the shapes more lively.

(13) ShapeWorld - Accentuate
The (12) ShapeWorld - Additional factor above can be further fine-tuned by this option between -3.0 and +3.0 (it acts as another multiplier).

(14) ShapeWorld - Include audio
If checked, the (13) ShapeWorld - Accentuate value is also applied to the audio data which are sent from the AI Engine's audio output to the ShapeWorld module. It can change the sound from the speakers considerably (2 channel).


anchor arrowAI input / output tab

The following options control the in- and output representations based on the data derived from the AI Engine. While some may not be always available they can be changed while the AI Engine is running. They do not include anything related to ShapeWorld; those options can be found under the ShapeWorld tab.

Settings window 3

In order of appearance, left to right, top to bottom:

(1) Video - Display OFF
There is no display in the Main window's view port.

(2) Video - Feed video output back to AI Engine
The data from the AI Engine's video output nodes are written into its input data array, either substituting the input data completely if more than the input, or simply included if the input happens to be larger. In- and output lengths depend on the number of in- and output nodes selected.

(3) Video - Video output nodes
This option is a copy of the same in the Main window and reflects what has been selected there and vice versa.

The Main window's view port shows the video output nodes as coloured rectangles by translating their numerical values into a combination of Red-Green-Blue colour values. The colours themselves are essentially meaningless, but a certain hue shared by some nodes indicates their similar numerical values; in other words, there is an affinity relationship between them. The layout of the rectangles corresponds to the format of the view port, although the actual output nodes in the matrix are arranged around its rim, from bottom-right to bottom-left, and from bottom-left to top-left.

(4) Video - Inner matrix nodes
This option is a copy of the same in the Main window and reflects what has been selected there and vice versa.

The Main window's view port shows the nodes of the inner matrix as coloured squares by translating their numerical values into a combination of Red-Green-Blue colour values. This display serves to follow the patterns of affinity relationships among the nodes as the AI Engine goes through its cycles. The inner matrix is the main node matrix without its rim, that is without the nodes belonging to the input regions and the output regions (see the OtoomCM page for the layout). A certain hue shared by some nodes indicates their similar numerical values or degree of mutual affinity relationships. They can be particularly interesting when various modes of the adjustment algorithm are selected (see Settings window, AI dynamics tab). Refer to the OtoomCM page regarding such relationships and how they are achieved. The layout of the squares corresponds to the layout within the matrix, made to fit the rectangular format of the view port. Since the number of nodes can be very large (over 80,000, depending on the amount of memory available at the time of loading the program as well as the user's choice), and the pixel size of the monitor cannot be less than 1, in case the view port's width or height cannot accommodate all of them some outer rows and/or columns will be missing (scroll bars are unsuitable for technical reasons). In the main however the overall patterns of affinity relationships will still be discernable.

(5) Video - Node regions
The arrangement of in- and output nodes, and the inner matrix nodes (dedicated to video, audio, keyboard) are shown. Their respective distributions are set in the Settings window, AI Engine tab → (12) Inner regions (%) and (13) Output regions (%). It is a copy of the same in the Main window and reflects what has been selected there and vice versa. See the entry Main window → (25) Display - Node regions for the colour scheme used.

(6) Video - Node values
The colour spectrum is used to interpret the numerical values of the matrix nodes; lower to higher values from left to right.

(7) Video - Affinity values
The colour spectrum is used to interpret the affinities of the matrix nodes. An affinity is defined as low if the difference between the numerical values of any two nodes is relatively large. The affinity is defined as high if the difference is relatively small. Note that the differences per se between any two values are ascertained: '50' and '60' would yield the same affinity value as '1267' and '1277'. Selecting this option increases the cycle time.

(8) Video - Web cam input image
The Main window's view port shows the direct output from the web cam. Its function is similar to (11) Web cam - Web cam direct in the Main window, but unlike the latter it can be selected as the AI Engine is running. Therefore the web cam data are still sent to the AI Engine.

(9) Video - AI Engine input image
The Main window's view port shows the output from the web cam as OCTAM sees it. It means the number of input video nodes determines the resolution of the resultant image. The smaller that number the coarser the image. It is similar to an organic eye being more or less capable of distinguishing what comes through its lens due to the accuracy of its receptors.

(10) Video - Web cam input image + output
The Main window's view port shows OCTAM's version, overlaid with the data from the AI Engine's video output nodes. Different colours here and there reflect the results of relevant node states as they have been affected by the various processing options.

(11) File ops... - Save I/O
All the settings under this tab are saved to a file.

(12) File ops... - Load I/O
The previously saved settings under this tab are loaded from a file. The text next to the buttons shows the name of the file.

(13) File ops... - Apply I/O
The parameters from the file whose name appears to the right of the buttons is applied to the settings under this tab.

(14) Audio - Direct from web cam
The sound captured by the web cam's microphone is played directly to the speaker(s) (1 channel). (13) Web cam - Video ON and (14) Web cam - Audio ON in the Main window must be selected. If (19) ShapeWorld - ShapeWorld audio ON in the Main window is activated this option is unavailable. The audio input to the AI Engine is not affected.

(15) Audio - Output back to AI Engine
Similar to (2) Video - Feed video output back to AI Engine above, except now the audio output data are substituted for the web cam's data. (13) Web cam - Video ON and (14) Web cam - Audio ON in the Main window must be selected. If (19) ShapeWorld - ShapeWorld audio ON in the Main window is activated this option is unavailable.

(16) Direct from web cam + AI Eng output
Audio from the web cam is mixed with the audio output from the AI Engine. (13) Web cam - Video ON and (14) Web cam - Audio ON in the Main window must be selected. If (19) ShapeWorld - ShapeWorld audio ON in the Main window is activated this option is unavailable.

(17) Audio - From AI Engine
The audio data from the AI Engine's audio output nodes are directed to the speaker(s) (1 channel). Since at first the data represent a series of integers and nothing more, in order to turn them into a digitally viable sound they have to be combined with a wave form that makes sound possible. What follows are the relevant options. The playing time is adjusted according to the current cycle time of the AI Engine (it starts at the beginning of the cycle and stops at its end). (13) Web cam - Video ON and (14) Web cam - Audio ON in the Main window must be selected. If (19) ShapeWorld - ShapeWorld audio ON in the Main window is activated this option is unavailable.

(18) Audio - Wave form only
If checked, the wave form used in the following options (sine, square, saw tooth, etc) is played without the audio output data. The playing time is adjusted according to the current cycle time of the AI Engine (it starts at the beginning of the cycle and stops at its end). Hence it will always sound the same. If unchecked, the audio output data are inserted into the selected wave form.

(19) Audio - Output: spread across
The general configuration of a wave file (used here to play sound) consists of chunks which make up the entire length of the file. With this option the audio output data are spread evenly across these chunks.

(20) Audio - Output: periodic
The audio output data are spread repeatedly into every chunk (see directly above).

(21) Audio - Wave form used
The various underlying wave forms used to produce sound. The options are:
    sine - an ordinary sine wave;
    square - an ordinary square wave;
    saw tooth - an ordinary saw tooth wave;
    triangle - an ordinary triangle wave;
    machine 1 - a specially constructed wave form that sounds like, well, a machine;
    machine 2 - a derivative to machine 1, but now the 'machine' sounds more metallic;
    gong bell - a wave form that resembles a combination of a gong and a bell;
    OCTAM's song - various mathematical twists and turns which, under the right conditions,
       could almost be described as a song.

Again, (13) Web cam - Video ON and (14) Web cam - Audio ON in the Main window must be selected. If (19) ShapeWorld - ShapeWorld audio ON in the Main window is activated this option is unavailable.

Note: Given the configuration of the .wav file type, all of the above variants are influenced by (1) the length of time played (the cycle time available), (2) the sample rate applied (subject to several influences), (3) the base frequency selected, (4) the length of the audio data added to the wave form, and of course (5) the audio data themselves. In most cases the results will be valid (although perhaps not to everyone's taste), but if not, even a small change can make a considerable difference. See (22) Audio - Sound time line as percentage of cycle time and (23) Audio - Frequency.

(22) Audio - Sound time line as percentage of cycle time
The sound time line (made up of the chunks mentioned under (19) Audio - Output: spread across above) is usually not in sync with the time available for playing the entire sound (the cycle time). The slider allows the former to be mapped as a percentage of the latter (default is 50) into the chunks. This means the higher the percentage, the quicker the sound will be played and at a higher pitch (it almost acts like a sample rate - the same notes played at a high sample rate will go through the entire note range quickly because the overall frequency is higher, whereas a low sample rate will 'drag out' the notes, the overall frequency will be lower and the duration of play is longer). Thus the lower the percentage, the slower the sound will be played and at a lower pitch. Should the theoretical duration be longer than the cycle time the sound will be stopped in time. That's the principle; what really happens depends on the integers from the audio output nodes and whether these data are spread across or used in a periodic fashion (see above, (19) Audio - Output: spread across etc). Experiment!

(23) Audio - Frequency
The underlying frequency used in the respective wave form. The value in the text box for (24) Audio - Frequency multiplier to the right shows the factor by which the default frequency of 440Hz is being multiplied as the slider is moved. The value can be changed in the text box in order to fine-tune the frequency. Depending on the underlying wave form and the data from the audio output nodes even a very small change can make a considerable difference to the sound. The Set to 1.0 button in between sets the factor back to 1 and so the base frequency is 440Hz once again.

(24) Audio - Frequency multiplier
See (23) Audio - Frequency above.


anchor arrowShapeWorld tab

The options for controlling the shapes in ShapeWorld. They can be set at any time but will only come into effect once ShapeWorld is started in the Main window, and they can be changed at any time during the running of ShapeWorld (although the effect may not be immediate).

Settings window 4

In order of appearance, left to right, top to bottom:

(1) ShapeWorld - Wire mesh
Rather than rendering the surface of the shapes, their wire mesh is shown. Since the surfaces are not transparent (except for some texture effects) checking this option can aid in identifying what basic shapes are participating in the overall form. It also makes their 'spine' visible, the line around which the shapes are constructed. So for example, if you're wondering whether the spiral is really there, the wire mesh will show it through the centre line even if its body is obscured by other types. See (6) ShapeWorld - CylinderFlower 2 for more.

(2) ShapeWorld - Draw type
Each of the 12 following options represents a distinct way to draw the shapes in OpenGL. The default is TRIANGLE_STRIP where the surface is rendered completely. Hovering the mouse cursor over each option brings up a tool tip showing the type. Depending on the configuration of the shapes the effects can be interesting. Any combination can be selected, but the default option hides any other. They can also be used with Textures (see below).

(3) ShapeWorld - Display size
Formats the ShapeWorld window. The default is 640 x 480 (4:3). Sizes range from 320 x 240 to 1600 x 1200 in the 4:3 format, and from 640 x 360 to 2560 x 1440 in the 16:9 format. To change the display size use the dropdown box to make your selection. The selection will come into effect once ShapeWorld has been stopped and restarted. The new size is stored. The F1 key toggles to the maximum size for the monitor if the ShapeWorld window has focus.

(4) ShapeWorld - Z adjustment
The shapes change in response to the video output from the AI Engine, which includes repositioning along the x, y and z-axes. With this option the shapes are zoomed out away from the viewer should their size become too large for the window. Since that adjustment operates in tandem with the AI Engine cycles and the frame-by-frame rendering of the shapes, the effect may not always be immediate.

(5) ShapeWorld - Select all
Selects all shapes, and not the knots. (Torus is treated as a 'knot' rather than a shape, see (6) below). There are 8 basic shapes which can be found in nature and architecture, either singly or in combination: cylinder, block (rectangular 'cube'), cone, pyramid, plane, sphere, spiral, torus. Arguably the last is merely a cylinder forming a ring, but to draw them each one has its own distinctive algorithm. In ShapeWorld there is one single algorithm combining them all, and various parameters determine which shape type participates (one code to draw them all, one code to bind them!). Their parameters together with others are defined by the AI Engine's video output. In addition, each shape type has its own audio wave form and the AI Engine's audio output defines a series of parameters there. Therefore the resultant audio (2 channel) is influenced by the geometric configuration, and vice versa. The audio is switched on with (19) ShapeWorld - ShapeWorld audio ON in the Main window.

(6) ShapeWorld - CylinderFlower 2
Any combination can be checked. Cylinder to Spiral are shapes, Torus to Flower 2 are treated as knots. The difference lies in the use of the respective parameters. For shapes the variables are placed within sections designed to define particular point-to-point edges, whereas to achieve knots the parameters are subject to trigonometric functions such as sine and cosine. In other words, they are treated similar to vector-type definitions, in contrast to the raster type in 2-D drawing. The Torus and Trefoil types use sine and cosine to draw the shapes in a forward fashion around their centre line, although the Cylinder to Spiral parameters may obscure the effect at any given time (the wire mesh mode makes the centre line visible). Flower 1 and Flower 2 are somewhat different. Sine and cosine can be seen as a forward-moving interpretation of parameters (see Sine and Cosine for a graphical illustration). This is fine for conventional knots where the shape is defined starting at one end and finishing at the other, something the overall drawing algorithm requires anyway. Now consider a flower (or an onion if you will). At any given slice across the shape (the shape is constructed one slice after another along the centre line defining its direction) the algorithm has to know where to draw a petal at that moment. But that it cannot do since the layout of the petal would have to be set at the beginning of the construction, information which is lost as soon as we move away from the starting point. This is where tangent comes in (see Tangent and Cotangent Graphs). Just as sine and cosine use the ongoing definitions of a and b (the sides of the triangle in relation to its hypotenuse), tangent (a / b) produces a value which can be used as a previous definition of a and b. Hence although still moving forward as the shape is drawn, including a tangent in the formula produces values which can be seen as pointing back along the centre line. The result is a shape with nested elements, like the petals in a flower. Flower 1 is stretched, whereas in Flower 2 the effect is more pronounced so that the overall shape becomes more like a sphere. It also means the shape becomes more lively, since even a single changed parameter value affects the entire structure.

(7) ShapeWorld - Deselect all
Deselects all shapes (not the knots).

(8) ShapeWorld - Sync changes with cycle time
Each shape-changing parameter has a certain range within which it can be redefined by the AI Engine's video output. The changes follow a series of incremental steps specific to each parameter. A new value is reached by following the steps from the previous value and once it has been reached (and only then) a new value is accepted. With this option the magnitude of the increments is determined by the overall cycle time, that is the longer the time the smaller the steps between one value and another. The shorter the cycle time the larger the increments. Depending on the AI Engine output, selecting this option can result in either speeding up the shapes' movements or it can slow them down. Note that now the incremental steps for each parameter are such that they all reach their respective targets at the same time. Any animation effect due to varying movements across the parameter ranges no longer exist. If the shape seems to stall because of this, click (9) Reset directly below.

(9) ShapeWorld - Reset
All the shapes and knots are deselected and the algorithm is reset to its starting configuration. The button changes to "Reset OFF" and until clicked again no input is accepted. When clicked again the previous selection of shapes and/or knots is recalled and the animation continues with whatever input presents from then onwards. On the odd occasion a combination of parameter values causes the shapes to settle into a functional basin from which they can take a long time to escape. Resetting may push them out of that state.

(10) ShapeWorld - Rainbow colours
The colouring of the shapes is achieved through lighting, and this option circles the light through the colours of the rainbow. If unchecked, the colour is defined by (12) Default shape - Custom shape. Either way, Textures (see below) provide their own colours and this selection has no effect on them.

(11) ShapeWorld - Default bckgnd - Custom bckgnd
Select the default background colour "Otoom blue" (the colour inside the inactive view port in the Main window), or any other colour from the dropdown box. It is not affected by the Textures.

(12) ShapeWorld - Default shape - Custom shape
Select the default colour for the shapes (a reddish hue) or any other colour from the dropdown box. The Textures provide their own colours and this selection has no effect on them.

(13) ShapeWorld - Additional colours
An additional factor which accentuates the current colouring. The effect is also influenced by the angle of the light rays as the shapes change their orientation. Works with (12) Default as well as Custom shape. Has no effect on Textures.

(14) ShapeWorld - Enable textures
When checked the shapes are subject to the various texture effects provided here. Any general colouring (Rainbow colours, Default shape, etc) is bypassed.

(15) ShapeWorld - Enhance
Certain factors used in the calculations of the texture effects are switched on, mainly related to creating highlights. Needs to be checked for the (18) ShapeWorld - Specular value slider to have any effect, although the slider can be moved anyway.

(16) ShapeWorld - Reflection only
Does not apply to (17) Tropical sea and Dark sea because these textures are not based on reflections. In the rest (15) Enhance is bypassed since reflections have their own highlights.

(17) ShapeWorld - Gold → Dark sea
Several textures that define the appearance of the shapes. Any other colouring (Rainbow colours, Default shape, etc) is bypassed. The overall effect is a function of the shapes' orientation and (15) ShapeWorld - Enhance as well as (16) ShapeWorld - Reflection only, if applicable. Especially (15) and (16) can change the appearance dramatically. Keep in mind that the shapes morph constantly.

(18) ShapeWorld - Specular value
Move the slider to change the factor involved in defining the highlights. The overall effect is influenced by the shapes' ongoing orientation.

(19) ShapeWorld - Reflection intensity
Not applicable to (17) Tropical sea and Dark sea. Move the slider to influence the factors involved in calculating the reflection effects. In the rest (15) Enhance is bypassed since reflections have their own highlights. The effect on the relevant textures can be significant.

(20) ShapeWorld - Save texture
Saves the settings under Textures to a file. The file name appears to the right of the buttons.

(21) ShapeWorld - Load texture
Loads previously saved texture parameters from a file.

(22) ShapeWorld - Apply texture
The texture parameters in the file whose name appears to the right of the buttons are applied to the texture settings.

Please note: the shapes appearing in the ShapeWorld window are subject to the ongoing output from the AI Engine, which in turn is a function of the AI Engine's internal states. How lively - or how sluggish - their performance turns out to be depends on the internal processing but ultimately on the input from the web cam. There are times when the internal states have settled into a pattern of affinity relationships it is rather hard to get out of (this could be compared to listening to a lecture with the speaker droning on and putting the audience to sleep; then - a certain word suddenly grabs their attention). So, either wait (perhaps even a minute or two), or use the (9) ShapeWorld - Reset button, or redirect the web cam, or switch between the shape configurations.


anchor arrowShapeWorld window

Clicking (17) ShapeWorld - Start in the Main window opens ShapeWorld in a separate display. The size of the window can be set using (3) ShapeWorld - Display size under the ShapeWorld tab. ShapeWorld needs to restart for the new selection to have an effect. Several options are available via hotkeys (see below).

The image below shows a shape with additional colours applied.

ShapeWorld window

Hotkeys for ShapeWorld (needs focus):

F1 - toggle maximum window
F2 - release mouse from window
F3 - toggle wire mesh
Mouse button left-click - rotate shapes
Mouse button right-click - reset shapes to default orientation.

The options are also listed in a tool tip when hovering the mouse cursor over (20) ShapeWorld - Show hotkeys tooltips in the Main window.


anchor arrowNote

All of the above settings do not change the innate nature of the AI Engine and hence OCTAM overall. They can be seen as the equivalent to the 'parameters' in organisms which control or configure such faculties as the brain's neuronal dynamics, the eyes, ears, and voice box with its vocal chords and muscles. Here they can be changed at will and on the fly. And consider -

Each main matrix node represents an element matrix with its own nodes. For example, 25,600 main matrix nodes (ie, 160 x 160) means 25,600 element matrices, and if the latter consist of 100 nodes each that amounts to 2,560,000 nodes overall (all matrices are squares). Increasing the element matrix sides by 1 increases its size to 121 nodes (11 x 11), and with 25,600 of them the total number of nodes has risen to 3,097,600.

On the other hand, if the main matrix side is increased by one (ie, 161 x 161) it now contains 25,921 nodes and/or element matrices, or 2,592,100 nodes overall if the latter have 100 nodes each. Therefore, how the AI Engine is deployed matters significantly.

anchor arrow


© Martin Wurzinger - see Terms of Use