virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Still new to all of this? Feel free to post in any of the subforums on this site, but in this subforum newbie questions are especially encouraged!

Moderators: MattKingUSA, khz

sprock
Established Member
Posts: 69
Joined: Mon Mar 16, 2015 8:57 am
Has thanked: 1 time
Been thanked: 2 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by sprock »

Yey, it worked (getting sound by changing the paths, that is).

But now I encountered some problems:

First of all my very old MIDI-Keyboard (Roland D-10) is not VPO-perfomance orchestra compatible, I need a modwheel.

And I have some clicks (weird sounds) regularly occuring when playing and/or recording instruments. It's so bad that it's unusable really.

(But DSP is always just around 15%. I am using a USB Focusrite Scarlett 2i4, JACK is set with buffer 512 and 3 periods. OS is Ubuntu Studio, notebook with i3-3110m cpu and 8GB Ram)

And the samples are quite short (oboe for example around 2 seconds) and don't loop correctly in the sense that there is not a steady sustain, but it stops and starts very audibly every 2 seconds or so. But maybe this has to do with the Midi keyboard, I guess that I need to buy a modern controller.

Unfortunately I don't have much MIDI recording experience at all. Just some drumkit stuff in Harrison Mixbus but there I didn't experience any problems.
User avatar
Michael Willis
Established Member
Posts: 1458
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Has thanked: 70 times
Been thanked: 166 times
Contact:

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by Michael Willis »

sprock wrote: Fri Feb 28, 2020 6:39 pmBut now I encountered some problems
It's quite possible that there are janky problems with this template.

The first thing I suggest is try the standard SFZ files from VPO instead of performance. If you don't have them yet, it's just a matter of downloading and extracting them to the same place. Then open up the sfizz plugin, let's say the one on the oboe track, and load one of the standard oboe SFZ files. See how it sounds if you play with it.

You can also try writing out some midi notes on the track using the mouse, just to test if something wacky is happening with the midi events coming from your controller. Create a new region, create some notes in the instrument's range, and maybe make an automation lane for the mod controller with a little bit of up-and-down. Play it back and observe whether it exhibits the same bugs.

Finally, if nothing is working with the template, try creating a brand new Ardour project, add a few midi tracks with sfizz, load up one of the orchestral instruments on each one, make a reverb bus with Dragonfly Hall (load the medium clear hall setting), make an aux send on each midi track to the reverb bus, and then try making a little arrangement and see how it sounds. You might be able to get it to work by building it yourself like this.
sprock
Established Member
Posts: 69
Joined: Mon Mar 16, 2015 8:57 am
Has thanked: 1 time
Been thanked: 2 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by sprock »

Michael Willis wrote: Fri Feb 28, 2020 7:05 pm The first thing I suggest is try the standard SFZ files from VPO instead of performance. If you don't have them yet, it's just a matter of downloading and extracting them to the same place. Then open up the sfizz plugin, let's say the one on the oboe track, and load one of the standard oboe SFZ files. See how it sounds if you play with it.
Unfortunately the same result. By the way, the sustain loop problem only exists in certain instruments, e.g. oboe, bassoon, horn, trumpet, but does work without problem in others, e.g. flute, clarinet, string instruments, timpani roll. It's weird. Does someone else experience the same with these instruments and can confirm this?
Michael Willis wrote: Fri Feb 28, 2020 7:05 pm You can also try writing out some midi notes on the track using the mouse, just to test if something wacky is happening with the midi events coming from your controller.
Unfortunately same result. Same also with sfizz's built-in midi keyboard.
Michael Willis wrote: Fri Feb 28, 2020 7:05 pm Create a new region, create some notes in the instrument's range, and maybe make an automation lane for the mod controller with a little bit of up-and-down. Play it back and observe whether it exhibits the same bugs.
I'll need more time for this since some of these things are new to me (automation especially). But I think the problem lies somewhere else, why would flute and clarinet sustain loop without issues and oboe, bassoon and others don't?
Michael Willis wrote: Fri Feb 28, 2020 7:05 pm Finally, if nothing is working with the template, try creating a brand new Ardour project, add a few midi tracks with sfizz, load up one of the orchestral instruments on each one, make a reverb bus with Dragonfly Hall (load the medium clear hall setting), make an aux send on each midi track to the reverb bus, and then try making a little arrangement and see how it sounds. You might be able to get it to work by building it yourself like this.
I hope, I'll find time for this on Sunday.

Oh, about the clicking sounds: They appear only when I play something fast.

Thanks for your help, Michael!
User avatar
Michael Willis
Established Member
Posts: 1458
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Has thanked: 70 times
Been thanked: 166 times
Contact:

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by Michael Willis »

Hmm... I really don't know what's gone wrong here. What version of sfizz are you using? It seems like it's a problem with the plugin, and how it interprets VPO.
sprock
Established Member
Posts: 69
Joined: Mon Mar 16, 2015 8:57 am
Has thanked: 1 time
Been thanked: 2 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by sprock »

Sfizz is version 0.2.0 from here: https://github.com/sfztools/sfizz/relea ... d64.tar.gz

By the way, besides the "bin" and "lib" directories there was also a third directory in it that I can't make sense of, it's called "include" and contains two files: sfizz.h and sfizz.hpp

Would I have to do something with those? I just dropped the sfizz.lv2/ into ~/.lv2/
sprock
Established Member
Posts: 69
Joined: Mon Mar 16, 2015 8:57 am
Has thanked: 1 time
Been thanked: 2 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by sprock »

MaNa1977 wrote: Tue Jan 28, 2020 8:53 am in '/home/markus/.config/ardour5/templates/Virtual Playing Orchestra/Virtual Playing Orchestra.template' i have changed the path to 'template-dir="/Users/markus/Library/Preferences/Ardour5/templates/Virtual Playing Orchestra"'
I think here lies the error. The path you changed to is not correct (I found it strange as well but as Michael told me, this is on a Mac.) I assume you are on Ubuntu or an Ubuntu based system?

If so, then in the template file you need to replace this path:

template-dir="/Users/michaelwillis/Library/Preferences/Ardour5/templates/Virtual Playing Orchestra"

with this:

template-dir="/home/markus/.config/ardour5/templates/Virtual Playing Orchestra"

not template-dir="/Users/markus/Library/Preferences/Ardour5/templates/Virtual Playing Orchestra"

And all of them, the path is in the template multiple times.
sprock
Established Member
Posts: 69
Joined: Mon Mar 16, 2015 8:57 am
Has thanked: 1 time
Been thanked: 2 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by sprock »

Michael Willis wrote: Fri Feb 28, 2020 7:05 pm Finally, if nothing is working with the template, try creating a brand new Ardour project, add a few midi tracks with sfizz, load up one of the orchestral instruments on each one, make a reverb bus with Dragonfly Hall (load the medium clear hall setting), make an aux send on each midi track to the reverb bus, and then try making a little arrangement and see how it sounds. You might be able to get it to work by building it yourself like this.
I finally came to do it. Alas, no proper sample looping on the hoboe still. I (uneducatedly) guess it's sfizz.

Next I'm going to check out Sforzando (Windows vst via Carla rack). And while I am at it, I'll be trying out using Reaper instead of Ardour as it offers more MIDI features. Well, by this I'd leave the realm of this thread. So, with upcoming questions about this (and they probably will) I'll use different threads.

Thanks again, Michael, for your template. I learned something about 3D-Reverb for orchestra from it.
tseaver
Established Member
Posts: 404
Joined: Mon Mar 13, 2017 6:07 am
Has thanked: 11 times
Been thanked: 100 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by tseaver »

@Michael Willis Thanks very much for providing this template! I have been able to work with it after tweaking my system (symlinking VPO to `/opt/VirtualPlayingOrchestra`, but had to recreate the `Panagement 2` plugin on the trumpet track, as your version has it installed as `mac-vst` rather than `lv2`. Fortunately, I was able to hammer in similar settings using the generic editing UI.
Ubuntu, Mixbus32C; acoustic blues / country / jazz
User avatar
Michael Willis
Established Member
Posts: 1458
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Has thanked: 70 times
Been thanked: 166 times
Contact:

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by Michael Willis »

tseaver wrote: Tue Mar 24, 2020 5:59 pm @Michael Willis Thanks very much for providing this template! I have been able to work with it after tweaking my system (symlinking VPO to `/opt/VirtualPlayingOrchestra`, but had to recreate the `Panagement 2` plugin on the trumpet track, as your version has it installed as `mac-vst` rather than `lv2`. Fortunately, I was able to hammer in similar settings using the generic editing UI.
Wow, I'm glad that you were able to get it working. I've been thinking that I should save this as an Ardour session instead of a template, since there are a number of issues that I haven't been able to solve with templates.

Anyway, let me know how it goes! I would love to hear what you do with it.
tseaver
Established Member
Posts: 404
Joined: Mon Mar 13, 2017 6:07 am
Has thanked: 11 times
Been thanked: 100 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by tseaver »

I wondered about using Lua to set up the session, rather than loading it from a template: I think there is a facility for prompting for e.g. a file-path to VPO. I could imagine setting up the tracks quickly in a for loop, but the panning / balance / reverb sends would be harder.
Ubuntu, Mixbus32C; acoustic blues / country / jazz
tseaver
Established Member
Posts: 404
Joined: Mon Mar 13, 2017 6:07 am
Has thanked: 11 times
Been thanked: 100 times

Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10

Post by tseaver »

I wrote:
I wondered about using Lua to set up the session, rather than loading it from a template: I think there is a facility for prompting for e.g. a file-path to VPO. I could imagine setting up the tracks quickly in a for loop, but the panning / balance / reverb sends would be harder.
I made a stab at such a script, but unfortunately the Ardour LUA scripting interface does not support assigning non-numeric values (such as the name of the SFZ file) for plugin properties.

Here is what I tried:

Code: Select all

ardour {
    ["type"]    = "EditorAction",
    name        = "Virtual Public Orchestra tracks",
    description = [[
    Set up tracks for VPO.
]]
}

function session_setup ()
    return true
end

function route_setup ()
    return
    {
        ['Insert_at'] = ARDOUR.PresentationInfo.max_order
    }
end

function factory (params) return function ()

   --at session load, params will be empty.  in this case we can do things that 
we -only- want to do if this is a new session
    if (not params) then
       Editor:set_toggleaction("Rulers", "toggle-tempo-ruler", true)
       Editor:set_toggleaction("Rulers", "toggle-meter-ruler", true)

       Editor:access_action("Transport", "primary-clock-bbt")
       Editor:access_action("Transport", "secondary-clock-minsec")

       Editor:set_toggleaction("Rulers", "toggle-minsec-ruler", false)
       Editor:set_toggleaction("Rulers", "toggle-timecode-ruler", false)
       Editor:set_toggleaction("Rulers", "toggle-samples-ruler", false)

       Editor:set_toggleaction("Rulers", "toggle-bbt-ruler", true)
    end
        local sfizz = ARDOUR.LuaAPI.new_plugin_info("sfizz", ARDOUR.PluginType.L
V2)

    if (sfizz:isnil()) then
        err_dlg = LuaDialog.Message("Missing plugin", "sfizz", LuaDialog.Message
Type.Error, LuaDialog.ButtonType.OK)
        return
    end

    local p         = params or route_setup ()
    local insert_at = p["insert_at"] or ARDOUR.PresentationInfo.max_order

    local dialog_options = {
        {type="heading", title="VPO Session"},
        {type="folder", key="vpo_dir", title="VPO Directory", path="/opt/Virtual
-Playing-Orchestra3"},

        {type="heading", title="Woodwinds", col=0, colspan=5, align="left"},
        {type="label", title="Piccolo", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="pic
colo_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="pi
ccolo_s",},
        {type="label", title="Flute", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="flute_l", title="Long",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="flute_s", title="Short",},
        {type="label", title="Oboe", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="oboe_l", title="Long",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="oboe_s", title="Short",},
        {type="label", title="Clarinet", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="clarinet_l", title="Long",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="clarinet_s", title="Short",},
        {type="label", title="Bassoon", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="bassoon_l", title="Long",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="bassoon_s", title="Short",},

        {type="heading", title="Brass", col=0, colspan=5, align="left"},
        {type="label", title="FH", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="horn_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="horn_s",},
        {type="label", title="Tpt", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="trumpet_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="trumpet_s",},
        {type="label", title="Tbn", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="trombone_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="trombone_s",},
        {type="label", title="Tba", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="tub
a_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="tu
ba_s",},

        {type="heading", title="Percussion", col=0, colspan=5, align="left"},
        {type="checkbox", default=true, col=1, colspan=1, title="Tympani", key="
tympani",},
        {type="checkbox", default=true, col=2, colspan=1, title="Untuned", key="
untuned",},
        {type="checkbox", default=true, col=1, colspan=1, title="Tubular Bells",
 key="tubular",},
        {type="checkbox", default=true, col=2, colspan=1, title="Xylophone", key="xylophone",},
        {type="checkbox", default=true, col=1, colspan=1, title="Glockenspiel", key="glockenspiel",},
        {type="checkbox", default=true, col=2, colspan=2, title="Harp", key="harp",},
        {type="checkbox", default=true, col=1, colspan=1, title="Celeste", key="celeste",},
        {type="checkbox", default=true, col=2, colspan=1, title="Marimba", key="marimba",},

        {type="heading", title="Strings", col=0, colspan=5, align="left"},
        {type="label", title="Violin 1", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="vln1_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="vln1_s",},
        {type="checkbox", default=true, col=3, colspan=1, title="Pizz", key="vln1_p",},
        {type="checkbox", default=true, col=4, colspan=1, title="Trem", key="vln1_t",},
        {type="label", title="Violin 2", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="vln2_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="vln2_s",},
        {type="checkbox", default=true, col=3, colspan=1, title="Pizz", key="vln2_p",},
        {type="checkbox", default=true, col=4, colspan=1, title="Trem", key="vln2_t",},
        {type="label", title="Viola", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="vla_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="vla_s",},
        {type="checkbox", default=true, col=3, colspan=1, title="Pizz", key="vla_p",},
        {type="checkbox", default=true, col=4, colspan=1, title="Trem", key="vla_t",},
        {type="label", title="Cello", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="vc_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="vc_s",},
        {type="checkbox", default=true, col=3, colspan=1, title="Pizz", key="vc_p",},
        {type="checkbox", default=true, col=4, colspan=1, title="Trem", key="vc_t",},
        {type="label", title="Double Bass", col=0, colspan=1},
        {type="checkbox", default=true, col=1, colspan=1, title="Long", key="db_l",},
        {type="checkbox", default=true, col=2, colspan=1, title="Short", key="db_s",},
        {type="checkbox", default=true, col=3, colspan=1, title="Pizz", key="db_p",},
        {type="checkbox", default=true, col=4, colspan=1, title="Trem", key="db_t",},
    }

    local dlg = LuaDialog.Dialog("VPO Tracks", dialog_options)
    local rv = dlg:run()

    if (not rv) then
        return
    end

    function rbga(red, green, blue)
        return (red << 24) + (green << 16) + (blue << 8) + 0xff
    end

    local woods_group, brass_group, perc_group, strings_group

    local has_woods = (
        rv["piccolo_l"] or rv["piccolo_s"] or
        rv["flute_l"] or rv["flute_s"] or
        rv["oboe_l"] or rv["oboe_s"] or
        rv["clarinet_l"] or rv["clarinet_s"] or
        rv["bassoon_l"] or rv["bassoon_s"]
    )

    if has_woods then
        woods_group = Session:new_route_group("Woodwinds")
        woods_group:set_rgba(rbga(0, 0, 127))
    end

    local has_brass = (
        rv["horn_l"] or rv["horn_s"] or
        rv["trumpet_l"] or rv["trumpet_s"] or
        rv["trombone_l"] or rv["trombone_s"] or
        rv["tuba_l"] or rv["tuba_s"]
    )

    if has_brass then
        brass_group = Session:new_route_group("Brass")
        brass_group:set_rgba(rbga(96, 96, 0))
    end

    local has_perc = (
        rv["tympani"] or
        rv["untuned"] or
        rv["tubular"] or
        rv["xylophone"] or
        rv["glockenspiel"] or
        rv["harp"] or
        rv["celeste"] or
        rv["marimba"]
    )

    if has_perc then
        perc_group = Session:new_route_group("Percussion")
        perc_group:set_rgba(rbga(96, 0, 96))
    end
   
    local has_strings = (
        rv["vln1_l"] or rv["vln1_s"] or rv["vln1_p"] or rv["vln1_t"] or
        rv["vln2_l"] or rv["vln2_s"] or rv["vln2_p"] or rv["vln2_t"] or
        rv["vla_l"] or rv["vla_s"] or rv["vla_p"] or rv["vla_t"] or
        rv["vc_l"] or rv["vc_s"] or rv["vc_p"] or rv["vc_t"] or
        rv["db_l"] or rv["db_s"] or rv["db_p"] or rv["db_t"]
    )

    if has_strings then
        strings_group = Session:new_route_group("Strings")
        strings_group:set_rgba(rbga(127, 0, 0))
    end

    function create_midi_track(name, chan_count) -- call this function with a name argument and output channel count
        local sfizz_p = ARDOUR.LuaAPI.new_plugin(Session, "sfizz", ARDOUR.PluginType.LV2, "")
        Session:new_midi_track(
            ARDOUR.ChanCount(ARDOUR.DataType ("midi"), 1),              -- inputs
            ARDOUR.ChanCount(ARDOUR.DataType ("audio"), chan_count),    -- outputs
            true,                                                       -- strictIO
            ARDOUR.PluginInfo(),                                        -- instrument
            nil,                                                        -- pset (preset record)
            nil,                                                        -- route_group
            1,                                                          -- how_many
            name,                                                       -- name_template
            1,                                                          -- order
            ARDOUR.TrackMode.Normal                                     -- mode
        )
        return true
    end

    function add_lv2_plugin (track, pluginname, position)
        local p = ARDOUR.LuaAPI.new_plugin(Session, pluginname, ARDOUR.PluginType.LV2, "")
        if not p:isnil () then
            track:add_processor_by_index(p, position, nil, true)
        end
    end
end end
Ubuntu, Mixbus32C; acoustic blues / country / jazz
Post Reply