virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
Moderators: MattKingUSA, khz
-
- 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
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.
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.
- 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: 167 times
- Contact:
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
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.
-
- 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
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 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 same result. Same also with sfizz's built-in midi keyboard.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.
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 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 hope, I'll find time for this on Sunday.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.
Oh, about the clicking sounds: They appear only when I play something fast.
Thanks for your help, Michael!
- 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: 167 times
- Contact:
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
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.
-
- 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
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/
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/
-
- 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
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.
-
- 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
I finally came to do it. Alas, no proper sample looping on the hoboe still. I (uneducatedly) guess it's sfizz.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.
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.
-
- Established Member
- Posts: 405
- Joined: Mon Mar 13, 2017 6:07 am
- Has thanked: 11 times
- Been thanked: 101 times
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
@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
- 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: 167 times
- Contact:
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
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.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.
Anyway, let me know how it goes! I would love to hear what you do with it.
-
- Established Member
- Posts: 405
- Joined: Mon Mar 13, 2017 6:07 am
- Has thanked: 11 times
- Been thanked: 101 times
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
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
-
- Established Member
- Posts: 405
- Joined: Mon Mar 13, 2017 6:07 am
- Has thanked: 11 times
- Been thanked: 101 times
Re: virtual-playing-orchstra with Ardour on Ubuntu Studio 19.10
I wrote:
Here is what I tried:
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.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.
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