If you like Artinfuser, donate at Patreon. $200 monthly will make it possible to continue maintaining Artinfuser.

Currently all Artinfuser Studio servers are in maintenance mode. I did not get enough patrons to continue supporting rendering music in this project.


Rendering algorithms

Artinfuser Studio uses multiple algorithms to adapt MIDI files to virtual instruments.

Staccato algorithm (strings)

Short notes (shorter than 400 ms by default) are converted to staccato articulations if the are not slurred and do not have tremolo. Staccato dynamics is usually decreased compared to arco articulations. In some libraries staccato algorithm needs a different delay compared to other articulations - it is applied.

Parameter name in web interface Parameter name in config Comment
Auto staccato stac_maxlen Set maximum note length which will be converted to staccato articulation.
Staccato dyn. range stac_dyn_range Staccato dynamics will be mapped inside this range.
Staccato attenuation stac_db Decrease staccato volume by this value.

Pizzicato algorithm (strings)

Pizzicato articulation is automatically applied only when pizz technique is specified in notation editor. Pizzicato dynamics is usually decreased compared to arco articulations. In some libraries pizzicato algorithm needs a different delay compared to other articulations - it is applied.

Parameter name in web interface Parameter name in config Comment
Pizz dyn. range pizz_dyn_range Pizzicato dynamics will be mapped inside this range.
Pizz attenuation pizz_db Decrease pizzicato volume by this value.

Tremolo algorithm (strings, percussion, woodwinds)

If a virtual instrument supports separate tremolo samples, they can be selected by specifying tremolo technique in notation editor. Some notation editors export tremolo as short repeating notes. Artinfuser Studio detects if note repeats more than two times with length less than 100 ms each and converts it into tremolo articulation (these parameters can be changed). Tremolo dynamics is usually decreased compared to arco articulations. Same algorithm is used for woodwinds to trigger flutter tongue.

Parameter name in web interface Parameter name in config Comment
Auto flutter tongue trem_maxlen Maximum length of note that can be converted to tremolo if repeated.
Flutter tongue attenuation trem_db Decrease flutter tongue volume by this value.
Flutter tongue dyn. range trem_dyn_range Flutter tongue dynamics will be mapped inside this range.
Auto tremolo trem_maxlen Maximum length of note that can be converted to tremolo if repeated.
Tremolo attenuation trem_db Decrease tremolo volume by this value.
Tremolo dyn. range trem_dyn_range Tremolo dynamics will be mapped inside this range.

Legato algorithm (woodwinds, brass, strings)

If notes are connected with a slur in notation editor, Legato transition is not applied if previous note is too short for virtual instrument to play legato transition. User can choose to connect all adjacent sustain notes with slurs automatically in Artinfuser Studio instead of creating slurs in notation editor. In some libraries legato transition time depends on slurred note velocity - it is calculated and applied automatically.

Slurs algorithm (solo strings)

If two notes have a legato transition between them and they form a short interval (major or minor 2nd by default), finger legato will be chosen if there are not too many finger legato transitions in succession (not more than 2 by default).

Glissando algorithm (brass, solo strings)

Glissando articulations can be added randomly to long notes connected with legato transitions.

Parameter name in web interface Parameter name in config Comment
Auto gliss gliss_minlen Set minimum second note length in legato transition to convert to glissando.
Auto gliss probability gliss_freq Probability of legato transition being replaced with glissando.

Split portamento algorithm (brass)

Split portamento articulations can be added randomly to long notes connected with legato transitions.

AutoLegato algorithm (woodwinds, brass, strings)

Adjacent notes can be converted automatically to legato transitions. Usually this is controlled at the level of file for all instruments, but you can override how many transitions will be converted to legato for each instrument.

Parameter name in web interface Parameter name in config Comment
- auto_legato This parameter will override AutoLegato parameter of the whole file. Randomly adds slurs to adjacent notes if slurs were not specified in notation editor. Pay attention that stepwise motion and shorter leaps get greater probability to have a slur, while longer leaps have less chances to get a slur automatically.

Retrigger algorithm (solo strings)

If same note is repeated (retriggered), one of two articulations is selected randomly, considering note length: rebow or nonlegato.

Accent algorithm (woodwinds, brass, strings)

User can select which articulations are preffered: soft or harsh - by changing attack dynamics range. Note accents will not get accents outside of this range.

Parameter name in web interface Parameter name in config Comment
Accent range acc_range Note accents will be mapped inside this range.

Border crescendo and diminuendo algorithms (woodwinds, brass, strings)

Only in rare cases composers add dynamics hairpins to score when a long note has to start with crescendo or end with diminuendo. Yet such notes are usually performed by musicians with crescendo and diminuendo.

Artinfuser Studio can automatically add:

  • crescendo to the beginning of long notes, that are separated with at least 100 ms pause from previous note and do not have extremely harsh accent;
  • diminuendo to the end of long notes, that are separated with at least 100 ms pause from next note.

User can control:

  • percentage of note length, that is devoted to crescendo or diminuendo;
  • percentage of note dynamics from which crescendo will grow up to target dynamics of the note;
  • minimum note length, under which automatic crescendo or diminuendo will not be created;
  • maximum note velocity, which will be considered too harsh for automatic crescendo (in config);
  • minimum pause length, that is required before crescendo or after diminuendo.
Parameter name in web interface Parameter name in config Comment
Minimum note length cresc_mindur Minimum note length that can start with automatic crescendo.
Starting cresc. dynamics cresc_mul Starting dynamics of crescendo compared to target dynamics of the note.
Cresc. length cresc_len Length of automatic crescendo compared to the note length.
Minimum note length dim_mindur Minimum note length that can finish with automatic diminuendo.
Ending dim. dynamics dim_mul Ending dynamics of diminuendo compared to initial dynamics of the note.
Dim. length dim_len Length of automatic diminuendo compared to the note length.

Diminuendo inside note algorithm (woodwinds, brass, strings)

Long notes can sound too static in some music styles if their dynamics does not change. Artinfuser Studio can add diminuendo and crescendo inside note automatically. If note also has other dynamics changes (e.g. automatic crescendo start or diminuendo ending) - then diminuendo-crescendo inside note will take time that is left with static dynamics.

Diminuendo-crescendo inside note (CDIN) can be added randomly. You can change the following parameters:

  • probability of CDIN being added when note is long enough;
  • minimum note length, when CDIN is added;
  • position range of lowest dynamics of diminuendo-crescendo shape - position is selected randomly inside this range;
  • diminuendo dynamics (percent of target dynamics of the note) can be set in a range: maximum diminuendo dynamics will be used for shorter notes and minimum - for longer notes (change minimum and maximum note length values to tweak diminuendo dynamics selection). This ensures that longer notes can have greater change in dynamics;

Diminuendo dynamics is selected randomly between initial note dynamics and dynamics selected by user.

Parameter name in web interface Parameter name in config Comment
Probability rbell_freq Probability of automatic diminuendo inside a long note.
Note length rbell_dur Minimum note length that can have an automatic diminuendo inside. Maximum note length is used to select diminuendo dynamics (see docs).
Dim. dynamics rbell_mul Percent of target dynamics of the note. Maximum diminuendo dynamics will be used for shorter notes and minimum - for longer notes (change minimum and maximum note length values to tweak diminuendo dynamics selection). This ensures that longer notes can have greater change in dynamics.
Position inside note rbell_pos Position range of lowest dynamics of diminuendo-crescendo shape - position is selected randomly inside this range.

Automatic vibrato (woodwinds, brass, strings)

Vibrato adds expressiveness to music performance. Artinfuser Studio can add vibrato automatically. User can control the following parameters of vibrato intensity separately for short and long notes:

  • Vibrato peak intensity range inside note (vibrato bell will be generated with peak intensity in this range: notes with higher dynamics will get higher vibrato intensity);
  • Vibrato intensity peak position inside note (vibrato bell will have peak at random position inside specified range);
  • Curve shape of vibrato bell (start and end);

User can control the following parameters of vibrato speed separately for short and long notes:

  • Vibrato peak speed range inside note (vibrato speed bell will be generated with peak speed in this range: notes with higher dynamics will get higher vibrato speed);
  • Vibrato speed peak position inside note (vibrato speed bell will have peak at random position in this range);
  • Curve shape of vibrato speed bell (start and end);

Short notes:

Parameter name in web interface Parameter name in config Comment
Note length vib_bell_dur Notes having length within this range will be considered short. Vibrato parameters for short notes will be applied to them.
Peak intensity vib_sbell Peak vibrato intensity is selected based on dynamics inside this range (highest dynamics results in maximum value inside this range).
Peak speed vibf_sbell Peak vibrato speed is selected based on dynamics inside this range (highest dynamics results in maximum value inside this range).
Intensity peak position vib_sbell_top Position of vibrato intensity peak inside note is selected randomly within this range.
Speed peak position vibf_sbell_top Position of vibrato speed peak inside note is selected randomly within this range.
Intensity start shape vib_sbell_exp Sets shape of left part of vibrato intensity curve for note.
Intensity end shape vib_sbell_rexp Sets shape of right part of vibrato intensity curve for note.
Speed start shape vibf_sbell_exp Sets shape of left part of vibrato speed curve for note.
Speed end shape vibf_sbell_rexp Sets shape of right part of vibrato speed curve for note.

Longer notes:

Parameter name in web interface Parameter name in config Comment
Peak intensity vib_bell Peak vibrato intensity is selected based on dynamics inside this range (highest dynamics results in maximum value inside this range).
Peak speed vibf_bell Peak vibrato speed is selected based on dynamics inside this range (highest dynamics results in maximum value inside this range).
Intensity peak position vib_bell_top Position of vibrato intensity peak inside note is selected randomly within this range.
Speed peak position vibf_bell_top Position of vibrato speed peak inside note is selected randomly within this range.
Intensity start shape vib_bell_exp Sets shape of left part of vibrato intensity curve for note.
Intensity end shape vib_bell_rexp Sets shape of right part of vibrato intensity curve for note.
Speed start shape vibf_bell_exp Sets shape of left part of vibrato speed curve for note.
Speed end shape vibf_bell_rexp Sets shape of right part of vibrato speed curve for note.

Randomization algorithms (all instruments)

If music sounds too mechanical, you can apply a small randomization amount to the following parameters:

  • note start positions, note ending positions, velocity - changes for every new note;
  • dynamics, vibrato, tempo - changes each millisecond using a smooth random function.

Example of smooth random function (47 seconds of tempo randomization with period about 6 seconds). Red line shows initial tempo:

In some situations this can make sound more realistic. Avoid overusing randomization technique, because it is not a natural source of realism and can lead to strange results. I would recommend to decrease any randomization coefficient two times from value where you start to hear randomness. When same note is repeated, its velocity gets higher randomization coefficient to avoid machinegun effect.

Parameter name in web interface Parameter name in config Comment
Random accent rnd_vel Controls how much of initial note accent can be randomized.
Random dynamics rnd_dyn Controls how much of initial note dynamics can be randomized.
Random dynamics slowness rnd_dyn_slow Controls how fast random dynamics function changes. Higher values create slower changing random dynamics.
Random vibrato intensity rnd_vib Controls how much of note vibrato is randomized.
Random vibrato intensity slowness rnd_vib_slow Controls how fast random vibrato intensity function changes. Higher values create slower changing random vibrato intensity.
Random vibrato speed rnd_vibf Controls how much of note vibrato speed is randomized
Random vibrato speed slowness rnd_vibf_slow Controls how fast random vibrato speed function changes. Higher values create slower changing random vibrato speed.
Random start rand_start Controls maximum random note start shift compared to note length.
Random start limit rand_start_max Absolute maximum random note start shift in ms.
Random end rand_end Controls maximum random note end shift compared to note length.
Random end limit rand_end_max Absolute maximum random note end shift in ms.

Note endings algorithm (brass)

Artinfuser Studio can automatically add random note endings for brass instruments, including:

  • ordinary note ending
  • vibrato endings
  • short falls
  • pitch bend down

For each note ending type user can set probability. Ending is selected randomly only if note has enough length.

Parameter name in web interface Parameter name in config Comment
Short fall probability end_sfl_freq Probability of note to have a short fall ending if its length is enough.
Vibrato probability end_vib_freq Probability of note to have a vibrato ending if its length is enough.
Alternative vibrato probability end_vib2_freq Probability of note to have an alternative vibrato ending if its length is enough.
Pitch bend down probability end_pbd_freq Probability of note to have a pitch bend down ending if its length is enough.

Length groups algorithm (piano, organ)

Length groups algorithm groups notes into groups of 2, 3 and 4 notes. Group size is selected randomly each time a previous group ended. By default length of all notes in group is increased by 70 ms except for last note. Length of last note is decreased by 100 ms. This approach makes uniform rhythms sound more live.

Support algorithms

Artinfuser Studio automatically detects situations, when note start corrections result in overlapping notes, that are not intended to have legato transition between them. These situations are fixed by moving note endings to the left.

You can find more algorithm parameters in instrument configs