La version de votre navigateur est obsolète. Nous vous recommandons vivement d'actualiser votre navigateur vers la dernière version.

User's Guide

MuseScore 3.6 is a mandatory component

Expresseur uses MuseScore for the rendering of the scores. Please Install and setup MuseScore (V 3.6 or later) before to start Expresseur the first time. 

MuseScore is also useful to re-arrange the score according to your needs : simplification (less useless information), specific realization of ornaments (especially trills), ... Use the function File/Export to export your MuseScore score in ExpresseurV3 directory, using the compressed musicXML format (mxl suffix). Open this MusicXML format in Expresseur. More information on this page.

Connect MIDI-keyboards

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.

Connect MIDI-Audio-Expander 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). 

Click to enlargeClick to enlarge

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.

Load a Midi-Virtual-Instrument

A Virtual Instrument ( VI  ) is a file to render an instrument sound from MIDI-out events.

Expresseur can load two kind of VI :

  • SF2 soundfont ( .sf2 extension )
  • VSTi software ( .dll extension, limited to 64bits, without Graphic-User-Interface rendering ) 

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 :

Connect a Midi-Software-instrument

A software instrument is a standalone software which can receive midi events, and render audio-output. It is normally used to connect a MIDI-keyboard on its input to play music like a "piano".

click to enlargeclick to enlarge

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, taking care about the 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 VSTi : pianoteq for fantastic piano rendering (and harpsichord, ... )

To connect a software instrument on Expresseur :

  • Install a virtual MIDI-cable ( eg loopbe for PC users , or IAC for MAC users )
  • Select this virtual cable as Midi-out in the mixer of Expresseur
  • Select this virtual cable (and only this one ) as Midi-in on the software instrument

Connect Midi-Electronic-Piano

An electronic MIDI piano contains three components in an "all-in-one" box :

  • a Midi-keyboard
  • a Midi-audio-expander to convert Midi to audio
  • an audio-amplifier with loud-speakers

click to enlargeclick to enlarge

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 !


  • Score cursor is fixed : load the setting/midi-preset/full-keyboard. Test CTRL-O. Test any MIDI-key.
  • No sound : open the mixer. Select the right output interface for each voice.
  • latency :
    • avoid software expander like SF2, VST (difficult to tune). Prefer a hardware expander (eg Buran )
    • speakers : forget bluetooth. Even analog line-in can have latency (Boser Revolver Oglo-Loops, .. ) 
    • silent notes : on monophonic instruments, uncheck "extended channel" in the mixer

Modify the instruments

Expresseur has his own syntax to describe quickly a MIDI-instrument : its a free-text name, followed by MIDI-commands between parentheses.

Example :

  • piano on MIDI program 0 :  piano(P0)
  • a guitar on program 5, on right-pan ( control 10 ), with Midi-volume 80 ( control 7 ) : guitar_right(P5,C10/1,C7/80)
  • a program 5 on a bank MSB 1 : mysound(P1/5)
  • a program 5 on bank MSB 1 ,and bank LSB 4 : myothersound(P1/4/5)

The syntax does not accept white-spaces.

This syntax is used in :

  • The list of instruments available in the directory "ExpresseurV3/ressources". When Expresseur detects a new Virtual-Instrument (SF2, VSTi) in this directory, Expresseur extracts the list of instruments form the file (SF2 MIDI-programs, VSTi MIDI-programs or VSTi-Programs). The list is written in a text file, in the same directory, one instrument per line, with txt extension, and same name than the VI. This list can be modified (without useless instruments, or with your own instruments, adding controls, ..)
  • When a USB-Midi-Audio-Expander is connected, it is possible to create a list of instruments available for this device, making a text file with the same name than the device, extension txt, in the directory "ExpresseurV3/ressources", with one instrument per line.
  • The default list is the General-Midi ( "gm.txt" ), available in the directory "ExpresseurV3/ressources". This list is used for non USB MIDI-audio-expander. Add your own settings to adapt to your device.
  • The tuning of instrument "on the fly" within a score, with the ornament "instrument" ( cf section above for more detail ).

The SF2-expander embedded in Expresseur understands this MIDI-messages :

  • note-on / note-off
  • pitch-bend
  • program
  • channel-pressure
  • Control
    • 0 : bank selector
    • 1 : modulation
    • 5 : portamento time
    • 7 : volume
    • 10 : pan
    • 11 : expression
    • 64 : sustain
    • 65 : portamento
    • 71 : resonance level (0-127, 0=-64, 64=normal, 127=+63)
    • 72 : release time (0-127, 0=-64, 64=normal, 127=+63)
    • 73 : attack time (0-127, 0=-64, 64=normal, 127=+63)
    • 74  : cutoff level (0-127, 0=-64, 64=normal, 127=+63)
    • 84 : Set the portamento start key. the next note starts at this key (MIDI controller 84)
    • 91 : reverberation
    • 93 : chorus
    • 120 : sound-off
    • 121 : reset controllers
    • 123 : note-off
    • 126 : Set poly/mono mode
    • 100 : rpn msb
    • 101 : rpn lsb
    • 6 : rpn-msb = 0 : rpn-lsb :
      • 0 : Set pitch wheel range in semitones
      • 1 : finetune in cents (0-16383, 0=-100, 8192=normal, 16383=+100)
      • 2 : coarse tune in semitones (0-127, 0=-64, 64=normal, 127=+63)

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, ... )

Configure the MIDI triggers

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 :

  • noteon & off : both events trigger the shortcut.
  • noteon : only noteon triggers the event
  • control : any value of the control trigger the event
  • program

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" :

  • name  : displayed in the list of actions ( and menu if there is a shortcut)
  • help : displayed in the menu (and toolbar , if there is an icone)
  • icone : to display he action in the toolbar. The icone, format bmp 16x16, is stored in the directory "lua"
  • shortcut ( CTRL+HOME,CTRL+A, .. ) : to add the actions in the menu "actions" of the GUI
  • callFunction : the LUA function to call when the shortcut is trigerred.  ( "CallScore" and "CallChord" are called in priority if exists, according to the mode used in the GUI ) . These LUA functions have these parameters :
    • time : float
    • uid : unique id of the shortcut ( composed of the shortcut number, the device, the channel, and the pitch )
    • channel MIDI[1..16]
    • msg-type [1..16]
    • pitch MIDI [1..127] ; pitch of the note , or control-number, or program number
    • velocity [0..127] :  velocity of the note-on ( 0==note-off ) , or control-value
    • parameter  : as set in the menu edit/shortcut
    • indexKey[1..n] : index of the picth within the range of the selector. 1 means the minimum of the range
    • medianeKey[-n/2..0..n/2] : index of the pitch within the the range of the selector. 0 means the middle of the range
    • whiteIndex : idem indexKey, but taking in account only "white keys"
    • whiteMediane : idem medianeKey, but taking in account only "white keys"
    • black[0,1] : 0 means white key. 1 means black key.

List of default actions available in expresseur.lua defined in table "actions":

  • global / all note off : send all note off to all audio expanders. Parameter : "noteoff" (midi noteoff), "soundoff" (audio off) , "controler" (reset controller), all (midi, audio,controler)
  • global / playnote : play the note (midithru). Parameter : <track number>
  • global / main volume : set the main volume of the midi mixer. Parameter : <volume> (if <volume> not specified, use the velocity of the trigger) 
  • global / track volume : set the track volume of the midi mixer. Parameter : <volume> <track nr> (if <volume> not specified, use the velocity of the trigger)
  • global / lua value  : set the lua value. Parameter : <lua name> <value> (if <value> not specified, use the velocity of the trigger)
  • global / next file : go the next file of the list. Parameter <increment> ( if <increment> not specified : move to next file )
  • move / previous move : go to the previous move
  • move / first part : go to the beginning. Parameter "smooth" in improvisation mode : wiil move at the end of current part.
  • movre / previous part : go to the previous part. Parameter "smooth" in improvisation mode :will move at the end of current part.
  • move / next part : go to the next part. Parameter "smooth" in improvisation mode : will move at the end of current part.
  • move / previous measure : go to the previous measure. 
  • move / next measure : go to the next measure
  • move / previous chord : go to the previous chord
  • move / next chord : go to the next chord
  • move / repeat part : repat the part.  Parameter "smooth" in improvisation mode : will move at the end of current part
  • score / play : play the score chord. Parameter "legato" to play always legato, discarding note-off events. Parameter "arpeggiate=x" to arpegiate automatically with x milliseconds between notes (in addition to lua value score_delay )
  • chord / change chord : go to next chord. Parameter : "off" to change on note-off (for anticipation). 
  • chord / play scale : play the scale. Parameter : "chord", "penta"
  • chord / play chord : play the chord. Parameter : "up" "down" to select the way to arpegiatte
  • chord / play background : play the background
  • chord / play bass : play the bass . Parameter : "walking" to play a a walking bass
  • chord / pedal : set the pedal of the track. Parameter : <track name> ; "off", "legato" (all withe notes are legato), "pedal" (pedal during chord) 
  • chord / octave : set the octave of the track. Parameter <track name> ; <octave_shift>


Configure the PC-key shortcuts

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,./

One-key shortcuts for score-play :

  • Forte Meso-forte Piano Tacet : 8 tracks mixer. Values can be set in menu "Edit/Expression". A zero-value for Tacet set the track as "not played" (it re-calculates the score).
  • Goto : open the dialog-box to go to a measure nr, or a mark (with optinal repetition).
  • Off :  sound off the output
  • Ass , Ass : select assisted mode to play Expresseur score, or non-assisted mode to play real notes from the MIDI keyboard
  • +# , -b : transpose up-down the output
  • Play/view : open the dialog-box to select which track to play and/or view
  • Play legato : play the score always legato. No sensitivity, except the one tuned in the ornementations (accents, nuances, ..)
  • Arrows : move cursor within the score, note by note  or measure by measure
  • Page-down (or Tab ), Page-up ( or Back-Space ) : move to next/previous mark
  • Home ( or Escape ) : goto beginning of score
  • Return : return to the last move (useful to repeat and repeat a section )

One-key shortcuts for improvisation :

  • I .. VII : select a degree with its standard harmony. eg in C : C, Dm, Em, F, G, Am, Bm.b5
  • add7 : select a degree with its standard harmony plus a 7enth
  • # , b : up or down semi-tone the chord
  • M , m : Major or minor the chord
  • #5 , b5 : up or down the fith
  • M7, 7 : Major-7enth, or 7enth
  • chord , penta : select the scale to improvise 
  • leg , leg : automatic or manual legato of notes in the scale
  • Off :  sound off the output
  • Ass , Ass : select assisted mode to play Expresseur impro, or non-assisted mode to play real notes from the MIDI keyboar
  • +# , -b : transpose up-down the output
  • next chord & play : go to the next chord, and play the chord
  • move smooth : to change the section smoothly (on next chord)

keyboard imùprovisation LUAkeyboard imùprovisation LUA

Additional parameters between the GUI and LUA

In the LUA script, there are plenty of options to drive the logic. Please contact to discover, understand, complete these features.

In expresseur.lua (name can be changed in the GUI):

  • the Mixer can be changed/displayed in the menu "Edit/mixer", and the LUA script. These values canbe controlled by a MIDI-Ctrl event, adding a trigger in the "setting/MIDI-settings", with the action "mixer", and the parameter equal to the number of the track.
  • the LUA-table "values[valuename]" can be changed/displayed in the menu "Edit/LUA values", and the LUA script. These values canbe controlled by a MIDI-Ctrl event, adding a trigger in the "setting/MIDI-settings", with the action "LUA values", and the parameter equal to the name of this LUA-value.
  • the LUA-table "tracks[trackname]" is built by the LUA, and completed by  GUI ( according to current score ). The GUI completes the column of the LUA table
  • info.status : text to be dispayed in the statusbar#2 of GUI ( start text with 1 for statubar#1 )
  • info.action : action in the GUI
    • !text : messagebox in the GUI
    • @position : goto a position in the score. if position is empty, open the dialogbox
    • =view/play : view/play tracks in a score. If empty, open the dialogbox
    • + (-) : next (previous) file in the list
    • 0 (#) : first (last) file in the list
  • function onStart(parameter) : started when the script ends its loading. Default parameters (settings / LUA file) :
    • --preopen_midiout : preopen all midiouts to avoid flooding later
    • -u user-lua : to open a LUA script file in ressource direcory, to manage any MIDI-catching, ...
  • function onStop() : started before to stop the script.
  • table midiinOpen : to open specific midi-in devices
  • table actions  is used to build the toolbar in the Expresseur GUI (for those who have icons), and to propose actions available in the triggers of "setting/MIDI-settings"
  • midiInIsValid  (MidiOutIsValid) : to make a midi-In (out) valid or not. Must be completed to restrict the Midi-In interfaces opened by default. Use patterns in this lists in luauser.lua :
    • valid_midiout
    • invalid_midiout
    • valid_midiin
    • invalid_midinin

 This expresseur.lua loads and used three  lua scripts :

  • luascore.lua : to receive the compiled score from the GUI, and to interpret instrumentist action from Midi-In triggers, set in menu "setting/Midi-settings"
  • luachord.lua : to receive the text chord-grid from the GUI, and to interpret instrumentist action from Midi-In triggers, set in menu "setting/Midi-settings". This script uses texttochord.lua to interpret a chord (eg "G7/D", ... ), and to build the associated scales (chord, pentatonic, bass...).


Parameters to tune a MusicXML score

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 :

  • Simplify superposition of complex rythm.
  • Suppress "silent noteoff" : a note which starts in a chord and ends "alone". Align end of such note with the start of another note.
  • Suppress non "rythm-tie" : a "rythm-tie" links two same notes to change global duration.
  • Suppress "decorations" which can complexify the Expresseur-compilation : staccato, legato, pedal, nuances, crescendo, trill, .... These decorations can be added later in the Expresseur parameter-file, section  Ornaments
  • Replace complex coda/repat signs with simple double-bar. The sequence can be added later in the Expresseur parameter-file, section Play-Marks.

The parameter-file contains these sections :

  • "MUSICXML : file name" : the musicXML score to load
  • "TITLE : title of the score" : set the title of the score
  • "SET MARKS": to plug milestones in the score. 
    • one line per mark
    • the measure number, ":", the name of the mark. eg "18:Coda" means a label Coda on measure 18
  • "PLAY MARKS" : to reorganize the score, using the marks.
    • one line per mark. The "mark" must be defined in the previous section "Marks"
  • "PARTS" : to describe the parts 
    • mandatory, constant  "part_name:" as described in the MusicXML file.
    • mandatory "visible" or "not visible" : to set this track as visible or not, in the Expresseur score.
    •  mandatory "/played" or "/not played" : to set this track as played or not, in the Expresseur score.
    • optional ",alias=long_name/short_name" : to change the name of the track in the Expresseur score. The long name is displayed on first staff. Short name is displayed on next staves. The long name is used in the mixer : this is a convenient way to reuse settings ( instruments, MIID-device in the mixer )
  • "ORNAMENTS": to add ornaments ( mordents, dynamics, instruments, .. )
    • One line per ornament
    • position ":" ornament. eg : "2.1:mordent" means a mordant on second measure, first beat.
    • Syntax of the position :
      • optional  "!"  : at the beginning, it means an absolute measure-nr. : the measure_nr displayed on the Expresseur score, taking care of the repetitions described in "played marks" section.
      • mandatory  "measure_nr.beat_nr" : measure_nr and beat_nr, starting at 1. eg : "3.2" means third measure, second beat. The measure number is the original measure_nr, as defined in the original MusicXML score, without the compilation of repetitions defined in the section "play marks". To use the measure_nr visible in the Expresseur score , use prefix "!".
      • optional ".quarter_division" : number of quarter_divisions in the beat.  The quarter division is always defined as an ornament. eg : if quarter_division=2 ( a half-quarter ), "3.2.2" means third measure, second beat, plus 2 half-quarters.
      • optional ".chord_order" : to reach one note in a chord ( starting on one, the lowest pitch of the staff(s) )
      • optional "*repetition" : restrict the ornament on the repetition, according to the section "played marks". By default, the ornament is applied on all repetitions. eg : "3.2*2" means third measure, second beat, second time only. Note : not compliant with prefix "!" for absolute measure nr.
      • optional "<" : puts the ornament before the position. eg "3.2<:mordent" puts the mordent grace notes before the second beat. By default the ornament is placed on the beat.
      • option "@track_name" : restrict the ornament to a specific track (as listed in section "parts" ). By default, the ornament is applied to all tracks. It is possible to use only the first part of the track name. eg "@P1" is enough to tag the track "P1_myslongpianoname". To restrict to a staff in a track add ".#staff" (eg 1st staff os a piano track :@P1.1 )
    • Syntax of the ornament :
      • mandatory "ornament_name"
      • optional "=value"
    • List of ornament_names :
      • divisions_per_quarter=number : mandatory value as integer. Mandatory in the musicXml file structure. It is used to set a precise position of an ornament in a beat.
      • random_delay=milliseconds : make rando delay on the notes
      • dynamic=1..127 : dynamic of the velocity input. 127 = full dynamic. 1 : no dynamic
      • pedal_bar=1..127 : automatic pedal on each bar ( midi-control 64 )
      • pedal=0..127 : activate the pedal ( or zero to stop the pedal )
      • lua=command parameters : activate lua function n the sript luascore.lua. Commands set by default :
        • chord chordname : set a chord to use in the improvisation mode. eg "lua=chord G7"
        • instrument setting: to set an instrument, using the Expresseur syntax. eg "lua=instrument pianoleft(P0,C10/1)"
        • tune frequency : to tune the midi-out. eg "lua=tune 415" (if understood by the MIDI-expander ...)
        • bendrange 1..12 : to set the bendrange in half-tone. eg "lua=bendrange 2"
        • gm 0..2 : set GM mode on MIDI expander. eg "lua=gm 2" (if understood by the MIDI-expander ...)
        • scale equal|arabian|just pitch : set the scale. eg. "lua=scale just G" (if understood by the MIDI-expander ...)
      • text=value : add a comment in the Expresseur score
      • pianissimo: set the nuance pp
      • piano : set the nuance p
      • mesopiano : set the nuance mp
      • mesoforte : set the nuance mf
      • forte : set the nuance f
      • fortissimo : set the nuance ff
      • crescendo|diminuendo : apply a crescendo|diminuendo between two nuances (eg piano=>forte)
      • tenuto : force the legato with next note
      • staccato : reduce the duration of the note. by default half of the duration. An optional value can set 1/3 or 2/3 reduction. eg. "staccato=1/3"
      • accent=-50..50 : apply an accent on the note. Can be negative or positive. eg "accent=20"
      • grace : add a grace note. By default diatonic upper. options :
        • =inverted : diatonic lower. eg "grace=inverted"
        • =pitches : list of pitches to add. eg "grace=C4/E4,G4" adds chord C4/E4 and G4
      • mordent : add a mordent. Option "=inverted". eg "mordent=inverted"
      • turn : add a turn. Option "=inverted".
      • trill : add four trills. Option "=nb_trills". Note : the trill is applied as grace notes. For complex trill, please expand it in the musicxml score, as normal notes ( too complex and not standard definitions ). eg "trill=8"
      • btrill : baroque trill, same as trill, but starting on the upper diatonic pitch.
      • arpeggiate : arpeggiate a chord. by default from lower to upper. Option "value=down". eg "arpeggiate=down"
      • transpose=-24..24 : transpose in half-tone. eg "transpose=-12" transpose one octave lower
      • delay=milliseconds : delay the note. eg "delay=500" delays the note half a second 
      • before : set the note before the others.
      • after : set the note after the others

List of ornaments recognized from the musicXML file :

  • staccato
  • tenuto
  • accent
  • grace
  • nuances
  • mordent
  • trill
  • arpegiatte
  • Rehearsal marks
  • lyrics
  • silent notes ( cross-head )

Example of Marks in parameter_file :



Improvisation with chords

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 :

  1. mandatory name : reused in the part
  2. optional tone : useful for improvisation in pentatonic scales.

The "sections" are used in "parts"  to reorganize quickly the score. A part has two parameters :

  1. name : alphanumeric characters 
  2. optional loop : it loops inifnitely on this chain.

Example to play in tone C, looping on parts AAB, with a coda which can be smoothly trigerred ( by a key , .. )

   C      G
-- free text

A  A B

Syntax of the chords :

  • Three Notations of pitches are accepted.  eg G == Sol == V ( on tone C )
    • Latin : do re mi fa sol la si do
    • US :  C D E F G A B 
    • numeric :  I II III IV V VI VII
  •   Modifications accepted are listed here after. The exact definitions is in script "texttochord.lua".
    Eg : G.7, G.-, G.sus4, F#.dim, ..
    A point between modifcators is highly recommended to make the syntax more clear : eg Ab.b5 , Fm.M7
    • sus2
    • sus  == sus4 
    • m == -
    • 7 == m7
    • M7 == maj7
    • b5
    • #5
    • 5
    • 64
    • 46
    • 6
    • 9
    • #9
    • b9
    • 11
    • #11
    • b11
    • 13
    • #13
    • b13
    • ad+9
    • ad+#9
    • ad+b9
    • ad+11
    • ad+#11
    • ad+b11
    • ad+13
    • ad+#13
    • ad+b13
    • o == mb56
    • 0 (zero ) == mb57
    • /bass  eg C/G
    • (x) : without this degree x in the scale
    • #x : scale modifier
    • bx 
    • "[scale/root]". "/root" is optional ( by default the tone ). Scale can be :
      • ionien == modei
      • dorien == modeii
      • phrygien == modeiii
      • lydien == modeiv
      • mixolydien == modev
      • eolien == modevi
      • locrien == modevii
      • minor melodic == modemi == mineur melodique
      • dorien b9 == modemii
      • lydien augmented == modemiii == lydien augmente
      • lydien b7 == modemiv ==  bartok == vaschaspati
      • mixolydien b13  == modemv
      • locrien #9 == modemvi == eolien b5
      • altered == modemvii == altere == super locrien
      • minor harmonic = modehi == mineur harmonique
      • locrien natural == modehii == locrien naturel
      • ionien augmented == modehiii = ionien augmente
      • dorien #11 == modehiv
      • phrygien #3 == modehv
      • lydien #9 = modehvi
      • diminished diatonic == modehvii == diminue diatonique
      • balkan
      • andalou
      • tzigane
      • oriental
      • diminished == diminue == tondemiton == tonehaltone == bertha
      • halftonetone == demitonton
      • tone == ton
    •  =tone : set the tone . eg "G=C" , set the tone to C
    • NC : no chord
    • % : repeat chord
    • @pitch : center the scale around this pitch. eg "G.7@G5" : chord G7, with the center on pitch G5
    • prefix "!" : chord does not influence the mode. But mode can influence the 3rd and 5h chord if not specified
    • prefix ":" chord influences the mode ( by default )
    • mode prefix "_" : mode for this chord and the next ones ( by default )
    • mode prefix "." : mode for this chord only

 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"

  • bass : a walking bass , taking in account the next chord. First pitch is the bass itself ( or the 5th if chord is repeated ).
  • chord : the pitches of the chord. 
  • pentatonic : the pitches of the pentatonic scale. 
  • diatonic : the pitches of the scale itself. 

 Scripting music logic using LUA

LUA language can be used to script any music logic within Expresseur. 

A specific page described this feature.

The scripts are stored in the directory "lua".

The active script is stored in the menu "setting/LUA script". Parameter can be set ( passed to the LUA function onStart )

To develop your own music-logic, without the Graphic-User-Interface, you can use two solutions :

  • A command-line tool  to start and drive LUA-Midi : expresscmd.exe  (cf. detail in next section ).
  • Call the API-dll (luabass basslua), to build your own solution, using Python, C++, LUA, ...