The Ekdahl FAR - Command reference V1.1
Introduction
The Ekdahl FAR V1.1 introduces the concept of modules. A module can contain any number of commands as well as other modules. Furthermore any number of modules of the same type can exist within a context, these are addressed using classic C-style array indexing with the help of brackets ("[ ]"). Extending on the classic usage, multiple indexes can be addressed simultaneously by either comma-separating the objects ("[0,3,4]") and using ranges ("[3-6]"). Modules can be either internal or external, meaning that they may all physically exist within a single hardware object, or they can be be remote-controlled devices. From a user perspective this however makes no difference as they will appear the same.
While all modules have their own set of commands, there are certain commands that all modules must implement and can thus be accessed anywhere within the module hierarchy. There are also base commands that always exist within any given FAR ecosystem as well as product-specific base commands.
Basic commands
The module commands that are required to be implemented in all modules and that can thus be accessed from anywhere are
| Long name | Short name | Parameters | Description |
|---|---|---|---|
| list | ls | hidden/h:modules/m:commands/c:instances/i:instancecounts/ic:recursive/r | Lists all commands and modules under the current module depending on the parameters given; 'hidden' includes normally hidden commands, 'modules' includes any submodules, 'commands' shows commands, 'instances' shows data for each individual instance of a module, 'instancecounts' includes number of instances of each module, 'recursive' lists all child modules / commands. No parameters defaults to showing all commands and modules recursively with instance counts. It doesn't show per-instance data or hidden commands. |
| help | help | recursive/r | Shows a brief explanation of all commands and modules, shows the help for all submodules as well if 'recursive' |
| dumpdata | dump | recursive/r | Dumps all data saved for the current module, will list the data of all submodules as well if 'recursive' |
The base commands are as follows
| Long name | Short name | Parameters | Description |
|---|---|---|---|
| version | ver | - | Gets the current firmware version |
| debugprint | dp | command|usb|hardware|undefined|priority|error|inforequest|expressionparser|debug:1|0 | Turns on or off serial feedback for the given item |
| requestinfo | rqi | command | Retrives any data saved for a command, if applicable |
| saveallparameters | sap | - | Saves all avaliable parameters |
| loadallparameters | lap | - | Loads all avaliable parameters |
| resetallparameters | rap | - | Resets all saved parameters |
| reset | rst | 1|0 | Resets the Ekdahl FAR, conditional |
| nick | nick | name | Sets the nickname of this unit |
| nooperation | nop | - | Do absolutely, positively, nothing. Useful for testing and interfacing with computers, it's a good way to know that the unit is alive and responding since a "nop" is being returned as a response upon reception. |
| uservariable | uv | variable(0-9):value | Set user variable 0-9 to 'value' |
| expressionparserevaluate | epev | expression | Evaluates an arithmetric expression and sends back the output, all variables and functions that can be used in any command string can also be used here. Useful for testing expressions. |
| ifequal | ife | variable:comparator:truecommandstring:elsecommandstring | Performs [IF [variable] EQUALS [comparator]] then add [truecommandstring] to the que if TRUE, otherwise add [elsecommandstring]. |
| ifgreater | ifg | variable:comparator:truecommandstring:elsecommandstring | Performs [IF [variable] > [comparator]] then add [truecommandstring] to the que if TRUE, otherwise add [elsecommandstring] |
| ifless | ifl | variable:comparator:truecommandstring:elsecommandstring | Performs [IF [variable] < [comparator]] then add [truecommandstring] to the que if TRUE, otherwise add [elsecommandstring] |
| freeram | ram | - | Shows free RAM memory |
The base also contains the following modules:
| Long name | Short name |
|---|---|
| pluginhandler | ph |
The Ekdahl FAR stand alone single string unit
The Ekdahl FAR stand-alone single string unit offers these commands
| Long name | Short name | Parameters | Description |
|---|---|---|---|
| calibrateall | ca | - | Performs all calibration routines on the selected bow, see below for routines performed |
| calibratebowspeed | cbs | - | Finds the minimum and maximum bow speed of the selected bow |
| calibratebowpressure | cbp | - | Finds the minimum and maximum bow pressure of the selected bow |
| calibratemute | cmu | - | Calibrate mute settings |
| pickupstringfrequency | psf | - | Returns the fundamental tone calculated from the current audio signal if apliccable |
| pickupaudiopeak | pap | - | Returns the peak amplitude of the current audio signal |
| pickupaudiorms | par | - | Returns the RMS amplitude of the current audio signal |
The Ekdahl FAR also contains the following modules
| Long name | Short name |
|---|---|
| bowingwheel | bw |
| mute | mu |
| solenoid | so |
| controlbox | cb |
| midiconfigurationhandler | mcf |
The "bowingwheel" module
The "Bowingwheel"-module contains everything needed to interface with a single bowing wheel. Each bowing wheel has its own harmonic series, pressure actuators and direct hardware interface. It contains the following commands.
| Long name | Short name | Parameters | Description |
|---|---|---|---|
| speedmode | sm | 0|1 | Bow motor speed mode, 0 = Automatic and 1 = Manual. Automatic mode means that the bowing wheel will automatically turn off after the motor timeout has been reached after being put into rest mode |
| motortimeout | mt | ms | Bow motor shutdown timeout after bow having been put into the rest position |
| pidenable | pe | 0|1 | Sets the bow PID on/off |
| motorfaultcommands | mfc | commands | Commands to execute when a motor fault is tripped - !WARNING! Can ruin your instrument if changed |
| motoroverpowercommands | moc | commands | Commands to execute when motor is over the power limit - !WARNING! Can ruin your instrument if changed |
The modules in the "Bowingwheel"-module are as follows