UtauSL: Scripting and automation for UTAU

KNΞMΛTCS

Just an UtaForum user
Defender of Defoko
0T9aeG0h.jpg
Allow me to present to you my newest evil invention: UtauSL! The goal of this project is to create a way to quickly automate repetitive tasks in Utau via a simple scripting language. The way it works is it "wraps around" Utau: instead of launching Utau, you launch the UtauSL launcher and open your project from there. The launcher then opens the script/UST editor and launches Utau. In order to update the view in Utau, the launcher automatically restarts it when you run a script.

The version now is not much more than a proof of concept - I've yet to add basic functionality to the scripting such as conditionals, math, the ability to add/remove notes, or even a way to read values already in the UST. But for those so inclined, I have first build attached below - just don't turn the beast loose on your good .UST files, make copies first! After all, this is literally a one day old program.

Does anyone have some tips or comments about the idea? Is it worth continuing? Please drop me one down below!

____________________________________________________________
How to install/run:
Extract the zip, put the program in you utau dir. To use it just run it, hit Open to bring up a browser or you can type a filename in the blank. That's it!

Instructions for scripting:
You can define variables like "var myvar=42". Edit properties of a note by typing "#nnnn Property=value", where nnnn is the index of the note (it must be 4 digit, so 0000, 0001, etc), value is a variable or a direct value. For a list of properties just go to the .UST tab, look at the file to see what's available. You can also edit global properties (tempo, voice bank, so on) just by saying "Property=value" without the number index. Annnd.... That's all for this first version. Expect to see more useful functionality in the future!
 

Attachments

  • tmp_11467-UtauScript-868248954.zip
    7.7 KB · Views: 1

KNΞMΛTCS

Just an UtaForum user
Defender of Defoko
Thread starter
So just in case you're interested, I'm gonna lay out my (current) agenda for UtauSL:
  • Finish var support (math support and reading UST values, to be exact)
  • Add conditionals (probably just 'if' statements for now)
  • Get it semi-usable bug wise
  • Upload Alpha 1 with these features
  • Put Utau's Recent Files list on the launcher
  • Clean up the script editor, potentially add tabs
  • Further work on the script engine, perhaps 'print' and 'read' commands
  • To be continued... and this will probably change as time goes by.
 

riptunes

Teto's Territory
Defender of Defoko
This looks promising! What kind of automation can this be used for? O: Is it possible to use this to have custom envelope settings for specific phonemes, for example? I'm on mobile so I can't play with this for a while @___@
 

KNΞMΛTCS

Just an UtaForum user
Defender of Defoko
Thread starter
This looks promising! What kind of automation can this be used for? O: Is it possible to use this to have custom envelope settings for specific phonemes, for example? I'm on mobile so I can't play with this for a while @___@
The envelopes are stored in the Envelope property in the UST, with 7 numbers. When I create the next version, you should be able to use a script like this:
Code:
var env=0,50,35,0,100,100,0
var lyric=foo

for allnotes
,if get[#count Lyric]=lyric
,#count Envelope=env
,ifend
Keep in mind this is just an example and may or may not reflect the actual syntax of the script in the alpha 1.
 
  • Like
Reactions: riptunes

Chianachini

Ruko's Ruffians
Defender of Defoko
So there is a God.... Automation of repetitive tasks would really help my fingers and my brain. Please continue to look into this if you'd like.

I feel like I'd need a manual in the future though. It seems like the options are endless.
:bigtears:
 
  • Like
Reactions: riptunes