Notifications
Clear all

Controlling Patch selection with multiple Unify instances


Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  

I am exploring the possibility of using Unify instances to be the 'wrapper' for my plug ins for my live performances.

What I do now:

1) Ableton Live set with 6 Audio tracks (Kick, Drum, Bass, Perc, Backing, Lead), and 3 midi tracks for live jamming, looping improvising

2) Each of the above 3 midi tracks has an Ableton Grouped chain of plugins (between 4-15) per track, which are selected via the chain selector.  IN this way only one plugin is active on the midi track at any one time and the others do not consume CPU

3) I use ableton dummy clips to select the plugin per midi track (using the chain selector), and then use the Program Select (Bank, Sub, Prgm), to select the appropriate patch in the VST

4) In some instances the plug in actually consists of a chain of a VST Plugin + Effects

 

What I want to do:

1) Retain the 3 midi tracks for plugin instruments

2) Each track will consist of one Unify instance

3) I will save Unify instruments for preset that I use in my live set, and use the Text based patch selection to select via Ableton Lives Pragram select

 

The problem - there seems to be some file locking in the way the text based bank/program selection is working.  If I fire off a patch selection on 3 midi tracks simaltaneously, only the 1st midi track works (patch gets selected in Unify) and the other do don't.  If I program in a delay such that there is 1-2 bars gap between 1,2 and 3 midi tracks, then all 3 select the right patches.  It sounds like the text file gets locked when the 1st one is reading which causes the other 2 to fail...would that be right?  I'm not sure if there was consideration for how this should work with multiple instances changing at the same time.

I don't need it to be instant, but the 1-2 bar gap means it's 4-5 bars before all 3 midi tracks are updated and that's a bit too high for some of my tracks where I do fast cutovers between tracks and hence instruments (I play live Techno/Tech house with keys improvisation)

Any thoughts about what I'm doing and the applicability to multiple instances of Unify.

 

 

 


Quote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  

Whoa...hold that thought.  It looks like there is a different issue happening here, after I did some more testing.

The timing does not seem to be an issue in that I can get things to run with no gap between the miditracks.

What does not seem to work though, is that I cannot get the Preset changes to work if the instances of Unify are not active, ie I have the GUI open on the screen.  If I open all instances of UNify (x3 miditracks), Initialise the presets on all 3, then fire the Scene in Ableton Live that has the Prgram Selections for each midi track, all 3 instances are changes to their correct Unify Preset.  If I repeat the above process with the GUI closed on all 3 Unify instances, I cannot get any of them to update the Unify Preset.  Is that by design?

 

In a live context, I will almost never have the plugin GUI active as I am using the screen real estate for tracking my various arrangement options and what midi clips I have live created.

 

 

 


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@pottz

Thank you for bringing this to my attention! You are right--program change events are currently processed by the GUI editor, not by the DSP part of the plug-in. I'm in the midst of migrating several things out of the editor, and it looks like I missed this one.

I promise to fix this is the next release of Unify.


mj_prod and Nico Fyve liked
ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  

Great - thanks.  I'll hold off on converting to Unify in my live set until that's available.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  
Posted by: @getdunne

I promise to fix this is the next release of Unify.

Hey Shane, is there a forum post or something I can subscribe to that will alert me when you have the next release?  I missed the fact that you had already rolled out the patch change thing before.

 

Cheers

 

Steve

 


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

Hey Shane, is there a forum post or something I can subscribe to that will alert me when you have the next release?

I've asked John to answer, as he has some mechanisms I don't know much about.

Note the main help menu (question-mark icon at bottom center of Unify GUI) has a "check for updates" item, which right now just takes you to a web page that indicates the most-recently released version. For more details, check the Change Log at https://pluginguru.net/unify/change-log.html.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I run Cakewalk for Bandlab.  I had a similar idea for live performance where I wanted to create a couple or three Unify instances (tracks) in Cakewalk and send program changes to those tracks in the background while I'm playing on another track.  Then as the song proceeds I could switch between the tracks and loading would have already occurred and thus no wait on Unify load time.  (I have a way of jumping between tracks from my midi controller keyboards or thru automation, so no need to take my hands off the keys).  But I'm finding program changes do not work with Unify unless Unify has the focus (as mentioned by Pottz above).  I'm getting around this for now by creating all the tracks I need, containing all the vst instances I need, but that uses a lot more memory and resources.  I figure this method would reduce that.  What I love about Unify is the way it ties all your vst's together with everything set exactly as needed.  Just to make sure this is unique to Unify, I tested with Dexed (running outside of Unify) and found it works for background program changes.

One other thing about program changes, is that creating the bank files (ie 1_1.txt in MIDI Bank Files folder), is kind of tedious.  So I created an Autohotkey script that does 1 of 2 things:

1. Scans favorites.xml, pulls out the Library and Patch names, and outputs to the 1_1.txt file with numbering complete - then program changes are instantly ready to go.

2. Prompts user for a library name, then scans the Patches belonging to that library, and outputs to the 1_1.txt file.

I added some other things like choose a different output file.  That way I can just cut and paste lines between files to create a 1_1.txt file that has patches from any of the libraries.

It's not the most elegant solution, but less involved and quicker than typing manually.  I hope that someday Unify will have a more elegant way of doing this.  What comes to mind for me is standalone Syntronik has a Program Change section in setup where you can list your patches accordingly.

 


JeremyH liked
ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr

Very interesting ideas, thank you for sharing them!

  • The issue of MIDI program change messages only being handled by Unify when the GUI is open has been fixed, and this will come in Unify v1.2 in a week or two.
  • I agree that working with text files is far less elegant than using a custom GUI, but custom GUIs require a great deal more work, so my plan is to continue with the files-based approach until the necessary features are in place, then add whatever GUI is required to support them.
  • My long-term plan is to do everything you're trying to do using multiple tracks in Cakewalk, entirely inside the Unify stand-alone. It will be possible to load patch A "in the foreground" and, while playing, load patch B "in the background", then swap foreground/background and begin playing patch B while any remaining notes of patch A are still tailing off. Once they go quiet, Unify can automatically begin loading patch C (where A, B, C etc. come from some kind of set-list). It will take a while to get all this working, but I'm making progress.
  • I like your ideas about scanning the favorites.xml file. It makes sense that the patches you've flagged as favorites are the very ones you'd want to use in set lists.

ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

That's great news.  I'm really looking forward to being able to send Unify background program changes.  Should be a real game changer for me.

I was planning on just using Favorites for my live patches.  Then I figured out how to do multiple banks and probably will make use of that. 

For a test I created three files 1_1.txt, 2_1.txt, 3_1.txt.  I used my Autohotkey script to put different Unify libraries into each.  For instance, in 3_1.txt I put the entire Unify Standard Library.  Then in Cakewalk Event List I inserted a Controller 0 event with the number 2 which tells Unify to switch to bank 3 (which uses 3_1.txt).  Then added a Program Change event a beat later, and a few more PCs after that.  And since that works, I can use multiple banks - which is fantastic.  It appears there's a max of 128 patches per bank - at least that's as high as Cakewalk seems to allow.  I would think this would work for any DAW.


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr68 128 patches per bank is a limitation of the MIDI standard, which only provides 7 bits for the patch number. The number of banks is also limited to 128, for similar reasons.


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr68 The manual page https://pluginguru.net/unify/manual/doku.php?id=midi-patch-select explains that you can use either patch names (as they appear in Unify) or patch file names (on disk) in your MIDI Bank files.

In future I hope to add the ability to to create/edit bank files inside the Unify GUI, in which case you would select patches from the browser, so the patch name / file name distinction basically won't matter.

If anyone has ideas about how the bank-file editing GUI should work, I'm very interested. One thing I think would be important is the ability to audition patches, to make sure you're selecting the right one in each case.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I realized that after I checked the documentation and so I deleted my last post. Pretty cool how you can use either patch names or file names.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I noticed that the "Changing patches with MIDI" instructions indicate you add 1 to the patch number?  Is that assuming that Unify will be receiving program changes 0 thru 127, rather than 1 thru 128?  I think that's why I have to start my 1_1.txt file at number 2 because my synth sends 1 thru 128 - which I verified with Midi Monitor.

First few lines of my 1_1.txt file:

2 Live / 001 Bottle PanPipes.unify
3 Live / 002 TruePianos.unify
4 Live / 003 DB-33.unify

If I have this correct, could there be a checkbox option or something to choose between 0 thru 127 versus 1 thru 128?

 


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr68

The whole question of 0-based vs. 1-based numbering has dogged the industry since the earliest days of MIDI. The actual 7-bit binary numbers in MIDI messages are 0-based (0-127), but most most MIDI software (including MIDI Monitor) displays these as 1-128 by adding 1. When MIDI Monitor reports "program change 128", the actual binary number is 127.

When making your text files, you need to add 1 to what MIDI Monitor shows, so YES, if the lowest program-change number your controller sends shows in MIDI Monitor as 1, you should put "2" on the corresponding line in your MIDI bank file.

I like your idea to provide the option to choose between 0- and 1-based numbering. I'll look into that. Would you want a checkbox in MIDI Monitor, or some kind of option for the text files, or both?


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I tried numbering like this:

1 Live / 001 Bottle PanPipes.unify
2 Live / 002 TruePianos.unify
3 Live / 003 DB-33.unify

But when I send PC 1 (Midi Monitor shows 1), it goes to the 2nd patch.  If I send it PC 2 (Midi Monitor shows 2), it goes to the 3rd patch, and so on.  Is it because Midi Monitor (or Unify) increments by one, that this happens?

Answering your question, I think both options might be good.  At first I was thinking about an option in Setup, maybe next to the Bank/Program Change checkbox.  But what if you have 2 different kybd controllers, one using 0-127, and the other doing 1-128.  Since setup settings appear to be global, there would be no way to accommodate both simultaneously.  But it seems that adding it to the text files would be a good way to handle either situation since you could have different text files for either kybd controller.

Thanks so much for considering this.

 

 


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr68

I just edited my reply to your earlier post, because I had said that MIDI Monitor adds 1 to displayed program-change values, but this is wrong. MIDI Monitor displays all MIDI data in all their un-varnished, binary glory, so program-change values will appear as 0 through 127.

The attached screenshot shows what MIDI Monitor displays when Unify receives bank- and program-change messages with the lowest possible value (binary 0, corresponding to 1 in the names and content of MIDI bank files):

I'd be a bit surprised if the lowest MIDI program-change number your controller can send is in fact 1, not 0. It certainly can't send 128, because 127 is the highest number that can be represented using the seven data-bits MIDI uses -- there is no such thing as "program-change 128".

Because most people (other than computer nerds) aren't used to the idea of counting things starting from zero, most MIDI systems have tended to display these values as 1-128 (by adding 1), so I chose to do the same for Unify's MIDI Bank files, but not MIDI Monitor.

If the lowest MIDI program-change number your controller sends is in fact 1, then YES, you need to number the lines in your MIDI Bank files starting at 2.

What type of controller are you using? I'd like to look up the specs.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I'm using a DX7IIFD (with Grey Matter upgrade) from the 80s.  I just figured out what's going on thanks to your input.  Each of the 32 switches can send its own unique Patch, midi channel, etc.  I thought for instance when I chose switch 1, that I was sending the lowest number which in the display showed PC 1.  On closer inspection, it can actually go to 0.  It's probably been set that way for decades, I never thought to look at it closely.  So all my switches are one higher than they should be is the problem.  I'm going to go thru all of the switches and set them one lower which should solve the numbering issue.  Or maybe I'll just start the numbering at 2 - that'll be a lot easier.  Sorry for any run around and thanks again for helping solve this.

This post was modified 12 months ago by craigr68

getdunne liked
ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr Funny, I have a DX7IIFD with Grey Matter E! as well. I had no idea the program-select buttons could be programmed individually like that.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

Oh, that's cool you have one.  I always liked the keyboard feel and Midi capabilities with the upgrade.  If you're in one of the performances, which you have 4 banks of 32 - you go Edit 28 and there you should find Midi Channel, Transpose, Patch Number, Curv, Level (Velocity).  And those settings are unique per switch.  To store it you have to turn off Memory protect (Edit-14) beforehand.  


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr A bit off-topic, but do you know anything about adjusting the DX's aftertouch sensor? I basically bought mine to experiment with aftertouch, but it works so poorly as to be almost useless. I've read that the sensor can be adjusted somehow.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

No, not off hand.  In about the 4th octave of mine, it responds at about 50%, but the other octaves are ok.  I tried taking it apart a couple years ago, and came to the conclusion that the aftertouch sensor is so buried into the keybed, that I'd probably break it trying to get at it, so I backed off.  I tried googling fixes a few times - others talk about problems similar to mine or not working at all, and so far I haven't come across a fix.  I would think even if you had a replacement, it might be difficult.  I'll let you know if I come across anything.

As far as operating it goes, I have a book called "The Complete DX7II" by Howard Massey that is quite thick and full of info - but nothing about repairing it.  I think repair manuals probably exist.  If mine ever suddenly dies, I'll probably replace it with some other keyboard controller.  I've been looking at some, but I'm disappointed with the lack of buttons like the DX7II has.  I love that I can push a button and send a Prog Change for instance, even though I automate them in my DAW.  Newer kybd controllers seem to lack switching and everything is somewhere in a menu or combination of button pushes etc.  And their keyboard feel is too springy.  But there's probably some that would do.


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

I happen to take my DX7IIFD apart today to check and replace the battery.  I refreshed my memory about how Yamaha implemented aftertouch.  You might want to take a look at the youtube video link below.  Although it's about replacing the felt of a DX7 (not DX7II), towards the end he shows a little bit about adjusting the aftertouch.  There's a small circuit board, about 1.5" by 2" that the aftertouch plugs into.  It's quite obvious if you remove the back of the instrument.  It has 2 potentiometers - Gain and Offset.  I haven't seen any instructions on how to exactly set them, but in the video the guy just looks at aftertouch data on his laptop while he's tweaking.  Maybe just adjusting your gain would help.  You could mark with a sharpie where they are originally in case you need to backtrack.  I think the actual aftertouch sensor is just below the keys and underneath some felt.

https://www.youtube.com/watch?v=GQTF2rda6WM


ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 

@craigr68 Thanks yes I'd found that video myself and tore the DX apart yesterday. All it needed was to jiggle each of the trimmers and it's working far more consistently across the keyboard now, but the sheer amount of pressure needed is still way too much.


ReplyQuote
SSquared
(@ssquared)
Member
Joined: 2 years ago
Posts: 165
 

Aftertouch is a notoriously fiddly option on most any keyboard.  Between limited velocity and aftertouch, the DX had some issues, but still was a trailblazer in the industry.  Aftertouch seems like one of the most inconsistently implemented features across keyboards which leads to both confusion and disappointment.  I have aftertouch on the Korg 01/wfd and ended up never using it (sorry John).  I now have aftertouch on the Native Instruments S61 and, though it's still not ideal, I actually use it this time around.  Aftertouch is often too difficult to use for any type of smooth movement.  Some keyboards require just too much pressure.  It's one thing I do like about the S61 aftertouch, is that it feels a bit easier to use and doesn't require a ton of pressure.

I believe I recall John making mention of aftertouch two years ago and mentioned how the inconsistencies across keyboards makes it a feature he leaves off when programming.  You may have it working for YOUR keyboard, but then falls flat on someone else's.  Too hard to program for when there are such wide variances.

It can make for good discussion.  I read arguments for both sides.

Thinking about this, the mod wheel delay feature in Guru Sampler may actually help if this delay feature could be implemented as a general product feature. Smoothing out aftertouch could actually make it more useful for people who find aftertouch so difficult to use other than on/off.

Ableton Live 10, Omnisphere, Native Instruments (Pianos), Spire, Diva, SynthMaster, Alchemy 1.55, Addictive Keys, Unify


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  
Posted by: @getdunne

@pottz

Thank you for bringing this to my attention! You are right--program change events are currently processed by the GUI editor, not by the DSP part of the plug-in. I'm in the midst of migrating several things out of the editor, and it looks like I missed this one.

I promise to fix this is the next release of Unify.

Hi Shane,

 

Was this done in the latest release?  I couldn't see any reference in the release notes.

 

Cheers

Steve

 


ReplyQuote
craigr68
(@craigr68)
Trusted Member
Joined: 1 year ago
Posts: 89
 

Now that background program changes are possible with Unify 1.2, it seems to be working well.  I took one of my songs that had about 8 instrument Unify tracks in Cakewalk.  I reduced them down to just 2 unify tracks.  I start out playing on track 1.  While that's going on, automated program changes are loading on track 2.  When time comes to play track 2 it's already loaded, then I automate a switch to it.  That back and forth routine goes on to the end of the song.  That way all prog changes are automated and I don't have to take my hands off my keyboards and it's all in 2 tracks.  This is something I've always wanted to be able to do.  Great job Shane and John!  And now I need to deep dive into all the other new stuff.

This post was modified 12 months ago by craigr68

JeremyH and getdunne liked
ReplyQuote
getdunne
(@getdunne)
Member Admin
Joined: 2 years ago
Posts: 2850
 
Posted by: @pottz

Was this done in the latest release?  I couldn't see any reference in the release notes.

Yes.


ReplyQuote
Pottz
(@pottz)
Eminent Member
Joined: 1 year ago
Posts: 37
Topic starter  

@getdunne Awesome  thanks for the quick resolution...time to make Unify part of my live set now


ReplyQuote
Share: