TextAlive App が取得できる楽曲に関する情報には、 楽曲制作者 の情報、 音楽地図 (ビート、サビ、コード進行、感情値、声量の推定値) の情報、 歌詞 のテキスト、品詞、タイミング情報があります。
詳しくは「4. App のライフサイクル」で説明しますが、 onVideoReady
イベントは楽曲情報の読み込みがすべて完了したタイミングで発行されます。
このページでは、楽曲情報について順番に説明していきます。以降、 import { Player } from "textalive-app-api"
で取得できる Player
クラスのインスタンスを player
という変数名で表します。
楽曲が Songle 上で登録されている場合、その制作者の情報には onSongLoad
イベントの引数または onVideoReady
イベントが呼ばれたあと player.
data
.
song
でアクセスできます。
{
// 楽曲名
"name": "四角い地球を丸くする",
// 楽曲のURL
"permalink": "..."
// アーティスト名
"artist": { "name": "TOKOTOKO(西沢さんP)" }
}
また、作詞者の情報は onTextLoad
イベントの引数または player.
data
.
lyricsBody
でアクセスできます。
楽曲が Songle 上で登録されている場合、その基本的な音楽地図情報には onSongMapLoad
イベントの引数または onVideoReady
イベントが呼ばれたあと player.
data
.
songMap
でアクセスできます。
{
// ビート
"beats": [...],
// コード進行
"chords": [...],
// 繰り返し区間(サビ候補)
"segments": [...],
// ビート、コード進行、繰り返し区間のリビジョンID(バージョン番号)
"revisions": {...}
}
現在再生中の位置にあるビートやサビの情報は player.findBeat(player.timer.position)
や player.findChorus(player.timer.position)
で取得できます。
また、特定のオプションを指定することで以下の情報にもアクセスできるようになります。楽曲地図をより詳細に読み込むことになるので、通信量は若干増加します。
Player
クラスの初期化時に与えるオプション valenceArousalEnabled
を true
にしておくと、 player.getValenceArousal(player.timer.position)
で再生位置の V/A 空間中の座標値を取得できます。
Player
クラスの初期化時に与えるオプション vocalAmplitudeEnabled
を true
にしておくと、 player.getVocalAmplitude(player.timer.position)
で再生位置の歌声の声量値を取得できます。
音楽地図の情報に誤りがある場合は Songle で訂正できます。仮に他の人が訂正した場合でも古い音楽地図情報を使い続けたい場合は、リビジョン ID(バージョン番号)を使って音楽地図を固定する必要があります。
revisions
プロパティを使います。player.
createFromSongUrl
の第二引数で video
.
beatId
などを指定します。歌詞が TextAlive 上で登録されていて取得に成功した場合、その情報には onVideoReady
が呼ばれたあと player.
video
から取得できます。
文字の情報は video.firstChar
単語の情報は video.firstWord
フレーズの情報は video.firstPhrase
で取得できます。それぞれ startTime
endTime
プロパティでミリ秒単位の発声区間が、 text
プロパティで文字情報が取得できるほか、 next
プロパティで次の文字、単語、フレーズが取得できる linked list になっています。
さらに、単語に関しては language
プロパティで言語が、 pos
プロパティで品詞分解の結果が取得できます。現状では日本語(ja
)と英語(en
)に対応しています。
現在発声中のフレーズ、単語、文字はそれぞれ player.video.findPhrase(player.timer.position)
、 player.video.findWord(player.timer.position)
、 player.video.findChar(player.timer.position)
で取得できます。
player.data.lyricsBody
でアクセスできます。{
// 歌詞のタイトル
"name": "四角い地球を丸くする",
// 歌詞のURL
"url": "..."
// 作詞家名
"artist": { "name": "TOKOTOKO(西沢さんP)" }
}
video.lyricId
に 0
を指定します。p.createFromSongUrl("http://piapro.jp/t/C0lr/20180328201242", {
video: { lyricId: 0 },
});
歌詞の発声タイミングに誤りがある場合は TextAlive で訂正できます。仮に他の人が訂正した場合でも古いタイミング情報を使い続けたい場合は、歌詞発声タイミングの ID と訂正 ID の組を使ってタイミング情報を固定する必要があります。
onLyricsLoad
イベントの第二引数か player.
data
.
lyricsId
および lyrics.id
プロパティを使います。player.
createFromSongUrl
の第二引数で video
.
lyricId
などを指定します。