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

User's Guide

Connect MIDI-keyboards

Midi-keyboards must have MIDI connectivity.

Plug the keyboard on your computer. Start Expresseur. The Midi-keyboard will be automatically recognized as Midi-in.

By default, all valide Midi-in are opened, to capture Midi events (to play score .. ). To restrict the Midi-in which are opened, modify the Midi-in devices in the Setting/MIDI-setting.

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 !

Trouble-shooting

  • 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/instruments". 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/instruments", with one instrument per line.
  • The default list is the General-Midi ( "gm.txt" ), available in the directory "ExpresseurV3/instruments". 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 triggers

The menu "setting/MIDI-settings" open a dialog box to edit all the triggers.

The shortcuts from the PC-keyboard (ALT+letter) are interpreted only when the Expresseur-window has the focus, and the text-zone is not in Edit-mode.

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.

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 exprsseur.lua :

  • 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
  • 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>

 

Thanks to the scripting logic, you can build your own action, writing your own LUA function, added to the LUA-table "actions", which will be visible in the list of actions of the triggers ( and the menu, toolbar, if any ).

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 descritpion 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

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 :

  • 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.text : text to be dispayed in the GUI, set in the LUA script
  • info.next : increment to change the file in the list of the GUI
  • function onStart(parameter) : started when the script ends its loading ( parameetr is set in menu settings/lua file)
  • 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 : to make a midi-IN valid or not. Must be completed to restrict the Midi-In interfaces opened by default.
  • MidiOutIsValid : to make a midi-IN valid or not. To indicate the user the recommended midi-out. Must be completed to restrict the Midi-Out interfaces opened by default.

 This expresseur.lua loads and used two main 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. 

The parameters-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 ni 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 aninstrument, 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 )

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

section(A,C)
-- free text
C G
section(B)
C F G
section(coda)
C G C
part(infinite,loop)
A  A B
part(finish)
coda

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 G7, G-, Gsus4, F#dim, ..
    A point can be used 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 "G7@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, ...