selected = false
muted = false
midiChan = 0

gfx.init("Xsample",1,1)

gfx.x = gfx.mouse_x
gfx.y = gfx.mouse_y

input = gfx.showmenu("1 Senza Vibrato Velocity + MW inverted|2 Spiccato Pizzicato Col Legno MW Switch + CC2 Xfade|3 Tremolo Velocity + MW inverted|4 Tremolo SP + Sul Ponticello MW|5 Harmonics + Glissando|6 Con Sordino Vibrato + Senza Vibrato Velocity MW|7 Vibrato Velocity 1 + MW inverted|8 Spiccato + Marcato CC2 MW Shape|9 Pizzicato + Bartok Pizzicato CC2 MW Shape|10 Col Legno + Finger CC2 MW Shape|11 Vibrato Velocity Ensemble 4 Voices|12 Spiccato Velocity Ensemble 4 Voices|13 Pizzicato Velocity Ensemble 4 Voices|14 Tremolo Velocity Ensemble 4 Voices|15 Bartok Pizzicato Velocity Ensemble 4 Voices|16 Col Legno Velocity Ensemble 4 Voices|17 Con Sordino Vibrato Velocity Ensemble 4 Voices|18 Finger Velocity Ensemble 4 Voices|19 Tremolo Sul Ponticello Velocity Ensemble 4 Voices|20 Sul Ponticello Velocity Ensemble 4 Voices|21 Undefined tones A Ensemble|22 Tuning Peg + Tailpiece Pluck + Undefined tones Ensemble|23 Random Pizzicato Garden MW Shape|24 Unpredictable Ensemble|25 Undefined tones C Ensemble|26 Undefined tones A|27 Undefined tones C|28 Harmonics Glissando natural + artificial|29 Marcato one bow MW Shape|30 Marcato Vibrato one bow MW Shape|31 Spiccato Con Sordino + Pizzicato MW + CC2 Switch|32 Pizzicato Con Sordino + Vibrato MW|33 Pizzicato Vibrato|34 Pizzicato Vibrato Ensemble 4 Voices|35 Spiccato Tempo Sync 16T|36 Senza Vibrato MW|37 Vibrato 1 MW|38 Vibrato 2 MW|39 Vibrato 1 + Senza Vibrato MW 2 dimensional X CC2|40 Vibrato 2 + Senza Vibrato MW 2 dimensional X CC2|41 Uncommon Articulation Delay 16|42 Tremolo MW|43 Spiccato Velocity|44 Pizzicato Velocity|45 Col Legno Velocity|46 Bartok Pizzicato Velocity|47 Finger Velocity|48 Tremolo Sul Ponticello MW|49 Sul Ponticello MW|50 Artificial Harmonics MW|51 Con Sordino Senza Vibrato MW|52 Con Sordino Vibrato MW|53 Marcato Staccato Velocity|54 Sul Ponticello Short Velocity|55 Portato Velocity|56 Col Legno Gettato Velocity|57 Pizzicato Con Sordino Velocity|58 Pizzicato Con Sordino Vibrato Velocity|59 Body Strokes Velocity|60 Pizzicato in Peg Box Velocity|61 Tailpiece Bowed MW|62 Bridge Bowed MW|63 Pizzicato Behind Bridge Velocity|64 Dead Notes Velocity|65 Rosin Noises Velocity|66 Harmonics Glissando MW|67 Harmonics Tremolo Glissando MW|68 Artificial Harmonics Glissando MW|69 Harmonics Tremolo MW|70 Spiccato Con Sordino Velocity|71 Staccato Velocity MW Spiccato|72 Flautando MW|73 Spiccato Sul Ponticello Velocity|74 Pizzicato Sul Ponticello Velocity|75 With Accent Velocity|76 Gettato Velocity||")
if input >= 0 then 

function main() 
  take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive())
  if take == nil then return end
  item = reaper.GetMediaItemTake_Item(take)
  pos = reaper.GetCursorPosition() 
  ppq = reaper.MIDI_GetPPQPosFromProjTime(take, pos)
  
  MSB = 0
  LSB = 0
  PC  = 0
  
  if input ~= 0 then
  
  reaper.MIDI_InsertCC(
    take, 
    selected,
    muted,
    ppq,
    0xB0,-- midi CC
    midiChan,
    0, -- controller #0: Bank Select MSB
    input-1 -- MSB value
  )
  reaper.MIDI_InsertCC(
    take, 
    selected,
    muted,
    ppq,
    0xB0,-- midi CC
    midiChan,
    32, -- controller #32: Bank Select LSB
    0 -- LSB value
  )
  reaper.MIDI_InsertCC(
    take, 
    selected,
    muted,
    ppq,
    0xC0,-- Program Change
    midiChan,
    PC, -- program change value
    0
  )
  end
  reaper.UpdateItemInProject(item)   
end
end

script_title = "Xsample Acoustic Instruments"
reaper.Undo_BeginBlock()
main()
reaper.Undo_EndBlock(script_title, 0)
