Setlist analysis

I’ve put together a little Python script to analyse Cantabile setlists. It shows:

  • For each song, which racks are used (and which of those are embedded racks)
  • For each rack, which songs use it?
  • The path on disk to all plugins loaded for the setlist.

I needed to write this script to work out if I was using certain plugins anywhere, which I’ve found to be problematic, and also to determine whether my setlist is loading any 32-bit plugins. It came in really handy, so I thought I’d publish it on here in case anyone else might find it useful.

Here’s the Python script, which I usually just leave in the folder with my Cantabile setlist files: AnalyseSetlist.zip (1.5 KB)

You’ll need a little computer-nerd knowledge to run it, and you’ll need to install Python. Then it’s just a matter of opening a command prompt window, cd-ing into the folder with your Cantabile setlist files, and typing something like:

python AnalyseSetlist.py OctoberGigs.cantabileSetlist

I’ve included example output below, so you can see what it looks like. Hope someone finds it useful!

Neil

***** Racks used by each song *****
Line Check
- Output Stage
- ==Embedded== Omnisphere Linecheck
Resurrection
- Pedal Fade
- VB3
- Moog Voyager FX
- Mellotron Choir
- Output Stage
- ==Embedded== Omni: Gaberial Strings Lead
- ==Embedded== Omni: Intro Lead
The Wake
- G2 Modular Control
- G2 Modular-A
- G2 Modular-B
- G2 Modular-C
- CS80
- Mellotron Choir
- Logan-Fast
- CS80 Magic Roundabout
- Pedal Fade
- Output Stage
The Magic Roundabout
- CS80 Magic Roundabout
- VB3
- Leslie
- Mellotron Choir
- ME80
- Logan-Slow
- Mellotron Strings
- Output Stage
- ==Embedded== Pedal Fade 2
- ==Embedded== Omnisphere Stateless
- ==Embedded== Pedal Fade Mellotron
From The Outside In
- Right Pedal
- G2 Modular Control
- G2 Modular-A
- Mellotron Strings
- Mellotron Choir
- Church Organs
- Strings
- VB3-A
- Moog Voyager FX
- Output Stage
- ==Embedded== Omnisphere Stateless
- ==Embedded== Pedal Fade Mellotron
The Road of Bones
- Sustainer
- Ivory II-A
- Mellotron Choir
- XPand2-A
- Strings
- Output Stage
- ==Embedded== Omni: Symphonic Analog Strings
- ==Embedded== Omni: Aqua Flute Pad
- ==Embedded== Omni: Power Strings + Tron
Narrow Margin
- G2 Modular Control
- G2 Modular-A
- G2 Modular-B
- G2 Modular-C
- Moog Voyager FX
- Ivory II-A
- TG500
- JV1080
- IQ - Clank Tingy Tingy
- Rhodes
- VB3-A
- D50
- XPand2-A
- Church Organs
- VB3-B
- Mellotron Strings
- Wavestation-A
- Mellotron Choir
- Output Stage
- ==Embedded== Pedal Fade Needly
- ==Embedded== Pedal Fade Building Section
Frequency
- G2 Modular Control
- G2 Modular-B
- G2 Modular-D
- Moog Voyager FX
- Mellotron Choir
- Mellotron Strings
- VB3-E
- VB3-B
- Strings
- Rhodes
- Output Stage
Guiding Light
- G2 Modular Control
- G2 Modular-A
- G2 Modular-B
- G2 Modular-C
- Moog Voyager FX
- Ivory II-A
- Strings
- Mellotron Choir
- VB3-A
- Omnisphere-D
- Omnisphere-F
- Minimonsta
- Output Stage
- ==Embedded== Fade Strings
- ==Embedded== Fade Mellotron
- ==Embedded== Leslie
Until The End
- Leslie
- G2 Modular Control
- G2 Modular-A
- Moog Voyager FX
- Church Organs
- Ivory II-A
- VB3-A
- VB3-B
- Strings
- Mellotron Strings
- Logan-Fast
- Output Stage
- ==Embedded== Omni: Freezing Warm
- ==Embedded== Omni: OB8 Aggressive Lead
Widow's Peak
- Pedal Fade 2
- Moog Voyager FX
- Mellotron Choir
- Mellotron Flute
- Omnisphere-A
- Logan-Fast
- Logan-Slow
- Absynth
- Output Stage
- ==Embedded== Fade Logan Slow
Out of Nowhere
- G2 Modular Control
- G2 Modular-A
- G2 Modular-B
- Moog Voyager FX
- Mellotron Choir
- TG500
- IQ Effects
- Ivory II-A
- M1
- Strings
- OP-X Pro-II
- OP-X Pro-II-B
- Output Stage
- ==Embedded== Omni - Fem Choir
- ==Embedded== Omni - Heavy pad
Songwriting
- Ivory II-A
- VB3
- Mellotron Choir
- Mellotron Strings
- Moog Voyager FX
- Strings
- OP-X Pro-II
- Rhodes
- ==Embedded== Pedal Fade
Ivory German D
- Pedal Fade
- Ivory II-A
- Output Stage
Empty
Rack tests
- Moog Voyager FX
- MOTU Test Tones
- G2 Modular Control
- G2 Modular-A
- G2 Modular-B
- G2 Modular-C
- G2 Modular-D
- Output Stage
Moog Tuner
- Tuner
Soundcheck
- Ivory II-A
- VB3-A
- OP-X Pro-II
- Mellotron Choir
- Moog Voyager FX
- Output Stage
Temp Scratch
- Church Organs
- Moog Voyager FX

***** Songs using each rack *****
Rack: Moog Voyager FX
- Resurrection
- From The Outside In
- Narrow Margin
- Frequency
- Guiding Light
- Until The End
- Widow's Peak
- Out of Nowhere
- Songwriting
- Rack tests
- Soundcheck
- Temp Scratch
Rack: MOTU Test Tones
- Rack tests
Rack: Wavestation-A
- Narrow Margin
Rack: D50
- Narrow Margin
Rack: M1
- Out of Nowhere
Rack: Omnisphere-A
- Widow's Peak
Rack: CS80
- The Wake
Rack: Tuner
- Moog Tuner
Rack: Church Organs
- From The Outside In
- Narrow Margin
- Until The End
- Temp Scratch
Rack: Minimonsta
- Guiding Light
Rack: Right Pedal
- From The Outside In
Rack: VB3-B
- Narrow Margin
- Frequency
- Until The End
Rack: Logan-Slow
- The Magic Roundabout
- Widow's Peak
Rack: IQ Effects
- Out of Nowhere
Rack: Sustainer
- The Road of Bones
Rack: Mellotron Strings
- The Magic Roundabout
- From The Outside In
- Narrow Margin
- Frequency
- Until The End
- Songwriting
Rack: Pedal Fade
- Resurrection
- The Wake
- Ivory German D
Rack: OP-X Pro-II
- Out of Nowhere
- Songwriting
- Soundcheck
Rack: Logan-Fast
- The Wake
- Until The End
- Widow's Peak
Rack: Output Stage
- Line Check
- Resurrection
- The Wake
- The Magic Roundabout
- From The Outside In
- The Road of Bones
- Narrow Margin
- Frequency
- Guiding Light
- Until The End
- Widow's Peak
- Out of Nowhere
- Ivory German D
- Rack tests
- Soundcheck
Rack: IQ - Clank Tingy Tingy
- Narrow Margin
Rack: TG500
- Narrow Margin
- Out of Nowhere
Rack: XPand2-A
- The Road of Bones
- Narrow Margin
Rack: Rhodes
- Narrow Margin
- Frequency
- Songwriting
Rack: Pedal Fade 2
- Widow's Peak
Rack: Ivory II-A
- The Road of Bones
- Narrow Margin
- Guiding Light
- Until The End
- Out of Nowhere
- Songwriting
- Ivory German D
- Soundcheck
Rack: G2 Modular Control
- The Wake
- From The Outside In
- Narrow Margin
- Frequency
- Guiding Light
- Until The End
- Out of Nowhere
- Rack tests
Rack: OP-X Pro-II-B
- Out of Nowhere
Rack: VB3-A
- From The Outside In
- Narrow Margin
- Guiding Light
- Until The End
- Soundcheck
Rack: Absynth
- Widow's Peak
Rack: CS80 Magic Roundabout
- The Wake
- The Magic Roundabout
Rack: VB3-E
- Frequency
Rack: Strings
- From The Outside In
- The Road of Bones
- Frequency
- Guiding Light
- Until The End
- Out of Nowhere
- Songwriting
Rack: Mellotron Choir
- Resurrection
- The Wake
- The Magic Roundabout
- From The Outside In
- The Road of Bones
- Narrow Margin
- Frequency
- Guiding Light
- Widow's Peak
- Out of Nowhere
- Songwriting
- Soundcheck
Rack: Omnisphere-F
- Guiding Light
Rack: Omnisphere-D
- Guiding Light
Rack: ME80
- The Magic Roundabout
Rack: VB3
- Resurrection
- The Magic Roundabout
- Songwriting
Rack: Leslie
- The Magic Roundabout
- Until The End
Rack: Mellotron Flute
- Widow's Peak
Rack: G2 Modular-B
- The Wake
- Narrow Margin
- Frequency
- Guiding Light
- Out of Nowhere
- Rack tests
Rack: G2 Modular-C
- The Wake
- Narrow Margin
- Guiding Light
- Rack tests
Rack: G2 Modular-A
- The Wake
- From The Outside In
- Narrow Margin
- Guiding Light
- Until The End
- Out of Nowhere
- Rack tests
Rack: JV1080
- Narrow Margin
Rack: G2 Modular-D
- Frequency
- Rack tests

***** Plugins used in setlist *****
C:\Program Files\Native Instruments\VSTPlugins 32 bit\LFX-1310.dll
C:\Program Files\Native Instruments\VSTPlugins 32 bit\ME80.dll
C:\Program Files\Native Instruments\VSTPlugins 32 bit\Taurus.dll
C:\Program Files\Native Instruments\VSTPlugins 32 bit\VB3.dll
C:\Program Files\Native Instruments\VSTPlugins 32 bit\mda\mda TestTone.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Absynth 5.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\AllGVSTWin64\GFader.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\AllGVSTWin64\GTune.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\BC Chorus 4 VST(Stereo).dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\BC Phaser 3 VST(Stereo).dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\CS-80 V3.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Eareverb\EAReverb(x32).dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Ivory VST.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\KORG\M1.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Kontakt 5.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\M-Tron Pro.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Minimonsta_vstwin_x64.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\OP-X PRO-II\OP-X PRO-II.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Omnisphere.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Solid EQ.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\SpaceStrip_x64.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\TAL-Chorus-LX-64.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\TAL-Reverb-2.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\WAVESTATION.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\Xpand!2_x64.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\mcfx\mcfx_meter16.dll
C:\Program Files\Native Instruments\VSTPlugins 64 bit\trakmeter-vst_2.0.0\traKmeter (Multi x64).dll
5 Likes

very nice !
is there a way to create an exe or bat for it (i’m not a computer nerd :slight_smile: )

1 Like

Yes, it’s possible to compile the Python script into an exe. I’ll look into it and post something if I succeed :slight_smile:

2 Likes

Awesome work @Neil_Durant

You can also run it from Cantabile’s Tools menu…

  1. Download: Python for Windows x64
  2. Install python in default directory (C:\Python27)
  3. Put Neil’s script in the same folder as your set lists
  4. Create an External Tool like this:

Here’s the command line for copy/paste convenience:

cmd /K c:\python27\python "$(SetListFolder)\AnalyseSetlist.py" "$(SetListFile)"

Brad

4 Likes

Nice work Brad, that really makes it a lot simpler to use, with the directory macros etc! I always forget about the custom Tools menu.

Neil

2 Likes

For some reason, I am getting an error message, Missing Parentheses in call to ‘print’
– refers to line 143

Terry

Aha…I’m guessing perhaps you’re using Python 3.x, which changed the syntax of print. Here’s a version which I think should fix that, and will run in Python 2.x or 3.x: AnalyseSetlist.zip (1.5 KB)

Please let me know if it works, as I don’t have Python 3.x installed, so this untested…

Neil

You are correct - I downloaded version 3.5.2

I received the following, though:

***** Racks used by each song *****
Traceback (most recent call last):
  File "C:\Users\Terry\Documents\Cantabile\AnalyseSetlist.py", line 148, in <module>
    setlist = SetList(setlistFile)
  File "C:\Users\Terry\Documents\Cantabile\AnalyseSetlist.py", line 33, in __init__
    self.songs.append(Song(songFileAbs))
  File "C:\Users\Terry\Documents\Cantabile\AnalyseSetlist.py", line 45, in __init__
    with open(path) as data_file:
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\users\\terry\\documents\\cantabile\\new songs 1.cantabilesong'

If it is too much trouble, I’ll simply remove this version and install a 2.x.x version instead. All I’d use it for at this point is for your script! But I’ll keep it as-is if you want me to keep testing for you - that I have no problem with doing.

Terry

Thanks Terry. As you can see, this is very untested code that I just cobbled together for my own use! I’m not certain whether running it with Python 3.x is the cause of this, but it’s possible. You could try replacing it with 2.x instead and see if it works.

I’m not sure why you’re getting that error though. Do you have a valid file at this path?

c:\users\terry\documents\cantabile\new songs 1.cantabilesong

I think I’ll need to install Python 3.x myself and have a look and see if I can reproduce it. Leave it with me. It might take me a few days to look at this further as I have some Christmas shows coming up in a few days and I still have tweaks to make to my Cantabile setup for it…

Neil

No, actually that (c:\users\terry\documents\cantabile\new songs 1.cantabilesong) was a crashed song that I deleted, so I’ll try on another one! Gadzooks!

Terry

Ok, with an actual working set list, I got this instead:

***** Racks used by each song *****
song one.cantabilesong
  spectralrack.cantabilerack
Traceback (most recent call last):
  File "C:\Users\Terry\Documents\Cantabile\AnalyseSetlist.py", line 158, in <module>
    if not rackToSong.has_key(rackName):
AttributeError: 'dict' object has no attribute 'has_key'

Took out 3.5 and installed 2.7, and it worked just fine!
[Edit - well, actually, all I got was the plugins list, not the other cool stuff. Used Brad’s External Tools approach.]
Terry

***** Plugins used in setlist *****
C:\Program Files (x86)\VSTPlugins\Bitsonic\Custom Reverb Free.dll
C:\Program Files\Cakewalk\VstPlugins\Boost11\Boost11_64.dll
C:\Program Files\Cakewalk\VstPlugins\TDR Nova.dll
C:\Program Files\VSTPlugins\Eventide\2016 Stereo Room.dll
C:\Program Files\VSTPlugins\Eventide\Blackhole.dll
C:\Program Files\VSTPlugins\FreeverbToo.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexChorus.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexDualDelay.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexStringBox.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexChamber.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexConcertHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexPlate.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexRandomHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexRoom.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexVintagePlate.dll
C:\Program Files\VSTPlugins\Linplug Synths\Spectral.dll
C:\Program Files\VSTPlugins\MH HaloVerb.dll
C:\Program Files\VSTPlugins\Reverberate-x64.dll
C:\Program Files\VSTPlugins\Sonalksis FreeG Stereo (64 bit).dll
C:\Program Files\VSTPlugins\Soundtoys\SieQ.dll

I think the space I had in the filename was messing things up. Took that out (re-named the setlist) and it worked using python27, using Brad’s External Tools method.

***** Racks used by each song *****
song one.cantabilesong
  spectralrack.cantabilerack
  ws original ram and rom banks.cantabilerack
  mic with reverb plugin.cantabilerack
  content from monster pc incoming.cantabilerack
  processing rack.cantabilerack
  just headphone volume.cantabilerack
  delay + reverb.cantabilerack

***** Songs using each rack *****
Rack: content from monster pc incoming.cantabilerack
  song one.cantabilesong
Rack: delay + reverb.cantabilerack
  song one.cantabilesong
Rack: spectralrack.cantabilerack
  song one.cantabilesong
Rack: mic with reverb plugin.cantabilerack
  song one.cantabilesong
Rack: ws original ram and rom banks.cantabilerack
  song one.cantabilesong
Rack: processing rack.cantabilerack
  song one.cantabilesong
Rack: just headphone volume.cantabilerack
  song one.cantabilesong

***** Plugins used in setlist *****
C:\Program Files (x86)\VSTPlugins\Bitsonic\Custom Reverb Free.dll
C:\Program Files\Cakewalk\VstPlugins\Boost11\Boost11_64.dll
C:\Program Files\Cakewalk\VstPlugins\TDR Nova.dll
C:\Program Files\VSTPlugins\Eventide\2016 Stereo Room.dll
C:\Program Files\VSTPlugins\Eventide\Blackhole.dll
C:\Program Files\VSTPlugins\FreeverbToo.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexChorus.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexDualDelay.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Effects 64-bit\LexStringBox.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexChamber.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexConcertHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexPlate.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexRandomHall.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexRoom.dll
C:\Program Files\VSTPlugins\Lexicon(64-bit)\PCM Native Reverb Bundle 64-bit\LexVintagePlate.dll
C:\Program Files\VSTPlugins\Linplug Synths\Spectral.dll
C:\Program Files\VSTPlugins\MH HaloVerb.dll
C:\Program Files\VSTPlugins\Reverberate-x64.dll
C:\Program Files\VSTPlugins\Sonalksis FreeG Stereo (64 bit).dll
C:\Program Files\VSTPlugins\Soundtoys\SieQ.dll

So, that part works! :slight_smile:

Terry

1 Like

@terrybritton - the quotes in the command line ie: "$(SetListFile)" should cope with spaces in the file names and was working for me with a space in filename yesterday.

Hi @terrybritton, how are you? …I know this is a veeeeery old thread and I apologize for reviving it…but I 've just found out why the script was not working in python3: the “has_key” method was removed in python 3 and one should use

__contains__

instead.

So line 158 of AnalyseSetlist.py should be changed as follows

if not rackToSong.__contains__(rackName):

With this modification, it works for me. I attach here a patched version of the script: AnalyseSetlist.zip (1.6 KB)

Gabriel

2 Likes