WaveLab scripting questions

All topics on WaveLab 8 and WaveLab Elements 8
User avatar
MrSoundman
Senior Member
Posts: 2580
Joined: Fri Dec 24, 2010 3:27 am
Contact:

Re: WaveLab scripting questions

Post by MrSoundman »

PG wrote:
Thu Nov 02, 2017 9:15 am
If you need to register again, you can run this small .bat file:

Code: Select all

cd /d "C:\Program Files\Steinberg\WaveLab Pro 9.5"
"C:\Program Files\Steinberg\WaveLab Pro 9.5\WaveLabPro9_5.exe" /regserver
Thanks, that's working now! (needs to be run once, as Administrator). To help those who are getting started, on Windows you can also control WaveLab from PowerShell:

Code: Select all

# Hello-64.ps1

$app = New-Object -ComObject WaveLabPro9_5.Application
while (!$app.IsReady())
{
    Start-Sleep -Milliseconds 100
} 
$app.Hello()
$app.Quit()
This does not need to be run as Administrator. Note that the name of the ComObject will vary depending on what version of WaveLab you have -- this example is for WaveLab Pro 9.5
Windows 10 • Cubase 10.5.20 • WaveLab 10.0.40 • SpectraLayers 6.0.30 • HALion 6.4.0 • Groove Agent 5.0.20 • Midex

User avatar
MrSoundman
Senior Member
Posts: 2580
Joined: Fri Dec 24, 2010 3:27 am
Contact:

Re: WaveLab scripting questions

Post by MrSoundman »

Here's the PowerShell equivalent to convert a wave file to an MP3:

Code: Select all

# ConvertToMp3.ps1

$ObjNameApp  = "WaveLabPro9_5.Application" # adjust to your version of WaveLab Pro
$ObjNameWave = "WaveLabPro9_5.Wave"
$fileToConvert = "E:\Audio\Awsome.wav" # the name of the source file
$targetFormat = "%factory%\Encoded\Mp3\Mp3 FH 128k cbr" # the format you want to convert to (preset)

$app = New-Object -ComObject $ObjNameApp
while (!$app.IsReady()) # wait for the application to load
{
    Start-Sleep -Milliseconds 100
} 

$wave = New-Object -ComObject $ObjNameWave # create a new wave editor
$wave.Open($fileToConvert) # load the source file
$wave.SaveAs($fileToConvert,$targetFormat) # convert and save in the target format
$wave.Close()
$app.Quit()
The first two lines may need to be adjusted for your specific version of WaveLab Pro. The next two lines should be self-explanatory -- the source file and the format you want to convert it to. The destination file is placed in the same folder as the source file.
Windows 10 • Cubase 10.5.20 • WaveLab 10.0.40 • SpectraLayers 6.0.30 • HALion 6.4.0 • Groove Agent 5.0.20 • Midex

misohoza
Member
Posts: 932
Joined: Sun Oct 05, 2014 12:18 am
Contact:

Re: WaveLab scripting questions

Post by misohoza »

Anyone using Visual Studio Code as external script editor for WaveLab?

I'm trying to put together a type declaration file to provide tooltips and auto-complete suggestions for WaveLab specific scripting functions. It's more the less ready and available here: https://github.com/misohoza/wavelab

I have a few questions that probably only PG can answer:
  • What version of ECMAScript is it? ES5?
  • In documentation examples is a function waitsUntilAllTasksFinished which isn't documented. Are there more undocumented functions or features?
  • I'm trying to "type" function arguments and return values. I'm not quite sure with clipId and fileId. Is clipId a number and fileId an object?
Thanks in advance.
Win 10 Home, 64 bit, 8 gb ram,
Cubase Pro 10.5, Wavelab Pro 9.5, Halion 6, Dorico 3,
NI Komplete 10 Ultimate, Ozone 7,
UR 44

PG
Moderator
Posts: 7747
Joined: Wed Dec 15, 2010 6:15 pm
Contact:

Re: WaveLab scripting questions

Post by PG »

What version of ECMAScript is it? ES5?
I think this is version 3.
The list of functions independent from WaveLab is there:
https://doc.qt.io/qt-5/ecmascript.html
In documentation examples is a function waitsUntilAllTasksFinished which isn't documented. Are there more undocumented functions or features?
No. But the number of functions will grow. FY, this script engine is used to test some parts of WaveLab.
I'm trying to "type" function arguments and return values. I'm not quite sure with clipId and fileId. Is clipId a number and fileId an object?
No, just integer IDs.

Philippe
Philippe

Thea_C
New Member
Posts: 1
Joined: Tue Sep 25, 2018 3:23 pm
Contact:

Re: WaveLab scripting questions

Post by Thea_C »

It would definitely useful to be able to run a script on a folder full of files, even if it was adding a script to a batch processor.

PG
Moderator
Posts: 7747
Joined: Wed Dec 15, 2010 6:15 pm
Contact:

Re: WaveLab scripting questions

Post by PG »

I don't remember for WaveLab 8, but this is indirectly possible in WaveLab 10.
Indeed, it is possible to execute to run an ActiveX script that executes a WaveLab JavaScript. Therefore, if you create an ActiveX script that processes all files of a folder, this is what you are looking for.
BUT, I must say this was never tested, therefore I can't guarantee it works.
To check if it is possible with WaveLab 8, check the WaveLab documentation for the ActiveX class "InnerScript".
Philippe

User avatar
MrSoundman
Senior Member
Posts: 2580
Joined: Fri Dec 24, 2010 3:27 am
Contact:

Re: WaveLab scripting questions

Post by MrSoundman »

I've got both WaveLab Pro 10 and WaveLab Pro 9.5 installed, and now I want to uninstall WaveLab Pro 9.5 and have my (ActiveX) script call WaveLab Pro 10 instead. Two things:

1. The example in the documentation in the WLPro10 Tools folder does not work at all:

Code: Select all

Set app = CreateObject("WaveLab10_0.Application")
If I change this to

Code: Select all

Set app = CreateObject("WaveLabPro10_0.Application")
... it invokes WaveLab Pro 9.5 instead! How can I fix this so that WaveLab Pro 10 is called? I've tried:

Code: Select all

"C:\Program Files\Steinberg\WaveLab Pro 9.5\WaveLabPro9_5.exe" /unregserver
... followed by:

Code: Select all

"C:\Program Files\Steinberg\WaveLab Pro 10.0\WaveLabPro10_0.exe" /regserver
Both execute without error, but WaveLab Pro 9.5 is always invoked when the COM object is created.
Windows 10 • Cubase 10.5.20 • WaveLab 10.0.40 • SpectraLayers 6.0.30 • HALion 6.4.0 • Groove Agent 5.0.20 • Midex

PG
Moderator
Posts: 7747
Joined: Wed Dec 15, 2010 6:15 pm
Contact:

Re: WaveLab scripting questions

Post by PG »

Can you try find and remove references of WaveLabPro9_5.exe in the registry?
Note: you can have both WaveLab 9.5 and 10 installed on the same system, for standard use. But for scripting... well I don't know.
Philippe

User avatar
MrSoundman
Senior Member
Posts: 2580
Joined: Fri Dec 24, 2010 3:27 am
Contact:

Re: WaveLab scripting questions

Post by MrSoundman »

PG wrote:
Thu May 28, 2020 6:29 am
Can you try find and remove references of WaveLabPro9_5.exe in the registry?
I decided to just uninstall WLPro9.5 as I was going to do that anyway. After that, as expected, ActiveX automation does not work at all. Then, from an admin prompt, I did:

Code: Select all

"C:\Program Files\Steinberg\WaveLab Pro 10.0\WaveLabPro10_0.exe" /regserver
... and I can verify that WaveLab Pro 10.0 is registed using this PowerShell that I got here:

Code: Select all

Get-ChildItem HKLM:\Software\Classes -ErrorAction SilentlyContinue | Where-Object {
   $_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path "$($_.PSPath)\CLSID")
} | Select-Object -ExpandProperty PSChildName | Where-Object {$_ -like 'WaveLabPro*'}
... which list all the COM objects we're interested in:

Code: Select all

WaveLabPro10_0.Application
WaveLabPro10_0.AudioMontage
WaveLabPro10_0.BatchProcess
WaveLabPro10_0.InnerScript
WaveLabPro10_0.KeyShortcut
WaveLabPro10_0.Player
WaveLabPro10_0.Recorder
WaveLabPro10_0.Wave
... but invoking the WaveLabPro10_0.Application object does not work:

Code: Select all

$app = New-Object -ComObject WaveLabPro10_0.Application
[...]
Retrieving the COM class factory for component with CLSID 
{A1123938-CAE7-4D98-BC55-C7B4B6ED833A} failed due to the following error: 80040154 Class not registered 
(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Just out of technical curiosity, now that WaveLab is cross-platform, is ActiveX scripting a cul de sac?
Windows 10 • Cubase 10.5.20 • WaveLab 10.0.40 • SpectraLayers 6.0.30 • HALion 6.4.0 • Groove Agent 5.0.20 • Midex

PG
Moderator
Posts: 7747
Joined: Wed Dec 15, 2010 6:15 pm
Contact:

Re: WaveLab scripting questions

Post by PG »

It works here on a recent Windows install with "WaveLab10_0" as reference.
(I run the Hello-64.vbs example script, after changing the name to WaveLab10_0 inside the script).
This ActiveX regristration has always been a mess with Microsoft, and I also met the same experience as you in the past. No idea why.

Just out of technical curiosity, now that WaveLab is cross-platform, is ActiveX scripting a cul de sac?

This is a feature kept, even for future WaveLab version, but no longer enhanced.

Philippe
Philippe

Post Reply

Return to “WaveLab 8 | WaveLab Elements 8”

Who is online

Users browsing this forum: No registered users and 11 guests