Midi-keyboards must have MIDI connectivity. Please check information about MIDI on Internet ( e.g. this page ).
Plug the keyboard on your computer. Start Expresseur.
The Midi-In keyboards must be enabled with the menu "Setting/Midi...".
To unvalidate definitively a Midi-in, edit the file expresseur.lua in the software directory, and add the Midi-in name in the list of non-valid Midi-in devices.
Midi-audio-expander devices translates MIDI to audio sounds.
Advantage : no latency, no CPU flooding, no noise, no complex computer tuning. It's perfect for users who do not want to manage computer tuning, or with "small-CPU" computer. It suppresses all risks about latency (delay between the press of a touch and the sound-rendering).
Example of cheap and efficient Midi-audio-expander : the X3MB from Serdashop
Plug the Midi-audio-expander on your computer, using MIDI cable or USB. The Midi-audio-expander will be automatically recognized by Expresseur on start-up.
In the menu mixer of the Expresseur, link tracks to the Midi-audio-expander. The mixer will propose the list of instruments available for this Midi-audio-expander.
The list of instruments available in the Midi-audio-expander is in the directory "ExpresseurV3/instruments". The syntax of this file is described later.
A Virtual Instrument ( VI ) is a file to render an instrument sound from MIDI-out events.
Expresseur can load two kind of VI :
Risk : latency tuning is critical (delay between the press of a touch and the sound-rendering). As CPU and card-sound are not dedicated to this usage, latency must be decreased, keeping quality of sound. Bad tuning can generate random noise, latency, CPU flooding, ... It often needs "high-CPU" capacity. A MIDI-audio-expander device is easier to use (cf. previous chapter).
Example of nice VI : pianoteq for fantastic piano rendering (and harpsichord, ... )
The VI files, and its list of instruments ( .txt extension ) are in the directory "ExpresseurV3/instruments".
In the menu mixer of the Expresseur, link tracks to the VI you want.
The list of instruments available in the VI is in the directory "ExpresseurV3/instruments". The syntax of this file is described later.
The VI is plugged in the default audio output, selected in the menu Setting/Audio.
The VI can be plugged in another audio-output, adding "@x" at the end of the file name. For example : "guitar@SD-50.sf2" plugs this sound-font on audio-output SD-50. The list of audio-outputs are visible in the menu Setting/Audio.
A lot of VI are available on Internet. The Expresseur package contains these SF2 sound-fonts :
An electronic MIDI piano contains three components in an "all-in-one" box :
Advantage : no latency, no CPU flooding, no noise, no complex computer tuning. It's perfect for users who do not want to manage computer tuning, or with "small-CPU" computer. It suppresses all risks about latency (delay between the press of a touch and the sound-rendering).
Connecting a Midi piano to Expresseur ( via Midi interface, or USB ), will connect the Midi-keyboard as input, and the Midi-audio-expander as output. Refer to the previous sections for more information.
Expresseur sends a "local-off" command to the piano. This command disconnects the keyboard from the internal Midi-audio-expander. Be sure that your piano supports local-off !
Expresseur has his own syntax to describe quickly a MIDI-instrument : its a free-text name, followed by MIDI-commands between parentheses.
Example :
The syntax does not accept white-spaces.
This syntax is used in :
The SF2-expander embedded in Expresseur understands this MIDI-messages :
The instruments are played on the MIDI channel selected in the mixer. If option "extended channel" is selected, the intruments use more than one MIDI-channel to play the notes, allowing overlap of a same pitch on the same MIDI channel. Uncheck "extended channel" if the MIDI expanders are monophonic on all channels for a same pitch (organ, ... )
Default MIDI settings are available in menu setting/MIDI-presets.
The list of triggers can be exported(imported) in(from) a file, using the menu "setting/export(import) settings". It is possible to select the settings which are exported (mixer, triggers, .. ), and to set a description of theses settings in a multi-line text. When placed in Mydocuments/ExpresseurV3/ressources directory, this setting appers in the list of menu setting/MIDI-presets
The menu "setting/MIDI-settings" open a dialog box to edit all the triggers.
The Midi-event are the best option to trigger an action. Any device ( pedal, keyboard, tablet-midi, ad-hoc device ) can be used for this purpose.
ALT+PC-key can be linked to the MIDI-shortcut.
The triggers can be sorted. When a trigger is detected in the list ( top to bottom ) , the detection process can be stopped or can be continued ( to have more than one action for one event ).
When editing a trigger, all the valid midi-in devices are opened (cf. LUA scrip expresseur.lua function MidiInIsValid). Any key-in on these devices are displayed in the window. Double-click on a MIDI-event loads the tuning in the shortcut. The MIDI-events which can be used are :
A parameter can be passed to the LUA function, associated to the trigger.
The list of actions which can be attached to the triggers is described in the LUA-script expresseur.lua ( menu setting/LUA files), in the directory of the software, in the table "actions" :
List of default actions available in expresseur.lua defined in table "actions":
In addition to the "ALT+PCKey" described in the previous chapter , One-key shortcuts are pre-defined, as visible in the pictures above.
You must use menu "setting/One-key config" to setup the keyboard disposal of the 4 lines of 10 keys (with green border on the picture above). For example in US keyboard : 1234567890 qwertyuiop asdfghjkl; zxcvbnm,./
In the LUA script, there are plenty of options to drive the logic. Please contact frevolle@gmail.com to discover, understand, complete these features.
In expresseur.lua (name can be changed in the GUI):
This expresseur.lua loads and used three lua scripts :
To start with a new score, open the MusicXML file. Information about the score ( ornaments, structure, ...) is pushed in a text file, the "parameters-file", visible in the left part of the screen.
The parameters-file has the same name as the MusicXml file, but with a "txt" extension.
It is possible to have different parameters-files, which use one musicXML file, to be able to have different interpretations.
For regular use, reopen the text parameters-file ( not the musicXML file ). It will load the attached musicXML file.
If the structure of the musicXML file has too many changes ( parts, .. ), re-open the musicXML file itself as the first time.
To make a musicXML easier to play with Expresseur, it can be useful to first simplify the original score before to exprt it in musicXML format. All ornaments end sequences can be added later in the text parameter-file :
The parameter-file contains these sections :
List of ornaments recognized from the musicXML file :
Example of Marks in parameter_file :
SET MARKS :
1:Anachrouse
2:A
4:A1
5:B
PLAY MARKS :
Anachrouse
A
A1
A
B
Load a text file, which contains a list of chords.
To follow the chords on a score, load a PNG image file containing the score, with the same name than the text file.
Free text line can be added between the chords, with a dash at the beginning of the line, to avoid compilation of such free-text.
Recognized chords and keywords are in blue.
"Sections" can be declared. A section has these parameters :
The "sections" are used in "parts" to reorganize quickly the score. A part has two parameters :
Example to play in tone C, looping on parts AAB, with a coda which can be smoothly trigerred ( by a key , .. )
section(A,C)
C G
-- free text
section(B)
C F G
section(coda)
C G C
part(infinite,loop)
A A B
part(finish)
coda
Rather than using a fixed list of chords, you can describe paths between chords, allowing the musician to improvise the chords during the performance.
The paths are described with a list of nodes
The syntax of a node is : my_label = chord > next_label_1 , next_label_2 , next_label_3 ...
It is possible to link each node on a graphic bitmap aside the technical list of nodes. It allows to follow the labels and the paths with a smart graphical representation (instead of the technical list of nodes)
The LUA script "texttochord.lua" precalculates these scales. Each pitch ( except the bass ) is decorated with the next pitches of the chord. In addition, the list of alterations ( the "black keys" ) are calculated. These scales are triggered i the menu "setting/MIDI-settings"
Expresseur uses LUA to script the music logic. LUA is simple but powerfull script language. It has a very efficient pre-compiled engine.
The LUA gives the possibility to add-change easily the music logic.
Example:
The Graphic User Interface ( GUI ) uses by default these LUA scripts :
To develop new behavior with LUA, it is possible to edit the LUA scripts in any text editor. But it is recommended to use IDE to test before to implement ( e.g. zerobrane )
The global API-LUA Expresseur package can be used without the GUI. The expresscmd.exe is delivered as an example, to build a command-line tool.
"expresscmd" is a tinny command line tool, already available in the package. You have just to script your music logic, using LUA language.
This tinny "expresscmd" does this :
Recommendation :
The LUA script loaded by basslua ( using the API, expresscmd, or the GUI ) must have :
To manage conflict of same pitch on same channel, the API uses the "extended midi-channel". One midi-channel can be "linked" to additional channel on the same device, to play multi note-on on same pitch/channel.
An LUA script can use the functions of luabass C-module ( loaded by default in global _G ) :