Last updated:

ReaScripts: Virtual Instrument Samples Editing Pack


Creating a virtual instrument for the well-known Kontakt sampler, or its promising open source alternative Hise, or for any other software/format (SFZ, VSTi… etc…) requires a lot of patience.

You have to edit and organize hundreds of items, with a lot of small variations of the same sound — velocity, tonality, round robin —, different articulations… It gets even more complicated when you have multi-mics sound recording.

In these scenario, repetitive tasks is very common, and organization is key. Finding the tonality of the recorded sound, naming the items with the right datas and the right format to allow sorting etc… You have to do that over and over again.

That’s where the scripts in this pack can helped you. Most of scripts were designed for David @X-Tant Audio (especially for his Bass library) or Simon @Ivy Audio, two brilliant Virtual Instrument Designers professionals, to fit their particular workflow, involving tonal instruments. I’m pretty sure other people who have to deal with a lot of items can take advantage of them

Update (2021-16-12): This pack initally contains scripts for pitch detection. Since it’s release, I have made a way more advanced and flexible script for pitch detection, which is so much advanced that I had to put it in another pack: Analyse selected audio items pitch. I left previous scripts here for backward compatibility. Scripts related to pure editing are still consider up to date though.

Pack Content

  • X-Raym_Analyze pitch of items on selected tracks and commit as item notes – ReaTune.lua
    Use the script below and applied estimated average musical note of item below under play cursor as item notes, while REAPER is playing. ReaTune exports MIDI data and the JSFX below analyses them. Item notes can be sorted by alphabetical order (so in this case, by pitch). Also, the script works on all selected tracks so you can process a lot of items at the same time, as long as their parent track have the right JSFX.
  • X-Raym_MIDI_Single-note-analyzer.jsfx
    A minimal JSFX scripts used to determine what MIDI note is being played. Use it with the script above.
  • X-Raym_Analyze pitch of items on selected tracks and commit as item notes – Schmitt.lua
    Just like the other pitch analysis script, but using a different pitch detection algorithm. ReaTune should be better in most cases.
  • X-Raym_Schmitt-tuner.jsfx
    A JSFX to make pitch analysis, based on an native REAPER script.
  • X-Raym_Split selected items according to MIDI take under mouse notes legatos.lua
    A script dedicated to legatos samples editing (like for flutes instruments for example). First your record flute legatos, space by a bit of silence. Then you analyses the audio and output the results as MIDI (this can be done with Melodyne or ReaTune for example). Then you can run the action with the mouse over the midi items, and all selected items will be split from -x to +y positions from legato middle. It can optionally add markers at legato to see if legatos were detected at the right place.

    Split Items at MIDI legatos, from MIDI notes under mouse.
  • X-Raym_Rename selected items active takes from REAPER MIDI notes to Kontakt notes.lua
    Scripts above output sortable note names format in more usual Kontakt way for automapping.
  • X-Raym_Apply octave shift on selected items names written in Kontakt automap format.lua
    If your item active take has been named according to Kontakt automapping usual format (note_keyOctave, 35_C3), you could offset it’s octave number its name using this script.
  • X-Raym_Add project markers according to selected takes MIDI notes.lua
    This can help you mark certain MIDI events on the project. Useful if you audio tuning analysis output the result as MIDI item.
  • X-Raym_Color selected active takes according to pitch in their name.lua
    A way to color items based on their pitch if they have Kontakt style named active take. Several color mods, based on MyColorMusic, and possibility to mod the script to make your own and deactivate the prompt window.

The license is valid for 1 year. Then, a discount will be proposed to you if you want to still be able to get updates from this pack.


Here is a very nice in depth tutorial for the Split at MIDI legatos script, used on a real like project, by Simon Dallzel from Ivy Audio, followed by an audio demo of the result:

Many thanks to Simon for these! 🙂

The following video is a demo of the workflow involving the Schmitt tonality analysis, how the results is committed to items under play cursor notes and then how items can be sort by pitch.

Simple comparison between the two different algorithms set up:

Color selected active takes according to pitch in their name demo:

Color items by pitch.

Detailed Usage instructions

Here is the detailed instructions for the both Analyses Items Pitch scripts.

ReaTune version

  1. Insert ReaTune as FX
  2. Activate Send Midi Signal
  3. Put JS: MIDI Single Note Analyzer just after
  4. Run the X-Raym_Analyze pitch of items on selected tracks and commit as item notes – ReaTune.lua

Schmitt version

  1. Insert JS: schmitt-triggering tuner (X-tented) as FX
  2. Run the X-Raym_Analyze pitch of items on selected tracks and commit as item notes – Schmitt.lua


In the Items Pitch analysis scripts, pitch is committed to item as item notes. You can use my free X-Raym_Swap selected item notes and take name.lua script to commit the result as take name. Also, if you need to reset the item notes, I have a free X-Raym_Delete selected items notes.lua script.

By using the X-Raym_Sort selected items order by item notes alphabetically keeping snap offset positions per tracks.lua on my free pack, you will be able to sort the items by their tonality, when their are not in the Kontakt common format.

Others scripts dedicated to such workflow can be found in my free script pack like the Trim items by common time section in selection columns scripts for item editing, my groups items scripts, from both my free and paid pack.


After purchase, just log into the website, to check the detailed installation instructions here, or on the dedicated Purchase Confirmation page. This pack can be installed and updated from REAPER thanks to the free ReaPack extension, via a custom repository link related to your licence, or via regular Zip download. License are valid lifetime. You will be able to enjoy updates and new scripts added to the pack.


These scripts are open source. Some of them have customizable User Area in their header to customize few settings for the scripts (for deactivating the pop up and setting default values, if any are required).

Here is an example with the split at legato script:

-- USER AREA -----------

prompt = true -- true/false: display a prompt window at script run

offset_X = 1 -- number (seconds) 
offset_Y = 1

octave = -1 -- offset the octave number

window = 0.02 -- number (milliseconds) 

insert_markers = true -- true/false: add markers at split position

messages = true -- true/false: debug




By buying this product, you are supporting my free scripting. Thanks!


  • Personnal use, you are an individual, a student, or a non-profit organization, and you will not use this pack on commercial projects.

  • Your work for a small business company or commercial projects.

  • You are a big business company with a team of more than 5 people. Consider one purchase per team.