イベント

第 2 回 UTAU クラスタ持ちカラオフ ギャラリー

UTAU オリジナル曲など、通常のカラオケでは歌えない曲も歌えちゃう「動画持ち込みカラオケ」オフを、UTAU クラスタ向けに開催。第 2 回。
内容については、前回(第 1 回)のオフレポを参照。
今回(第 2 回)は、機材が前回よりパワーアップし、再生できる動画が増えたので、よりたくさんのニコカラを楽しめるようになった。

UTAU オリジナル曲はもちろん、UTAU カバーをオンボで歌ったり、UTAU 替え歌を歌ったり。

UTAU 以外にも、ボカロ・アニメ・ゲームなど、さまざまなジャンルの曲を楽しんだ。

今回の様子を、以下にギャラリー形式にてお届け。画像はクリックで拡大されます。

ギャラリー

mochi1パワーアップした機材を含む、会場の様子。

mochi2会場の様子その 2。

mochi3持ちカラでは、カラオケをしている最中に、画面上部にコメントを流せる。

曲やゲームなどを布教するための説明を書くもよし、音源愛を叫ぶもよし。

コメントでの遊び方は、参加者次第!

mochi4ニコカラ動画で字幕ワイプと共に歌えるのがベストだが、ニコカラ動画がなければ持ちカラできないわけでもない。

普通の PV だって持ちカラは楽しめる。

PV の場合、歌詞表示タイミングが発声と同時であることが多く、そのままではちょっと歌いづらいのだが、持ちカラの場合は、映像と音声のタイミングをずらして、少し早めに歌詞を表示するという芸当も可能なので、PV でもちゃんとカラオケを楽しめる。

mochi5替え歌も字幕付きで歌える。

mochi6UTAU 持ちカラの醍醐味の一つが、中外合唱。こんな機会、なかなか無いよ!

第 3 回以降も開催していく予定なので、興味を持ってくれた UTAU クラスタの人は、是非参加してね。

ニコカラ作成講習会を開催

RhythmicaLyricsSAI さんと共同で、ニコカラ(カラオケワイプ字幕付き動画)の作成講習会を開催。

ニコカラ作りに必要なソフト、RhythmicaLyrics とニコカラメーカーについて、ソフトのダウンロード含めイチから教える実践スタイルで、今までニコカラを作ったことが無かった人に、実際にニコカラを 1 つ作ってもらう初心者・初級者が対象の講習会。

RhythmicaLyrics の部(講師:SAI さん)

RhythmicaLyrics は、字幕のワイプタイミングを指定するための「タイムタグ」を歌詞に付加するソフト。

ソフトの設定を含めイチから説明。歌詞を検索して自動的に取得する方法なども紹介。

歌詞の発音タイミングに合わせてスペースキーを押すという音ゲー感覚でタイムタグを付加していく。初めての人にはちょっと難しいかと思っていたが、やっているうちにコツをつかんでくれたようで、初回とは思えないハイレベルなタグ打ちが実践されていった。

「一人でやったら歌詞の設定でつまづいていたかもしれず、講習会で実際に教えてもらえて良かった」とのお声も戴いたので、実践形式のメリットが活かされたのだと思う。

特に、ルビに合わせてチェックを入れたり、行末キーアップなどの細かいところは、手取り足取り教えることで、直感的な理解が深まったのではないかと思う。

以前から RhythmicaLyrics を使っていた参加者からも、「ルビ入力をモード切替でやっていたが、F2 でできることを知って大幅に効率化された」などの声があり、改めておさらいすることで発見に繋がった例もあった。

タイムタグやルビに加え、@Title などの曲情報もしっかりと打ち込み、タイムタグ付き歌詞ファイル(lrc ファイル)が完成した。

ニコカラメーカーの部(講師:SHINTA)

ニコカラメーカーの特徴ニコカラメーカーは、動画とタイムタグ付き歌詞ファイルを合体させ、ワイプ字幕付きの動画(ニコカラ)を作成するソフト。

動画と lrc ファイルをドロップし、文字の大きさを少し調整すれば、それだけでニコカラができあがってしまうのだが、さすがにそれだけだと 10 分で講習会が終わってしまうので、少し踏み込んだ内容まで説明。

字幕フォント設定では、グラデーションなども含めて設定の詳細を説明。実践の時間を多めにとって、参加者お好みのフォント設定ができるようにした。また、括弧付きの歌詞が自動的にコーラスになる自動コーラス機能など、ニコカラメーカーが持つ機能についても説明。

中級編として、字幕の行数を自由に変更する方法も説明。手動でやる方法と、自動レイアウトに任せる方法の両方を紹介。

パート分けその他にも、1 行に複数のフォントを混ぜる方法、さらにそれらを応用したパート分けの方法、そして画像埋め込み(インライングラフィックス機能)など、かなり突っ込んだ内容まで説明した。

RhythmicaLyrics での歌詞修正を反映させた時の注意点についても言及。「自動でスタイルを適用」ボタンを使うのがポイントで、これまでニコカラメーカーを使ったことのある参加者からも、「今までは歌詞修正したら最初からやり直していたので、この機能を知って驚いた」とのお声を戴いた。

エンディング

hakupo講習会を通じて、各参加者は実際にニコカラを 1 つ作成。各自が作成したニコカラを、披露かねがね熱唱。

2 つのソフトを今日初めて使ったという参加者も、しっかりしたニコカラを仕上げていた。

インライングラフィックス機能を早速実践していた参加者もおり、習熟の早さに驚かされた。

今回の講習会は、初心者が初めの一歩を踏み出せただけではなく、いきなり二歩・三歩と進むことができた。また、既にソフトを使ったことのある人にとっても再発見があったので、有意義な時間を過ごせたのではないかと思う。

希望者で二次会にも行き、交流を深めた。

UTAU クラスタ 動画持ち込みカラオケオフ 開催

持ちカラオフ風景UTAU クラスタ向けに、動画持ち込みカラオケオフ会(持ちカラ)を開催。


主催は私の他に、UTAU クラスタのうどんさんがオフ告知などをして下さって、また、持ちカラコミュの成田さんゆーふうりんさんが技術支援などをして下さった。

人数集まるか心配だったが、最終的に 8 人となり良い感じの人数に。

一足先に会場入りして、初めての機器接続にドキドキしながらセットアップ。うまく HDMI が認識せず、再起動しようとしてようやく認識するなど、ヒヤヒヤする場面もあったが、持ちカラコミュの方々の支援のおかげで、どうにか設置完了。

参加者も集まり、無事にスタート。

ゆかり画面持ちカラでは、曲のリクエストは、各自のスマホをリモコンに見立ててブラウザで行う。……という説明を最初にすると、参加者からどよめきが。私も最初に知ったときはあまりのハイテクさに驚きだった。

そして、そのリモコン用サーバーソフトを開発したのが、先述のゆーふうりんさん。ソフト名は「ゆかり」。「Universal Karaoke Requestor」の略でゆかりとのことで、「ゆーふうりんさんが開発したリモコン」の略ではないらしい。

ゆかり検索ゆかりの使い方はいたって簡単で、歌いたい曲の名前(など、各自が持ち込んだ動画のファイル名の一部)を入れて検索ボタンを押すだけ。

同じ人が連続して歌わないように自動で順番を調整する機能があるので(なんともハイテクである)、歌いたい曲は思いついたときにどんどん入力して大丈夫である。

一通りの説明の後、各自が思い思いの曲を熱唱。

うどん作うどんさんは、自力でニコカラを作成。オフ開催まで 1 ヶ月もなかったのに、初挑戦で多くのニコカラを作ってしまうとは、さすが UTAU クラスタ、スキルが高い。歌唱においては、自音源「燈音ミゴ」の曲(TimeTown0 番地など)を完全に掌握。「曲を乗りこなしているなぁ」という感じのシンクロ度合いに魅せられた。collt さんの曲だけではなく、サンホラやアニメなど、ジャンルも幅広い。

ランドさんの歌唱力の高さには驚いた。巻き舌やグロウルなどを織り込んできて、「さすが中の人!」と思った。自音源「環音ラキ」オリジナル曲「単線急行」にて、中外合唱のツーショットが実現。本人のテンションも高まったが、聴いてるこちらもハイテンションになる。こんな機会、まさに持ちカラだからこそ、である。

九さんも、ライブでボーカルを務めているだけあってさすがの歌唱力。個人的には、おうちへかえろうがヒット。この曲、ほどよいテンポで、一見歌うの簡単そうなのだが、実際に歌おうと思うと意外と難しい。それをしっかり歌いきっていた(しかもオフボで)。「カラオケ配信されてない、好きな曲歌うのは良い」と言っていただけて、主催としても嬉しい。M マスはいいぞ。

百兎さんは、様々な音源の曲と声質が合う。テト、ルコ、ぱん。など。オンボで合唱してくれたので、ハーモニーがすごくきれい。高音の発声も透き通る感じで、本人は「カラオケ久しぶり」なんて言っていたけど、そんなブランク全く感じない。持ちカラコミュのお二人に向けた解説を兼ねた選曲をしてくれたのも有り難かった。私の設定不足で、空の軌跡動画がうまく再生されなかったのが心残り。次回は軌跡合唱しましょう。

汐日さんは多くの自作曲を歌ってくれた。素敵な民族調曲を作曲者本人に歌って頂けるなんて、幸せ以外の何物でもない。優しい歌声に癒された。蓮音こんの曲もオンボで歌ってくれて、ここでも中外合唱が実現。原曲オケによる歌唱ができることも持ちカラのメリットの 1 つで、その利点が存分に発揮された。美味しいお菓子の差し入れもして下さり、耳だけではなく口も幸せに。

持ちカラコミュのお二人は遠慮してあまり歌ってくれなかったが、成田さんは前前前世を筆頭にアニメ系を選曲。歌唱力の高さに、会場一同息を飲んだ。いろいろ気を使っていただいて、カラオケで不便なところがあったりすると、それはこうすると良いよ、とアドバイスを下さり、持ちカラのノウハウが蓄積されていった。

ゆーふうりんさんは、私が歌った UTAU 曲をリクエストし、初見の耳コピで歌うという離れ業を披露。持ち歌(?)のラブライブ!では、美ブラートで会場を埋め尽くした。また、設定不足だった私のゆかりをその場でパワーアップして下さるなど、技術サポートがとても有り難かった。

お狐化けーしょんっ!!私自身はといえば、通常のカラオケでは歌えないお狐化けーしょんっ!!を歌えたので大満足。他にも、神のまにまになど、気ままにカラオケを楽しんだ。

オフ会開催前は、6 時間もカラオケしてるとみんな飽きるのではないかと心配していたが、全くの杞憂で、あっというまに時間が経ってしまった。希望者で二次会にも行き、UTAU クラスタと持ちカラコミュで交流。とても楽しい一日だった。

第 2 回も開催したいな~。チラッ(と、うどんさんを見る)。

もっとオフレポ

百兎さんもオフレポを書いて下さった:

参考リンク

第 2 回



うたすくレポート

UTAU_SQUARE_カタログ12 月 4 日(日)開催の UTAU SQUARE(通称:うたすく)に行ってきたので、簡単ながらそのレポートを。

割と後半の時間に行ったこともあり、フォロワーさんのサークルのところを中心に巡った(タイミングが合わずお邪魔できなかったところもあるが……)。なので、イベント系はよく分からない。

各サークルとも、商品に特徴があるのはもちろん、販売方法も様々。慣れないで行っている身としては、商品の特徴やセールスポイントなどを丁寧に説明してくれるところのほうが嬉しい。

あと、パソコンに CD ドライブが付いている時代が終わりつつあるので、CD を販売しているサークルは、microSD あるいは、ダウンロードカードといった別メディアでの販売もしてくれると嬉しい。

以下、サークル配置順にて。

A-01 はんまふらいふ

kizuchiきづちさんち。

CD、4 コマ漫画、アンソロジー(複数作者の原稿を集めたもの)の 3 点セットで 2,000 円。今回購入した中では最も高価格。

CD は、選曲やらボーナストラックのトークやら、あちこちにネタが仕込まれていて楽しい。

アンソロジーは4 コマ漫画から小説まで、いろんな内容があり、総勢 100 ページオーバーの濃い内容。厚さにして 9mm。きりきさんの 4 コマ漫画が楽しかった。

B-09 Bloomoon Garden

waso‍わそぽったんぬ(水窓*)さん、てんなさんのところ。

お二人のイラスト集を購入。

左が‍わそぽったんぬさんで、透明感のあるタッチと、少し儚げな雰囲気を醸し出している。

右がてんなさんで、明るくて元気なかわいらしさ溢れるイラスト。

それぞれ違う持ち味が光っていて好き。

B-11 みんと屋(´_ゝ`)

mintみゅんとさんのところは大所帯で、みゅんとさんはもちろん出展しているが、他のサークルにもサブリースしている感じだった。

主力商品は CD。

販売方法が面白くて、レーベル面およびジャケットのイラストそれぞれが、数種類の中から選べる。

ジャケットはちょっと RPG っぽいものをセレクト。レーベルはみこみこをセレクト。

C-02 海中電灯

motimotigome 美由理さんち。

主力商品はシールで、いくつかのセットがあった。

その中から、自音源の餅寝こめが入っているバージョンをセレクト。

他に、重音テト、重音テッド、ルーク、焔音レイ、鳴都、白鐘ヒヨリ、波音リツ、桃音モモ、闇音レンリ、傷音ウサが入っており、全 11 枚。

ちなみにシールは、印刷面、のり面、剥離紙の 3 層構造なので、貼るときは剥離紙を剥がすようにしないと失敗する(印刷面とのり面を分離してしまった……)。

C-03 唯ひとつの月.bak

yui唯月るきなさん、さきたさんのところ。

このサークルは太っ腹で、アルバム「'98」を購入したら、おまけで「はじめまして。」ももらえた。

買うときは気付かなかったが、曲 1 つ 1 つが 1998 年にあった出来事に対応しているようだ。このあたり、深掘りしていくと面白い話が聞けそう。

トラック 2 の「The Space Ship」がお気に入り。

C-08 なないろらむね+

nanairo霧島柚衣さん、いーちゃんさんのところ。

霧島柚衣さんは雨鳥ユウイの中の人なのだが、ちょうどブースの前を通りかかったときに、会場の BGM が雨鳥ユウイという奇跡のタイミングだったこともあり、お声掛けいただいた。

この CD で初めて雨鳥ユウイを知ったが、優しい声質で素敵な音源だと思う。

いーちゃんさんが作曲者なので、音源オリジナルソングもどんどんできて良いサークルだと思う。

C-12 恵方巻きコルネ

ehou日本鬼子の広報担当である大辺璃紗季さんのところ。

商品ラインナップの多彩さにびっくり。大辺璃さん曰く、長い活動の中でだんだん商品が増えてきたとのこと。

日本鬼子は自治体とのコラボレーションも増えてきていて、活躍の幅が広がっているようだ。

一般企業とのコラボレーションについても模索中とのこと。

D-09 イチミリメートル

miriミリ子さん、tamaGO さんのところ。

うろうろしている時にお声掛けいただいた。

CD ラインナップはいくつかあったのだが、tamaGO さんが歌ってみたもやっているとのことだったので、ボカロ&UTAU&歌みたの 3 つが詰まった CD をセレクト。

UTAU SQUARE なので、UTAU がメインなのは当然なのだが、中にはこういうバラエティーに富んだサークルがあるのも面白いと思う。

E-07 はとさぶる

hatoみーぼさんち。

ポストカードを取り扱っているサークル。

みーぼさんの描く閏月ナコは温かみがあって好きなので、それをセレクト。ご本人も、隣に座っていた実月礼詞の中の人も、優しそうで、イラストにもそれが現れているのかもしれない。

ここも太っ腹で、みこみこのカードまで戴いてしまった。

E-10 きゃらめるりぼん

akane丸川れなさんち。

通りがかった時にお声掛けいただいた。

自音源である燈音すずのイラスト集。ではあるのだが、どちらかというとプロモーション冊子の位置づけで、音源そのものを PR するという目的意識を持って制作されたとのこと。

だからこそ、通りすがりにも積極的にお声掛けして周知に努めていたのだろう。ビジョンとアクションがリンクしていて素晴らしい。

ちなみに 1 冊だと分からないが、実は、表表紙と裏表紙は、並べるとつながるように工夫されている。

E-11 Jack.Inthe.Box

oosaki大崎巧実さんち。

いくつかの商品があったが、最新の小説をセレクト。

ここも販売方法が面白くて、小説はメイン冊子とサブ冊子のセットになっているのだが、サブ冊子は、R-18 の有無を選べる。

大崎巧実さんは遠征組で、片付けの様子も拝見させてもらったのだが、てきぱきとスーツケースに棚や商品などを詰め込んでいく手際の良さはすごかった。

E-12 UTAUTAU

momoto百兎さん、A とよ。さんのところ。

商品はいろいろあったが、「UTAU アドベンチャー」というタイトルを見てしまったらそれを買わずにはいられない。

百兎さんは穂歌ソラのイメージがあるが、やはり本書にもソラが登場している。しかし本命はサラらしい。

UTAU とは関係ないが、軌跡シリーズの話で盛り上がった。みっしぃ羨ましい……。

F-06 ほにゃほにゃproject

hokeほけさんのところ。

ほけさんといえばデフォ子。

アンソロジーになっていて、小説やら漫画やらが詰まった 1 冊になっている。

しかしほけさん漫画も描くとは知らなかったので、新しい発見だった。

おわりに

circle この他にも面白そうなところはあったのだが、終了時間が近づいていたこともあり、片付けはじめていたところもあった。

また機会があったら、他の所も巡ってみたい。

最後に、うたすくの主催者には最大の感謝を!











大盛況だった半音上げプラグイン大会の振り返り

半音上げプラグイン大会UTAU プラグインの作り方は開発者ごとに異なり、その違いを見てみると楽しく勉強になるのではないか、ということで始まった「半音上げプラグイン大会」。UTAU プログラマーの祭典です。2015/12/11~12/31 の 3 週間開催。

ニッチなイベントなので、そもそも参加してくださる方がいるのか不安でしたが、蓋を開けてみれば大盛況で、なんと 24 件ものエントリーがありました。単に「半音上げる」だけのシンプルなプラグインが、いろいろなプログラミング言語やアルゴリズムで、24 パターンも登場したということです。

本記事では、そんな大会の様子を振り返ってみたいと思います。大会レギュレーションは、以前の記事を参照して下さい。

蛇足ですが、UTAU のメニューに半音上げる処理はありますので、実用上は、半音上げるプラグインは必要ありません。

目次


エントリー一覧

#エントリー(敬称略)言語ソースコード
1HaruqaUWSC表示 DL
2
なでしこ
表示 DL
3SHINTA
C#
表示 DL
4
bizz
Lazarus
表示 DL
5
masao
C++
表示
6
bizz
Lazarus
表示 DL
7
masao
C
表示
8
Haruqa
UWSC
表示 DL
9
Haruqa
UWSC
表示 DL
10
大兄P
Java
表示
11
bizz
HSP
表示 DL
12
山岸
Java
表示
13
masao
C++
表示
14
大兄P(#10 の修正)
Java
表示
15
ばわめ rwxr--r--
C#
表示(メイン クラス
16
あさくら・ふにょし
Electron
表示(HTML JavaScriptDL
17
あさくら・ふにょし
バッチファイル
表示
18
Haruqa
JScript
表示
19
とりフラ.ust.vvv
ExcelVBA
表示
20
masao
C++
表示
21
あらいふ
Python
表示 DL(ソース バイナリ
22
Haruqa
C#
表示 DL
23
飯香
条件設定プラグイン
表示
24
飯香
BF プラグイン
表示

典型的な半音上げプラグインの動作

まず、UTAU プラグインそのものの概要をおさらいしておきましょう。

一般的なアプリケーションにおいて「プラグイン」というと DLL 形式のものが多いですが、UTAU の場合はそうではなく、UTAU プラグインは実行ファイル(.exe)などの形式となります。

UTAU プラグインの仕様は公式サイトなどに書かれていますが、UTAU 画面上でユーザーが選択した音符の情報を、UTAU が一時ファイルに書き出します。UTAU プラグインはその一時ファイルを読み込み、音符の情報を変更して、一時ファイルに書き戻します。プラグイン実行後、UTAU が再度一時ファイルを読み込んで変更内容を確認し、UTAU 画面に反映する、という流れです。

一時ファイルは INI ファイルの形式となっており、1 つの音符の情報が 1 つのセクション(UTAU ではセッションと呼んでいます)にまとめられています。例えば、音程が「ド」(C4)で歌詞が「い」の四分音符だと、以下のように出力されます。

[#0001]
Length=480
Lyric=い
NoteNum=60
Intensity=100
Moduration=0

NoteNum が音程を表していて、数字が大きいほど高音になります。60 なら C4、61 なら C#4 というように、1 増える毎に半音上がっていきます。

つまり、「半音上げプラグイン」であれば、NoteNum を読み、NoteNum の値を 1 増やしてから、一時ファイルを上書きすれば、目的を達することができるわけです。

次節以降で、今回エントリーされた内容について、私の分かる範囲で解説していきます。

解説:C#

まずは、エントリー No.3、私が作成した C# 版の半音上げプラグインについて。

処理方法は単純で、一時ファイルを全行読み込んでから、NoteNum を探し、値を 1 増やしています。

注意すべきは、[#PREV][#NEXT] という特別なセクションです。UTAU は、ユーザーが選択した音符の「前後の音符」の情報も一時ファイルに出力し、その内容が [#PREV][#NEXT] セクションに記載されます。[#PREV][#NEXT] セクションの内容を書き換えてしまうと、ユーザーが選択してない音符の情報が変わってしまうことになるので、避ける必要があります。

セクション行を解析する際に、選択範囲の音符セクション([#0001][#0002]……)かどうかを判定し、結果をフラグとして保持しておきます。NoteNum が出てきた時にフラグを確認し、フラグが立っている場合のみ、処理を行うことで、[#PREV][#NEXT] セクションを避けています。

メモリ上で NoteNum の変更を終えた後、全行を一気に一時ファイルに書き戻しています。

別の C# エントリーとして、ばわめ rwxr--r-- さんの No.15 があります。

この実装では、一時ファイルへのアクセスを INI ファイル解析クラス(をカスタマイズしたもの)を用いて行っています。これにより、メイン側では処理をセクション単位で遷移させることができるようになり、また、NoteNum の値も簡単に取り出せるようになっています。

音符セクションかどうかの判定には正規表現を用いており、確実な判定が行えます。

C# はもう 1 つ、Haruqa さんの No.22 もあります。

この実装も No.15 と同様、一時ファイルへのアクセスを担当するクラスを用いていますが、こちらはイチから作成したクラスとなっており、音符のプロパティーをそれぞれ専用のメンバー変数で保持する仕様となっています。

解説:C++

C++ は masao さんが 3 エントリーされています。

ますは No.5

本人コメントでは、先ほどの No.3 C# 版を移植しただけとありますが、処理方法はかなり進化しています。

一時ファイルを一行一行読みながら作業するのですが、まず、音符セクションが出てきた場合に、その行を「出力バッファ」に溜めます。また、NoteNum が出てきた場合にも、音程を半音上げてから「出力バッファ」に溜めます。それ以外の場合は、出力バッファに溜めません。

結果として、最小限の変更箇所のみが「出力バッファ」に溜まり、それを一時ファイルに書き戻しています。これにより、書き戻す一時ファイルがコンパクトになります。

[#PREV][#NEXT] を除外するフラグの考え方は No.3 と同様ですが、判定方法が賢くなっています(No.3 はかなり手抜きでした)。

次に No.13

こちらは、一時ファイルの取り扱いを楽にする Lib UTAU を用いて実装しています。

一時ファイルの解析を Lib UTAU が行ってくれるので、[#PREV][#NEXT] を除外するのも簡単で、プログラムが非常にシンプルになっています。Lib UTAU の SectionNotesNormalBegin()~SectionNotesNormalEnd() の間だけ処理を繰り返すことで、自動的に [#PREV][#NEXT] が除外されます。

最後に No.20

Lib UTAU と同様の自作ライブラリを用いて実装しているとのことで、No.13 同様、プログラムが非常にシンプルになっています。

自作ライブラリは非公開のため内容は不明ですが、セクションとキーバリューペアの関連性も保持しているようで、使いやすそうです。

解説:C

masao さんは No.7 で C 言語版も作成されています

基本的な考え方は No.5 C++ 版と同様ですが、「出力バッファ」を使わずに、代わりに、逐次「テンポラリファイル」(UTAU の一時ファイルとはまた別のファイル)に書き出しています。C 言語は文字列(に関わるメモリ)の扱いが面倒なので、出力バッファを使わないほうが楽だと判断したのでしょう(違ってたらすみません)。

最後に、UTAU の一時ファイルを削除して、代わりに、プラグインが出力したテンポラリファイルを一時ファイルにリネームして完了です。

C 言語はファイルや文字列の扱いが煩雑なのに、非常にスマートにプログラミングされており、masao さんの技術力の高さがうかがえます(私はこんなにスマートに実装できません)。

解説:Java

Java はお二方がエントリー。

No.12 の山岸さんは、処理の流れとしては No.7 の C と近しい感じになっています。

C とは異なり、Java は文字列を手軽に扱えるので、全体的にコードがすっきりしています。また、音符セクションかどうかの判定や、音高行の判定に正規表現を用いており、スマートに判定ができています。

エラー処理が入っている点も見逃せません。本大会はプラグインの実運用が目的ではないので、エラー処理が入っていないエントリーも多いですが、実際にプラグインを開発する際にはエラー処理は必須になってきます。きちんとエラー処理を行う山岸さんの堅実さがうかがえます。

No.14 の大兄 P さんは、一風変わった処理の流れになっています。

最初に一時ファイルを 7 行読み飛ばしているのは、[#VERSION][#SETTING] といったセクションを読み飛ばす意図だと思われます(違っていたらすみません)。

その後、[#PREV][#NEXT] を避けつつ、NoteNum を 1 上げています。

No.14 は修正バージョンで、当初は No.10 でのエントリーでした。自分のソースコードを見直したり、他人のコードを参考にしたりしながら、ブラッシュアップしていくのも、プログラミングの醍醐味ですよね。

解説:Python

No.21 のあらいふさんは Python で作成されています

行毎に処理を進めていくのですが、「セクション開始待ち」なのか「NoteNum エントリー待ち」なのかという「状態」を保持しておき、状態に応じて、解析を実行する関数を切り替えています(関数ポインタ方式)。

「セクション開始待ち」では、セクション名を見て、音符セクションであれば、「NoteNum エントリー待ち」に状態遷移します。

「NoteNum エントリー待ち」では、NoteNum の行が来たら音程を 1 上げて、「セクション開始待ち」に遷移します。

ファイルの存在確認や、音程の上限確認など、エラー対応関連も充実しています。

解説:UWSC

これまでは、プログラミング言語人気トップ 10 に入るような超メジャーな言語の実装を見てきましたが、ここからは、もう少しいろいろな言語を見ていきましょう。

UWSC では Haruqa さんが 3 件エントリーしています。

今回の大会である意味一番驚いたのが No.1 の UWSC です。このプラグインは、一時ファイルを一切使いません。UTAU を操作し、UTAU のメニューから「選択部分を上へ移動」を実行することにより、半音上げを実現しています。UTAU 本体を操るプラグインというわけです。

No.8 は一時ファイルを使いますが、一時ファイルの書き換えは、メモ帳を操って行っています。

No.9 は普通に一時ファイルを更新しています。

解説:なでしこ

巽さんが使ったなでしこは、日本語でプログラミングが行える言語です。

処理方法としては、いったんすべての NoteNum を 1 上げたあとで(UTAU とは別の)テンポラリファイルに保存し、その後、テンポラリファイルから UTAU の一時ファイルに書き戻す際に、[#PREV][#NEXT] を除外しているようです。

個人的には、「B はそれ」という禅問答みたいは表現が、日本語プログラミングっぽくて好きです。

解説:Lazarus

オープンソース版の Delphi ともいえる Lazarus(言語としては Object Pascal)は、bizz さんが 2 件エントリーされています。

No.4 はオーソドックスなバージョンで、処理の流れは No.5 の C++ とほぼ同じです。

変わり種は No.6

半音上げるという処理を、音程を上げるのではなく、ピッチベンドカーブをいじることによって実現しています。ピッチベンドは PBW や PBY といったパラメータをかなり処理する必要があり、ソースコードの量からもその大変さがうかがえます。

「やり方は 1 つではない」ということがよくわかる実例です。

解説:HSP

bizz さんはもう 1 つ、HSP でもエントリー。

HSP は構文が簡単な手続き型スクリプト言語ですが、コンパイルが可能なため、利用者側は HSP のインストールが不要です。小規模なゲーム開発に人気なイメージがあります。

HSP は目的語を省略できるタイプの言語のようで、内容がいまいち読み取りにくいのですが、処理の流れとしては、No.3 C# 版の全行書きだし型に近いのではないかと見受けられます(違っていたらすみません)。

解説:Electron

あさくら・ふにょしさんは Electron でエントリー。私は今回の大会で初めて Electron の存在を知りましたが、HTML + JavaScript で(ローカルで動く普通の)アプリを作れる環境のようです。Web でバリバリコーディングしている人が、ちょっとしたツールを作る場合などに重宝しそうです。

実装は、最近の JavaScript らしくラムダ式を用いています(幹となる部分)。

処理内容としては、最初に「セクション名」と「キーバーリューペア」のペアをすべて解析して連想配列に格納します(連想配列の入れ子のようなイメージ)。本記事冒頭の一時ファイルで言えば、{#0001={Length=480, Lyric=い, NoteNum=60}} みたいな感じです。JavaScript の柔軟な型の利用が活きています。

その後、音符セクションについて、NoteNum を 1 上げてから、テンポラリファイルに書き戻します。

解説:バッチファイル

あさくら・ふにょしさんはバッチファイルでもエントリー。

いにしえの MS-DOS 時代から省力化ツールとして親しまれているバッチファイルですが、UTAU プラグインとしても使えるのだと思うと、隔世の感があります。

さすがに高度な関数は使えないので、読み飛ばすセクション([#PREV][#NEXT] など)は列挙して対応していますが、バッチファイルだけでも文字列の扱いや音程計算がきちんと行えており、驚きの内容になっています。私は、バッチファイルでこんなにうまく実装できるものとは知りませんでした。

UTAU プラグインとしてだけではなく、日々の作業の省力化のためにバッチファイルを書く際にも非常に参考になる内容になっています。

解説:JScript

UWSC の Haruqa さんは JScript でもエントリー。JScript は JavaScript 互換ですが、JavaScript 単体では通常行えないファイル出力などが可能です。

処理の内容としては、一時ファイルを一行ずつ読み込みながら、NoteNum であれば半音上げつつ、バッファに溜めていきます。最後に、一時ファイルに書き出します。

解説:ExcelVBA

とりフラ.ust.vvv さんは ExcelVBA でエントリー。いわゆるエクセルマクロです。

処理の流れは、No.12 の Java と近しい感じになっています。VBA は Visual Basic for Applications という名前の通り、BASIC 言語の流れを汲んでいますが、ファイルオープンの構文などはまさに BASIC 感に溢れています。

さすがにエクセルファイル直接は UTAU プラグインとして使えないようで、実際に使う際には、バッチファイルと組み合わせているようです。

解説:既存プラグインのパラメーター設定方式

さまざまなことが行える既存の UTAU プラグインに対して指令を与えることで、半音上げるという作戦もあります。「プラグインを開発する」のではなく、「既存のプラグインでまかなう」というイメージですね。

飯香さんの No.23 は、条件設定プラグイン(亜麻)を、すべての音符に対して半音上げるという条件を設定して起動しています。

また、No.24 は、特定の効果を持つ音符の配置を予め BF プラグインに読ませてから、再度 BF プラグインを起動することで、半音上げを実現しています。BF は恐らく Brainfuck のことだと思いますが、難解なパズルです。

まとめ

「半音上げる」。ただそれだけのことなのに、まさに十人十色の実装になりました。

行ごとに文字列的な処理をしていく方法が主流でしたが、人や言語によって実装方法はさまざまでした。また、セクションとその値を有機的に捉えたうえで半音上げるプラグインもいくつかありました。

さらには、音程ではなくピッチをいじるプラグインや、UTAU プラグインの概念を根底から覆すプラグインまで登場しました。

他人のプログラムを見ると言うことは非常に勉強になりますが、今回はシンプルで身近な UTAU プラグインを題材としたことで、より一層そのことが実感できたかなと思います。

ご参加くださった皆様、本当にありがとうございました。

遅刻組

締切は過ぎましたが、投稿いただいたものをこちらに掲載させていただきます。

関連リンク




カウンター


カンパのお願い
Amazon でお買い物の際は、下記で検索して頂けたら幸いです。
記事検索
最新コメント
  • ライブドアブログ