A MIDI-only VST patch-holder plugin, aka total recall without VC.

  • Hi Virus users!


    *** Please go to the end of this thread for last updates ***.


    My VST plugin is ready for a release. It's basically a patch-holder which communicates with a Virus TI through MIDI.
    It's called AceMidivirus, and it's a fake VSTi plugin you load into a dummy track and which gets loaded/saved with your song.
    When loading your song, it switches your synth to "sequencer mode" and sends the song patches to the different parts.


    Here's what it looks like inside FL studio (for non-FL users: it's the dialog on the left-half of the picture).



    [Blockierte Grafik: http://ace17.free.fr/acemidivirus.PNG]


    It's completely free and open-source, you can download it here:
    https://launchpad.net/acevirus


    Here's a direct link to the archive (the plugin is called "AceMidivirus-r69.dll") :
    http://launchpad.net/acevirus/…oad/AcePluginPack-r69.zip


    Quick start:
    - create a MIDI track in your DAW.
    - insert an instance of AceMidivirus into it.
    - Choose "Virus TI Synth" in both comboboxes at the bottom of the plugin window.
    - Then click "receive" on the parts you want to download from the synth. They will be saved when you will save your song.
    - If you have tweaked controllers and want to restore the original state of the patch, click "Send".
    - If you want to load/save patches from files, the export/import buttons will do the job.


    Remark: as the plugin completely bypasses the host to communicate with the Virus (because many hosts don't forward MIDI sysex), and the "Virus TI Synth" midi driver don't allow multiple connections : so the host must not directly open the "Virus TI Synth" MIDI device. That's why I strongly recommend using "MIDI Yoke" + "MIDI OX" in order not to connect directly to "Virus TI Synth". I'll be glad to post information on how to do this if someone is insterested.
    For Reaper users: a non-host-bypassing option is in work ;)


    Please let me know what you think! Any comments, feature requests, tips, are welcome.

  • Good job!


    Going to test this on my (old) laptop somewhere the next few days, this will be great to reduce the workload i usually get when using VC on it - only has 1 gig of ram so i welcome every way to preserve memory .


    I hope Access is cool with this plug


    *edit*


    I took the liberty to post this on dogs on acid since there are quite a lot of virus users there aswell, thread is located here:
    http://www.dogsonacid.com/show…p?p=10616342#post10616342

    Breaxity - bringing breakbeats and basslines for over 5 years on urgent.fm - tune in - rinse out!

    Einmal editiert, zuletzt von Hecticcc ()

  • Good job!


    Going to test this on my (old) laptop somewhere the next few days, this will be great to reduce the workload i usually get when using VC on it - only has 1 gig of ram so i welcome every way to preserve memory .

    Thank you!
    This is the main reason I wrote this plugin : saving resources, especially CPU power. The display of the VC user interface eats up to 30% CPU on my computer (1.8Ghz), which is far from acceptable.
    Not to mention the ridiculously long MIDI file (all patches) parsing at the VC plugin startup. The only workaround I found was to move all the MIDI files to another directory.

  • Here's a blind how-to that will help you setup your environment.


    • Install MIDI Yoke, and configure it so you have at least 2 virtual MIDI ports. You may have to reboot your computer after that.


    • At this point, if you open the MIDI configuration of your favorite DAW, you should see additional ports.


      In the MIDI output ports :
      ....
      "Out To MIDI Yoke: 1"
      "Out To MIDI Yoke: 2"
      ....


      And in the MIDI input ports :
      ...
      "In From MIDI Yoke: 1"
      "In From MIDI Yoke: 2"
      ...
      Close your DAW at this point.


    • Install MIDI-OX, and launch it.
    • Go to Options->Customize Port Names.


      • Rename "In From MIDI Yoke: 1" to "To Virtual Virus TI Synth (Y1)".
      • Rename "Out To MIDI Yoke: 1" to "To Virtual Virus TI Synth (Y1)".
      • Rename "In From MIDI Yoke: 2" to "From Virtual Virus TI Synth (Y2)".
      • Rename "Out To MIDI Yoke: 2" to "From Virtual Virus TI Synth (Y2)".


    • Go to Options->Midi devices.

      • In the top-left part of the dialog box ("MIDI Inputs:"), select :

        • "Virus TI Synth"
        • "To Virtual Virus TI Synth (Y1)"
        • "From Virtual Virus TI Synth (Y2)"


      • In the bottom-left part of the dialog box ("MIDI Outputs:"), do the same, select :

        • "Virus TI Synth"
        • "To Virtual Virus TI Synth (Y1)"
        • "From Virtual Virus TI Synth (Y2)"


      • Now, you can close the "Midi devices" dialog box.


    • Now, go to View->Port Routings.

      • Right click in the window, and click "Disconnect All".
      • Connect the input port "To Virtual Virus TI Synth (Y1)" to the output port "Virus TI Synth".
      • Connect the input port "Virus TI Synth" to the output port "From Virtual Virus TI Synth (Y2)".


    • That's all for MIDI-OX. But don't close it, it needs to stay opened.


    • Now, open your DAW, go to the MIDI configuration, and make sure it's NOT outputing to "Virus TI Synth". Make it output to "Out To MIDI Yoke: 1" instead. (MIDI-OX will forward data to Virus TI Synth).
    • Instanciate my plugin, and at the bottom of the window, select :

      • As input : "In From MIDI Yoke: 2" (aka "From Virtual Virus TI Synth (Y2)").
      • As output : "Out To MIDI Yoke: 1" (aka "To Virtual Virus TI Synth (Y1)").


    • Click "recv" on part 1. If the name of the patch appears in the plugin, bingo! It's been downloaded from the Virus.
    • From now, if you want to recall a patch for a part, click "Send" on that part. If you save your project, the plugin state will also be stored.
    • If you load a project, you will need to open the plugin window, and click "Send" on the part you want to restore (I'm working on a version which automatically does this on project loading)
    • Create a MIDI track, route it normally to "Out To MIDI Yoke: 1", as you would have done with good old MIDI devices.



    Here's a technical explanation of why all of this is necessary, although I'm still trying to find a way to talk to the Virus driver (rather than talking MIDI). The problem is you can't open twice the "Virus TI Synth" port from the same process (although you can have two applications talking to "Virus TI Synth"). I believe the limitation does NOT comes from the Access MIDI driver, which is kernel mode and allows multiple connections, but from the Microsoft user-mode wrapping above this driver.


    But the plugin needs to talk directly to "Virus TI Synth" (to send/receive SYSEX), and the DAW needs too (to send MIDI clock, and of course, MIDI events). So the solution is to create a virtual MIDI device which accepts several connections, and which redirects MIDI traffic from/to the real "Virus TI Synth" !


    Please, if I'm not clear, tell me! :)

  • THANK YOU!


    I do appreciate this greatly. It is far more convoluted than I thought, I never would have figured this out. I hope to get to trying it out later today. I am very glad to hear you are working further on this too. A future update which allows patch loading upon project start up sounds incredible. If you could get across the limitation in how one connects to the Virus Ti Synth that would be icing on the cake. Keep up the great work!

  • Woah! Very cool indeed. I never actually did use the other version you posted directions for due to the convoluted nature in getting it working, I just gave up on using the Virus and have been putting all my time in Halion 4 for the past month. I will surely give this new version a checking out however as it may just bring me back to Virus land.


  • Have you considered making aMac version of this plugin ? :)
    I cannot use this as I run OSX :(


  • Have you considered making aMac version of this plugin ? :)
    I cannot use this as I run OSX :(


    I'm sorry, but I've never developed for Macos. The plugin runs under Windows and I'm currently working on the Linux port.
    At the moment, the plugin uses a lot of Windows-specific MIDI wizardry (which is not needed under Linux) too allow multiple MIDI connections from the same process, I'm not even sure it will be possible to make it work under Macos.
    I may give it a try if some dudes (with minimal programming knownledge) are willing to help me with the testing :whistling:
    Too bad you run Macos, in the next version the plugin will feature knobs for mouse-access to parameters and automation support ! :thumbup:

  • Too bad you run Macos, in the next version the plugin will feature knobs for mouse-access to parameters and automation support ! :thumbup:


    ... and here it is :
    Ace Plugin Pack r280 (tested)
    Ace Plugin Pack r302 (testing)


    The plugin is called "AceVirusTi-rXXX.dll" (beware not to confuse it with the old AceMidiVirus!).


    This time, you need one plugin instance per part, so you can assign one sequencer track to one part of the Virus. Each part remember its settings, and exposes the Virus parameters as VST parameters. The audio still goes through your soundcard (not through USB). Automation is half-supported, there may be glitches if you overflow your MIDI output. Beware!


    [Blockierte Grafik: http://bazaar.mooo.com/~alaiwa…rusTi-r302-screenshot.jpg]


    Any comment is welcome!


    For the curious, the full source code is available on Launchpad.