So I have found a great way to resave all my VST presets so that I can browse them in Push and thought I would share. I got the inspiration from this guy Andrew Graham.
https://www.youtube.com/watch?v=v9MRT78 ... freload=10
Since you all probably know, the only way to save a preset that is browsable in Push is to map them manually. For example this video is a great demo.
https://www.youtube.com/watch?v=1FuwJQu ... freload=10
Now the trick is to do this for every single preset. Instead of doing it manually, you can use a program called Sikuli to do that. It is designed to do repetitive mouse clicks and typing and is perfect for saving and renaming VST presets in a Live device
FYI:
-If you know a bit of Python, it will help you out lots.
-The toughest thing is to get the preset names for your VST.
-Have a bit of patience, as you may take a few rounds to get all your presets saved
Software needed:
http://www.sikuli.org
https://www.jetbrains.com/pycharm/download/ (recommended as this will make it easier to write some python code)
How Sikuli works:
Install and create a new script. The language syntax is python, so it definitely helps with some python knowledge.
Google is your friend if you dont have any python experience.
To get Sikuli to mouse click on an specific area, you can type the following
Code: Select all
click(Region(616,540,8,9))
the menu bar.
To have Sikuli type some commands like CMD-r to rename a Live device you can add this
Code: Select all
type("r", Key.CMD)
Code: Select all
keyDown(Key.ENTER)
keyUp(Key.ENTER)
Putting it all together.
First steps - setup GUI window locations
Open your VST of choice and set up the mappings in Push (see first linked video on how to do this).
Now drag your VST window to a spot on your screen (use the exact same spot because we will setup Sikuli to mouse click 'open' vst window). On my mac, I use a program called bettersnap tool to set the VST window in the top right corner. This way if I have to rerun Sikuli, I have the exact same location.
Do the same for Live's main GUI. So it will always be in the same spot.
Using the Sikuli command click(Region()) set it to click on Lives main window.
Setup all the 'mouse clicks' that you want Sikuli to do, for example:
1. Highlight vst window
2. change to next preset
3. minimize vst window
4. Highlight live instrument device
5. CMD-R to allow renaming of instrument
6. type in present name (need to generate this before typing it in)
7. save preset
8. open VST window
The biggest challenge I found is generating the name for the presets. For example, some vst's will allow you to rename
an existing preset, this way you can select the name and copy it, then type it in with Sikuli.
Others dont allow that and then this is where having some programming skills comes in handy.
You can use python to search the VST preset directory and generate a list of names.
I have included my Script for AAS player. You can get a free library called Swatches and test it out yourself.
They have all the preset names listed on their website so I used that and saved it as a text file used in my script.
Just be sure that you set the click regions to match your screen resolution and of course the
root pathways.
To use the script just copy and paste it into a new script in Sikuli.
Hope this helps.
Nori
Sikuli script
----------------------------------------------
Code: Select all
# description
# *Generates AAS Player presets for Push
# *resaves all presets as instrument racks
#
# Does this:
# *opens txt file with presets (full path)
# *reads in presents one at a time
# *creates Live Rack (Live saves in generic folder)
#
# Notes:
# *SET AAS PLAYER TO BANK-1, PRESET-1
# * START WITH AAS PLAYER MINIMIZED
#
# *keyboard set to USA, otherwise, strange characters show up
# *After script is run, run matlab script to move all presets to subfolders
# *Python's mkdir is a PITA
# *screen res: stock laptop screen
# *Live is snapped to right half of screen
# *Drag AAS Player to bottom left corner
#
# osx 10.9.5
# Dec 20, 2014
##---------------------------------------------------------------------
#read in files, using python language
##---------------------------------------------------------------------
import os, errno, shutil, glob
# input outpt filenames
ext = '.acp' # alchemy preset
ext_rack = '.adg' #Live rack
live_instr_root = '/Volumes/data/production/Ableton/User Library/Presets/Instruments/Instrument Rack/'
root = '/Volumes/data/downloads/music/Ableton/Push/push_batch_vst_preset_saving/vst_presets/AAS_presets/'
# change below to different files, then change preset bank in AAS Player gui
preset_root_list = root + '3_Swatches presets.txt'
# focus Live
click(Region(857,23,209,19))
##---------------------------------------------------------------------
# read in preset names and subfolders
##---------------------------------------------------------------------
f = open(preset_root_list)
preset_list = [line.strip() for line in open(preset_root_list)]
f.close()
for preset_name in preset_list:
# filter out category
if preset_name.find('zzzzz') == 0:
categ = preset_name.replace('zzzzz','')
#print categ
else:
##---------------------------------------------------------------------
# run sikuli code to generate live presets
# *Live is snapped to right half of screen
# *Drag AAS to bottom left corner
##---------------------------------------------------------------------
##---------------------------------------------------------------------
# focus instrument rack, rename to preset and save
##---------------------------------------------------------------------
click(Region(616,540,8,9))
click(Region(616,540,8,9))
type("r", Key.CMD)
# print preset_name
type(preset_name)
# hit rack save button
click(Region(857,541,7,5))
keyDown(Key.ENTER)
keyUp(Key.ENTER)
##---------------------------------------------------------------------
# change preset
##---------------------------------------------------------------------
# open AAS on Live rack
click(Region(910,540,7,6))
# click AAS 'next preset' ONLY 1 TIME
click(Region(1301,282,9,9))
# close AAS window
click(Region(985,141,7,3))
Swatches preset. Copy and paste this into a text file and make sure the name matches that in the above script.
Code: Select all
zzzzz 30.8676?Hz
Fat 48
Rectangle Saws
S&H Looper
Three O Three
Obesitas
Profiler
Short Decay
Talking Bass
zzzzz Analog Essentials
Melody Arp
Romantic Arp
Disto TB
Q Bass
Epic Pad
Phaser Pad
Random Loop
Rave Solo
zzzzz Angelicals
Carpetry
Collateral
Fast Forward
Intro Sweep
Lovely Tines
Spiral
Sword of Iron
The Deep Edges
zzzzz Cardinals
Oak Percussion
Doom Drum (var)
Wood Meets Metal Split
Glass Kalimba
Alien Random Syncer
Jupiter Swamp
Ominous Riser
New Planet
zzzzz Cinémathèque
Jade
Lumber
Slategrey
Skyblue
Lilac
Nestre
Medium
Rosso
zzzzz Entangled Species
Corrugated Soundboard
Drone Ensembler
Effervescent Beings
End Titles
Malaysian Sequence
Migi
Q-Pad
TD 75
zzzzz Frontier
Asto
Glouse
Kroton
Odysseus
Organic
Theology
Electral
Cello
zzzzz Harmonic Geometry
Solarize Pad
Motors On Strings
Crystallize
Riddle Echo
Thunder Drum
Tuskin Drum
Golden
String Tiles
zzzzz Journeys
Byrd Watcher
Flutery Lutey
Ossuary
Persnickety Piezo
Seasick Santur
Suspension Bridge
Triad Fantasy
Vampire Planet
zzzzz KitNetix
Hardwood Resodrums
Klangathon
Wind Gong
Gong Tree Scape
Water Chimescape
Cascades
Chimes from the other side
Marimba Organ
zzzzz Microsound Textures
Cave Drips
Marbles Around
Water Tines
Underwater Pad
Epic Drums
Tundra
Scratch The Pipes
PulseMod Bass
zzzzz Plastic Pop
5th Avenue
Attack of the Eighties
Chord Stab
Deerone
Digital Plastic
Digital Wired
Mayda
Orchestral Hit 01
zzzzz Reverence
Krystal Castle
Seven C
Flangalang
MiddleCAFE
Tech Know 60
FlyingOverhead
Carolina Skies
Something Lurks II
zzzzz Sounds from BLKRTZ
Broken Leslie
Detroit Classic
Driven Bubblers
Far East Radio
HAM Radio Defect
Short Circuit
Siren Bomb
Soft Moving Dub
zzzzz Starlight
Crimson Touch
My Treat
Balcony
Burning Eden
Goddess' Bell
Liquid Dust
Next Outro
Solar Repetition
zzzzz Ultra FX
7 am
Bonus
Car Alarm
Down the Memory Lane
Helisynth
Mark Tree Coin
Spiral Upward
Step 2 Down