Skip to content

Instantly share code, notes, and snippets.

@Aster1205
Created March 3, 2022 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Aster1205/be095a3d4dedf46ac563b477f7b16470 to your computer and use it in GitHub Desktop.
Save Aster1205/be095a3d4dedf46ac563b477f7b16470 to your computer and use it in GitHub Desktop.
ustの歌詞を最適化 / Synthesizer V Studio Pro 用スクリプト

OptimizeLyricsForUst / ustの歌詞を最適化

ustをインポートした時の歌詞を最適化するSynthesizer V Studio Pro 用スクリプトです。
連続音の歌詞を単独音化し、エイリアス(suffix)も除去します。
日本語(ローマ字も可)の歌詞にのみ対応しています。
(確認していませんが、中国語ピンインでも使用できるかもしれません。)

Synthesizer V Studio Pro 1.5.0 Linux版で動作確認済みです。

インストール方法

Synthesizer V Studio Proのscriptsフォルダに「OptimizeLyricsForUst.js」を配置してください。
scriptsフォルダはエディタ上の「スクリプト>スクリプトフォルダを開く」で開くことができます。
Synthesizer Vを起動してる場合は配置後、「スクリプト>再スキャン」を実行してください。

使用方法

ustファイルをインポート後、ノートを選択した状態でスクリプト「ustの歌詞を最適化」を実行してください。

注意事項

エディタのバーションアップによりスクリプトが動作しなくなる可能性がありますので、ご了承ください。
また、エラー等発生した場合もこちらは一切責任を負いません。

スクリプトの再配布や改造等はライセンスの範囲内でならご自由にしていただけます。

ライセンス

Copyright (c) 2022 Aster
Released under the MIT license
https://opensource.org/licenses/mit-license.php

/**
* Synthesizer V Studio Pro 用スクリプト
* 【ustの歌詞を最適化】
*
* ustをインポートした時の歌詞を最適化するスクリプトです。
* 連続音の歌詞を単独音化し、エイリアス(suffix)も除去します。
* 日本語(ひらがな・カタカナ/ローマ字)の歌詞のみに対応
*
* Copyright (c) 2022 Aster
* Released under the MIT license
* https://opensource.org/licenses/mit-license.php
*/
function getClientInfo() {
return {
"name": SV.T("Optimize lyrics for ust"),
"author" : "Aster",
"versionNumber" : 1.0,
"minEditorVersion" : 65537
};
}
function getTranslations(langCode) {
if(langCode == "ja-jp") {
return [
["Optimize lyrics for ust", "ustの歌詞を最適化"],
];
}
return [];
}
function main() {
var selection = SV.getMainEditor().getSelection();
var selectedNotes = selection.getSelectedNotes();
for(var i = 0; i < selectedNotes.length; i ++) {
var note = selectedNotes[i];
var lyric = note.getLyrics();
// prefixの除去
if(lyric.indexOf(' ') != -1){
var splited = lyric.split(" ");
lyric = splited[1];
}
// suffixの除去
lyric = RemoveSuffix(lyric);
note.setLyrics(lyric);
}
SV.finish();
}
/**
* suffixの除去
* @param lyric
*/
function RemoveSuffix(lyric) {
// アンダーバーが含まれる場合はSuffixとする
if (lyric.includes('_')) {
var splited = lyric.Split('_');
return splited[0];
}
// 先頭から連続するひらがな・カタカナを抜き出し
var match = lyric.match(/^[ぁ-んァ-ヴ]+/);
if (match) {
return match[0];
}
// ローマ字の場合は、先頭から英字のみ抜き出し
match = lyric.match(/^[a-zA-Z]+/);
if(match){
return match[0];
}
return lyric;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment