Homepage: https://github.com/emacsorphanage/ecasound
Author: Mario Lang
Updated:
Interactive and programmatic interface to Ecasound
This file implements several aspects of ecasound use: * A derived-major-mode, from comint mode for an inferior ecasound process (ecasound-aim-mode). Complete with context sensitive completion and interactive features to control the current process using ECI. * Ecasound Control Interface (ECI) library for programmatic control of a Ecasound process. This allows you to write Ecasound batch jobs in Emacs-Lisp with Lisp functions and return values. Have a look at eci-example and ecasound-normalize. * ecasound-ewf-mode, a mode for editing .ewf files. Usage: You need a very recent version of ecasound for this file to work correclty. Something >=2.1dev12, this currently means you need to compile it from CVS. Put ecasound.el in your load-path and require it in your .emacs. Set `ecasound-program' to the path to your ecasound executable. (setq load-path (cons "/home/user/elisp") (require 'ecasound) (setq ecasound-program "/home/user/bin/ecasound" eci-program "/home/user/bin/ecasound") Use M-x ecasound RET to invoke an inferior ecasound process. For programmatic use of the ECI API, have a look at `eci-init', `eci-command' and in general the eci-* namespace. Bugs: The function ecasound-copp-increase is used to allow the use of +/- on the copp-select button to change the value of the number. Strangely, if this function is used, the number field changes, but also does no longer be a field, i.e., it can no longer be edited. Any ideas? Todo: * Convince Kai to make NetECI look and behave exactly like ecasound -c. This would make it very easy to make neteci connections using the current code. Just set eci-program to (host . port). * Cache things like c-, cs- and cop-list as well as c-, cs- and engine-status in buffer-local variables like it's already done for cop- and ladspa-register. * Tweak the mode-line to include status informations like engine-status or inputs/outputs/chains or the current selected cs or chains. * Add NetECI support to fetch status info (eci-hide-output t calls) via a separate, not visible buffer. * Write eci-cop-register alike support for preset-register. * Copy documentation for ECI commands into eci-* docstrings and menu :help keywords. * Expand the menu. * Bind most important interactive functions in ecasound-aim-mode-map (which layout to use?) * Collapse all the duplicate code into a macro and an alist which defines the available eci commands. (This seems rather complicated and is probably not worth the effort.)