midifade - Provides faders generating midi-controller events


 midifade c13m71v120 c2m11v80 # 2 faders: cha2 cc11=80, cha13 cc71=120
 midifade -o 128:0            # outputs to port 0 of client 128
 midifade -N fade1            # sets Alsa-Client name to "fade1"
 midifade -v                  # prints the Version number
 perldoc midifade             # read the manual :-)


Midifade is a Curses and ALSA application which provides on-screen faders, to control various midi-controllers on various midi-channels.

It uses a simple user-interface: The Left and Right arrow keys move from one fader to the next, the Up and Down arrow keys adjust the value of the current fader by 1, the PageUp and PageDown keys adjust the value by 10, and the Home and End keys set it to maximum (127) or minimum (0).

The faders are always displayed sorted by channel-number then by midi-controller-number.

The available keystrokes are displayed in the bottom three lines of the screen.

Two versions are available, one in Perl and one in Lua, which should behave identically.
The Perl version uses the Curses CPAN module for the user-interface, and the MIDI::ALSA CPAN module to set up an ALSA client which can communicate with your synth.
The Lua version uses the minicurses Lua module for the user-interface, and the midialsa luarocks module to set up an ALSA client which can communicate with your synth.


-o 128:0   or  -o TiMidity

These examples play into the ALSA port 128:0, or into the TiMidity client. This option allows midifade to use the same port-specification as the other alsa-utils, e.g. aplaymidi and aconnect. For port 0 of a client, the ":0" part of the port specification can be omitted. The port specification is taken from the ALSA_OUTPUT_PORTS environment variable if none is given on the command line.
Since Version 1.3, you may supply a comma-separated list of ports, e.g. -o 20,128:1

If the ALSA port is specified as 0 then midifade will start up without connecting to anything. This allows you, for example, to use midifade in one xterm (assumed here to be starting up as ALSA-client 129 ; check with aconnect -ol) to control ecasound in another xterm:

 midifade -o 0 -N fade2 c0m9v102 c1m9v105 c2m9v96 c3m9v64
 ecasound -c -r -Md:alsaseq,fade2 \
  -a:1 -i drums.wav                -ea:200 -km:1,0,250,9,1 \
  -a:2 -i synth-chords.wav -epp:30 -ea:120 -km:1,0,150,9,2 \
  -a:3 -i bass-guitar_take-2.ewf   -ea:75  -km:1,0,100,9,3 \
  -a:4 -i brass-lead.wav   -epp:70 -ea:50  -km:1,0,100,9,4 \
  -a:1,2,3,4 -o loop,1 \
  -a:5,6 -i loop,1 \
  -a:5 -o alsa \
  -a:6 -o current-mix.wav

Here I chose midi-controller 9 because it isn't defined in General-MIDI, and therefore General-MIDI-labels, useless in this context, do not appear in the midifade screen.

Note that ecasound numbers the channels 1 to 16, whereas midifade numbers them 0 to 15.
See ecasound_manpage.html and examples.html in the ecasound documentation for details of the -ea and -km options.

-N my_name

Sets the Alsa-Client name, to my_name in this example.
This is useful in scripts, to be able to connect from a particular midifade by a known name.

The default Alsa-Client name is "midifade"


Prints version number.



This example starts midifade up with a fader on channel 14 (0..15), midi-controller 74 (0..127), set initially to a value of 123 (0..127). (In muscript, that would be expressed cha14 cc74=123).   Multiple arguments can be specified.   The c and m and v bits must be in that order, all in one word with no spaces.   The v bit is optional; its default value is 64.


The current versions of midifade are available
    at pjb.com.au/midi/free/midifade_pl for Perl,
    and pjb.com.au/midi/free/midifade_lua for Lua.
To install one, save it to disc, change its name to midifade, move it into your $PATH, make it executable,
and if necessary edit the first line to reflect where perl or lua might be installed on your system.

You will also need to install either the MIDI::ALSA and Curses CPAN modules for the Perl version,
or the midialsa and minicurses luarocks modules for the Lua version.


2.1, 20211228, midifade_lua now available
2.0, 20150809, a new fader with val=0 does not get given val=64
1.9, 20140907, -N my_name   sets the AlsaClientName
1.8, 20130323, keystroke D can now delete the only fader
1.7, 20120831, -o "string" works
1.6, 20120820, display_clientstr called at start
1.5, 20111201, if -o 0 then midifade starts up but connects to nothing
1.4, 20111103, uses the new MIDI-ALSA 1.11 to handle ALSA-ports by their names
1.3, 20111028, OutputPort can be a comma-separated list
1.2, 20111027, add-new-fader dialogue allows 3-digit controller-nums
1.1, 20111023, much irrelevant code eliminated; q asks y/n first
1.0, 20111022, first working version


Peter J Billam https://pjb.com.au/comp/contact.html


Based on the Curses and MIDI::ALSA CPAN modules,
or on the minicurses and midialsa luarocks modules.


 aconnect -oil