| 
 | 
 | 
[[__TOC__]]
 | 
| 
 | 
 | 
A MATLAB plugin is a folder located in the user home dir.   
 | 
| 
 | 
 | 
Documents\AnyWave\Plugins\MATLAB on Windows.   
 | 
| 
 | 
 | 
/home/username/AnyWave/Plugins/MATLAB on Linux.   
 | 
| 
 | 
 | 
/users/username/AnyWave/Plugins/MATLAB on MacOS.   
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# Requirements
 | 
| 
 | 
 | 
MATLAB.     
 | 
| 
 | 
 | 
AnyWave will detect the MATLAB installation when starting but it is also possible to set the path to the MATLAB installation in the Edit->Preferences menu.    
 | 
| 
 | 
 | 
About standalone (compiled) plugins: The matching MATLAB runtime must be installed in your system.     
 | 
| 
 | 
 | 
On Windows there is nothing special to do, if the Runtime is in the current system PATH, then the standalone plugin will find it.      
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 1. Use the Plugin Creation Assistant
 | 
| 
 | 
 | 
   
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 

 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 1.1 desc.txt
 | 
| 
 | 
 | 
This file is a simple text file that must contain the following lines:   
 | 
| 
 | 
 | 
*name = My Plugin*  
 | 
| 
 | 
 | 
*description = Do something on data*   
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 1.1.1 optional lines
 | 
| 
 | 
 | 
To tune up the behavior of your plugin you may add some flags to tell AnyWave what you plugin can do:      
 | 
| 
 | 
 | 
*flags=nodatarequired*        ->  this line will inform anywave that your plugin can run even if no data file is open.      
 | 
| 
 | 
 | 
*flags=canrunfromcommandline*  ->  this flag indicates that your plugin can be run from the command line.   
 | 
| 
 | 
 | 
You can combine flags by separating them with a colon (:)       
 | 
| 
 | 
 | 
flags=nodatarequired:canrunfromcommandline
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Put your plugin in a submenu, by adding the following line:   
 | 
| 
 | 
 | 
*category=Process:MyCategory:My plugin*   
 | 
| 
 | 
 | 
This line will create a sub menu called MyCategory in the Processes Menu of AnyWave and a link to launch the plugin.  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 1.2 main.m
 | 
| 
 | 
 | 
This is a MATLAB function you can create within MATLAB.   
 | 
| 
 | 
 | 
````matlab
 | 
| 
 | 
 | 
function main(varargin)
 | 
| 
 | 
 | 
args = anywave('init', varargin);
 | 
| 
 | 
 | 
% args contains all the properties related to AnyWave current data file and the plugin context.
 | 
| 
 | 
 | 
% my plugin code starts here
 | 
| 
 | 
 | 
````
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 2. Compiled plugin
 | 
| 
 | 
 | 
Using the MATLAB Compiler, you can create a standalone version of your plugin.    
 | 
| 
 | 
 | 
AnyWave can call the standalone version of your plugin if you add the following line in desc.txt:   
 | 
| 
 | 
 | 
*compiled plugin=nameofexefile*   
 | 
| 
 | 
 | 
Example for Delphos plugin, the desc.txt contains the line:   
 | 
| 
 | 
 | 
*compiled plugin=delphos.exe*   
 | 
| 
 | 
 | 
It is also strongly recommended to specify the version of the Runtime needed to run the plugin.    
 | 
| 
 | 
 | 
add a new line to desc.txt file:    
 | 
| 
 | 
 | 
runtime=version   
 | 
| 
 | 
 | 
For example with recent releases of MATLAB:   
 | 
| 
 | 
 | 
runtime=R2024b    
 | 
| 
 | 
 | 
You have to install the matching runtime version on your system.   
 | 
| 
 | 
 | 
AnyWave should detect it when starting up and when the time comes to run the plugin, it will setup the context to run the plugin with the required Runtime version.    
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# 3. check that AnyWave detects your plugin at startup
 | 
| 
 | 
 | 
Close and relaunch AnyWave, your plugin should appear in the Processes menu.
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
# IMPORTANT note about the init function 
 | 
| 
 | 
 | 
Before calling any anywave commands in your code,  call the init function this way:   
 | 
| 
 | 
 | 
````matlab
 | 
| 
 | 
 | 
args = anywave('init', varargin);
 | 
| 
 | 
 | 
````
 | 
| 
 | 
 | 
Be sure that your main function accepts varargin (cell array) argument.  
 | 
| 
 | 
 | 
````matlab
 | 
| 
 | 
 | 
function main(varargin)
 | 
| 
 | 
 | 
````
 | 
| 
 | 
 | 
This will ensure that your plugin can be compiled and run by AnyWave as a standalone application.   
 | 
| 
 | 
 | 
The args variable is a structure/dictionnay that contains all useful properties you may use in your plugin.  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
The anywave application path, the current plugin directory, etc. | 
 | 
 | 
\ No newline at end of file |