SpotifyのBasic Pitchによる音MADのMIDI音源への変換

Spotify's Audio Intelligence Labが提供する、ニューラルネットワークを用いたAMT(Automatic Music Transcription)のためのPythonライブラリ『Basic Pitch』を利用して、音MADのMIDI音源への変換を試します。

変換を行うシェルスクリプト

yt-dlpYouTube上の動画のMP3ファイルをダウンロードし、Basic PitchライブラリでMP3ファイルをMIDIファイルに変換します。

次のシェルスクリプトを利用します。

まず、yt2midi.sh に実行権限を付与します。

chmod +x ./yt2midi.sh

次に、変換対象とする音MADのURLを用意し、本シェルスクリプトを実行します。

./yt2midi.sh https://www.youtube.com/watch?v=XXXXXXX

実行後、実行ディレクトリにMP3ファイルと変換されたMIDIファイル、また basic-pitch コマンドの --sonify-midi オプションによりMIDIファイルのオーディオレンダリングが出力されます。

『Yuno YOUKAI ZONE 厳禁』で試す

Thekantapapaさんによる『Yuno YOUKAI ZONE 厳禁』の変換を試します。

www.youtube.com

Basic Pitchが出力したMIDI音源のオーディオレンダリングもありますが、上の項目を変換したMIDIファイルをGarageBandSteinway Grand Pianoサウンドで鳴らしてみます。そのオーディオは次です。

whyp.it

変換は完全ではありませんが、ベースはほぼ変換されているように聞こえます。

しかしながら、Basic PitchがWaveTone等の耳コピの補助ツールを代替するかと問われれば微妙だと思います。

抽象項目の編集テンプレートの作成 構想草稿

定義

抽象項目とは、間項目的な構文論的同型性および意味論的同型性それ自体を実体的に捉えた概念を指す。

抽象項目テンプレートとは、『テンプレート514』*1のように他の項目のテンプレートとなる、抽象項目の具象的項目を指す。

作業の概要

抽象項目テンプレートの編集テンプレートファイル(Adobe After Effects Templateファイルなど)を作成する。

漢字の階層構造

漢字の集合を \mathfrak{K},漢字を K,その構成素を eとする。 Kの冪集合 \mathcal{P}(K)において,包含関係による半順序関係  \subseteqを考える。

半順序関係 (K, \subseteq)を表すハッセ図において,ノード k \in \mathcal{P}(K)の濃度が | k |であるとき,ノード kは階層 |k|に布置される。

存在可能な構成素 \dot{e}を考える。 \forall\dot{e}\exists(K_n, K_m \in \mathfrak{K}) \ \dot{e} \in \mathcal{P}(K_n \cap K_m)を満たす \dot{e}存在可能な構成素という。存在可能な構成素の集合 \dot{E} \ni \dot{e}は,写像  f: \mathcal{P}(K) \mapsto \dot{E}で定義される。

漢字の帰属度について考える。漢字のある属性を \pi^{Ocp},親子関係が不明な漢字の対を \langle K_n, K_m \rangleとする。
例えば, \langle 羹, 恙 \rangleについて考えてみよう。
 \pi_{羊 \in 羹}^{Ocp} = 1/3, \pi_{羊 \in 恙}^{Ocp} = 1/2, wf_{hitsuji, atsumono}=1/3, wf_{hitsuji, tsutsuga}=1/2となる。

 

例えば  |k| = 2 である元  k の数は, {}_5 \mathrm{C}_2 - (3 + 1) = 6。下図では, k \not \in K を除いている。これがすなわち写像  f による効果である。

 

f:id:yudukikun5120:20210716222659p:plain

 

例えば, 驥 = 馬 + 冀(北 + 異(田 + 共))のように分解するのは可能としても, 驥 = 北馬 + 異(田 + 共)) のようには分解できないということだ。(筆順フォントは有料なのでご宥恕ください) 

でも,構成素ってどうやって決まるんだろう? 

『漢字の構造分析に関わる問題 : 漢字字体の構造分解とコード化に基づく計量的分析』によれば,漢字であることが構成素になる必要十分条件のようだ。もしそうだとすれば, Kanjiはどこまでを要素として定めるんだろう。「夂」なんて漢検辞書に載ってなかったぞ。

漢字系の構造

項目系の構造を惟るに当たり,漢字を例として考覈する。

項目系

すべての漢字が収載された辞書を D_{kanji},すべての部首が収載された辞書を D_{busyu}とする。これらの直和を Dとする。

 

 D_{kanji} = (丫, 亜, \cdots, 弯)

 

なんかよくわかんなくなったので,漢字の構造分析を拝借する。その中では,漢字の構造式というものが紹介されている。

 露 = 雨 + 路 (足 + 各 (夂 + 口)) みたいなふうに書いてくれる。ここで,入れ子の一番深い所を第一階層とするらしい。露は第4階層。

集合論的な書き方をすれば,

 露 = {雨} + {路 | 路 = {足} + {各 | 各 = {夂} + {口}}}

雨は根項目だから,集合ではない。

項目として見れば, i = 露, i^-_1 = 雨,i^-_2 = 路,i^{2-}_1 = 足とかになる。

この書き方が優れているのは,階数を右上に添えているから!!!

 

麤という漢字をトークンにすると(部首や位置の情報が全部消えているのである意味bag-of-elements),麤 = (鹿, 鹿, 鹿) になる。このとき,これをどう扱うねんという問題なむいでにければ,多分  f_鹿 = 3 やねん。

 

ここで注意しておきたいのは,上に示したのは冪集合の部分集合になるということである。というのも,階層分解は一意ではないからである。もちろん最後には最小構成素にはなるだろうが,別にそれに辿る道は一つではない。

つまり,項目の冪集合を束(包含関係による半順序集合)で表したときに,辺を切り落としていく必要がある。だが,どの枝を残しどの枝を切れば良いのだろう?意味が分からないよ!

 

数学的には厳密じゃないのかな〜とか思ったりもする。あと,一番やるべきなのは基礎のところのような気がしてきている。

 

私かに京大を目指してる。やることが終わったら。
英語って難しいね。

範列(パラダイム)関係

パースの用語で言う一次性的関係*1に限らず、意味的・形態的・統語論的に同一レベルにある要素間に存在する関係を範列関係(paradigmatic relation)という。

例えば、次のふたつの項目には、指標性(indexicality)を基に成立する「ひだまりスケッチ」の〈キャラクター〉である「ゆの」と「宮子」の間には、意味的な範列関係が存在する。

www.youtube.com

www.youtube.com

 

*1:非意味的な要素間の関係という意。