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.
It 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.
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.
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 version of midifade is available by http at
To install it, save it to disc, move it into your $PATH, make it executable, and if necessary edit the first line to reflect where perl is installed on your system. You will also need to install the MIDI::ALSA and Curses CPAN modules
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 http://www.pjb.com.au/comp/contact.html
Based on the Curses and MIDI::ALSA CPAN modules.