Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Sep 24 02:40

    arcatdmz on master

    0.3.1 (compare)

  • Aug 13 08:16
    arcatdmz closed #6
  • Aug 13 08:16
    arcatdmz commented #6
  • Aug 10 00:49
    arcatdmz commented #6
  • Aug 08 03:45
    itohdaigo opened #6
  • Jul 16 06:33

    arcatdmz on master

    0.3.0 (compare)

  • Jul 16 06:28

    arcatdmz on master

    0.3.0 (compare)

  • Jan 01 02:50

    arcatdmz on master

    0.2.2 (compare)

  • Nov 14 2020 22:01
    monaka closed #5
  • Nov 14 2020 22:01
    monaka commented #5
  • Nov 10 2020 05:17
    arcatdmz commented #5
  • Oct 31 2020 02:10
    monaka opened #5
  • Oct 30 2020 20:28

    arcatdmz on master

    0.2.1 (compare)

  • Oct 17 2020 09:22

    arcatdmz on master

    0.2.0 (compare)

  • Sep 27 2020 09:47
    arcatdmz closed #4
  • Sep 27 2020 09:47
    arcatdmz commented #4
  • Sep 27 2020 07:53
    7mA commented #4
  • Sep 26 2020 16:02
    arcatdmz commented #4
  • Sep 25 2020 22:11
    7mA opened #4
  • Sep 25 2020 00:00

    arcatdmz on master

    0.1.2 (compare)

すぱりだ
@super_reader_twitter
サンプルをローカル環境で動かすことができました!!開発楽しみたいと思います!!
itohdaigo
@itohdaigo

初めまして、itohというものです。
今回、textalive-app-apiについて質問したく、送信させていただきました。

内容ですが、自分もローカル環境で動かしたいと思っているのですが、そうすれば良いでしょうか。

HTMLタグへの埋め込みや、node.jsの環境を作成する事はできたのですが、上手く実行する事はできません。

一応Codepen上にてサンプルコードを実行する事はできたのですが、ローカルで実行する際のテンプレートなどはあったりしますでしょうか。

itohdaigo
@itohdaigo
すみません、こちらのリポジトリ内のプロジェクトを、Chromeにて動かすことができました。ありがとうございました。
textalive-app-script-tag
Jun Kato
@arcatdmz
@itohdaigo 動いたようでよかったです!また、GitHubのIssue #6 にも回答させていただきました。お試しいただければと思います。
itohdaigo
@itohdaigo
ありがとうございます、開発を進めていきます!
itohdaigo
@itohdaigo
githubにて質問させて頂いた内容も、npm run watchにて試す事ができました!ありがとうございます
すぱりだ
@super_reader_twitter
お疲れさまです。すぱりだというものです。
textalive-app-apiに関して質問があるのですが、歌詞情報と連動した動画の映像情報を背景に埋め込みたいのですが、apiの方からどのように取得したら良いのかよくわかりませんでした。
(video-stream html5-main-videoとして埋め込まれているのとは別で取得したい感じです)
APIドキュメントを確認したたらPlayer classのvideoから取得するように思えたのですが、よくわからず、サンプルコードなども拝見したのですが具体的に映像情報を取得する方法はわかりませんでした。
少し抽象的な質問になってしまって申し訳ないのですが、歌詞情報と連動した映像情報の使い方に関して教えていただけないでしょうか。
よろしくお願いします。
Jun Kato
@arcatdmz
@super_reader_twitter 動画の映像情報というのは、例えばYouTubeの埋め込み動画の情報ではなく、サビとかビートとかの情報という理解で合ってますでしょうか?
TextAliveサービスサイトで表示される映像表現については、仕様上、現行のApp APIだけで表示することはできなくなっています。App APIの上にもう一つ、非公開の映像表現用ライブラリのレイヤーがあり、サービスサイトはそれを使っています。
なお、映像表現用ライブラリは内部ではEaselJSというcanvasラッパーを利用しています。今では少し古くなってしまったライブラリなので、pixi.jsやthree.jsを使うほうがより柔軟な映像表現がやりやすいかもしれません。
すぱりだ
@super_reader_twitter
@arcatdmz
お返事いただきありがとうございます。
今回取得したいと思っていたのは「YouTubeの埋め込み動画の情報」の方になります。
TextAliveAPIで取得してきたPlayerから操作している再生や一時停止ができるところから、Playerクラスから歌詞情報と同じように音楽地図の一部としてcreateFromSongUrlした際に指定した映像情報そのものが取得できると思ったのですが、それは可能でしょうか?
動画の操作自体はPlayerクラスを通してできたので取得可能だと思ったのですが . . .
3 replies
ya2ha4
@ya2ha4

楽曲情報(歌詞の開始、終了時刻)の調整方法についての質問になります。

楽曲『嘘も本当も君だから』(https://www.youtube.com/watch?v=Se89rQPp5tk) に対して
歌詞の開始時刻、終了時刻 (IPhrase, IWord, IChar などの startTime, endTime) を取得したところ
一部の歌詞が数秒程度動画よりも早い値が設定されているように感じました。

こちら歌詞の開始時刻や終了時刻を調整する方法ありますでしょうか?

■確認方法1: TextAliveで確認
https://textalive.jp/songs/www.youtube.com%2Fwatch%3Fv%3DSe89rQPp5tk
上記のURLにて30秒ほど再生した際、間奏中にもかかわらず『初めは互いに舌足らずで』の歌詞が表示される

■確認方法2: 再現確認のためのコード(要点のみ抜粋)

// 事前にPlayerを生成し player.addListener() にて onAppReady, onVideoReady の設定されていると仮定
// let player = new Player(...);
// player.createFromSongUrl("https://www.youtube.com/watch?v=Se89rQPp5tk"); // 楽曲:嘘も本当も君だから
...
onAppReady(video: IVideo): void {
  let phrase = video.phrases[8];

  // コンソール出力は『初めは互いに舌足らずで, 30350, 37710』
  console.log(`${phrase.text}, ${phrase.startTime}, ${phrase.endTime}`);

  // 動画の歌唱タイミングより数秒早い値が入っている
  // phraseから取れる IWord, IChar の startTime, endTime も同様に早い値が入っている
}

// 歌詞の発声タイミング推定ID (player.data.lyricsId) は Player生成時に指定していませんが
// onAppReady() 実行時に 52099 であることを確認しています。
ya2ha4
@ya2ha4
すみません、上記の onAppReady(video: IVideo): void {...} ですが onVideoReady(video: IVideo): void {...} の間違いです
Jun Kato
@arcatdmz

@ya2ha4 TextAlive App APIのご利用ありがとうございます。楽曲「嘘も本当も君だから」についてはURLがYouTubeのものとピアプロのもの、二種類がTextAliveに登録されています。

今回のプログラミングコンテスト用に歌詞タイミングなどが整備されているのはピアプロ用で、以下のようにして初期化できます。紛らわしくてすみませんが、ピアプロ用をご利用いただきますようお願いいたします。(それか、YouTubeプレイヤーが必要な理由がありますでしょうか?)

// 真島ゆろ / 嘘も本当も君だから
player.createFromSongUrl("https://piapro.jp/t/YW_d/20210206123357", {
  video: {
    // 音楽地図訂正履歴: https://songle.jp/songs/2121405/history
    beatId: 3953908,
    repetitiveSegmentId: 2099661,
    // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FYW_d%2F20210206123357
    lyricId: 52061,
    lyricDiffId: 5123,
  },
});
ya2ha4
@ya2ha4

@arcatdmz 早々のご返答ありがとうございます。
ピアプロ用にて歌詞タイミングが修正されていること確認いたしました。
また https://developer.textalive.jp/events/magicalmirai2021/ 「バージョンの固定」の設定に合わせる必要があること認識いたしました。
(ドキュメントの確認不足、申し訳ございません)

(それか、YouTubeプレイヤーが必要な理由がありますでしょうか?)

YouTubeプレイヤーは最終的に無くても動作可能なよう実装する予定ですが、以下の理由からリリックアプリ開発中はプレイヤーがあると助かります。

  • アプリの楽曲再生、停止UIの仕様が確定しておらず、それらのUI仕様が決まるまでプレイヤーを再生、停止などの操作UIとして活用できるため
  • YouTubeのMVを参考に演出を実装しようとする際、プレイヤーが表示されていると演出の調整および確認が効率的になるため

お手数ですが、TextAliveにYouTube用のものが登録されているコンテスト対象楽曲はピアプロ用の調整内容をYouTube用にも反映して頂くこと可能でしょうか?

4 replies
すぱりだ
@super_reader_twitter

@arcatdmz
お疲れさまです。指定された位置のV/A空間中の座標を取得するgetValenceArousalに関して質問になります。
https://developer.textalive.jp/packages/textalive-app-api/interfaces/idataloader.html#getvalencearousal

現在、楽曲『嘘も本当も君だから』(https://www.youtube.com/watch?v=Se89rQPp5tk) や他のコンテスト対応楽曲に対して、

public onTimeUpdate(position): void {

        console.log(this.player.getValenceArousal(position));

}

このような形でtime(ここではposition)を指定して覚醒度などを取得しようとしてもnullの値しか返って来ないのですが、現在getValenceArousalで覚醒度や感情価などの値はを取得することはできないのでしょうか?

5 replies
すぱりだ
@super_reader_twitter
@arcatdmz
お疲れさまです。APIにアクセスする際に使用しているtokenに関して質問になります。
privateリポジトリ設定をしていたとしてもtokenをgithub上でそのまま保存しておくことに違和感を感じたのですが、コンテスト提出時のtokenの持ち方に関してコンテスト運営側からの指定などありますでしょうか?
2 replies
ya2ha4
@ya2ha4

お疲れ様です。
iOS 環境で楽曲を自動再生する為に Player.requestPlay() を実行すると関数は true を返すものの楽曲は再生されませんでした。

これは iOS ではメディアの自動再生できない仕様 (https://developers.google.com/youtube/iframe_api_reference#Mobile_considerations) の影響受けていると思うのですが
このケースの再生失敗判定は Player.requestPlay() ではなく別方法で判別するのが TextAlive App API の仕様なのでしょうか?
その場合はどのようにして再生の成功、失敗を判定するのが正しいでしょうか?

5 replies
ya2ha4
@ya2ha4

お疲れ様です。
App API を利用してリリックアプリを作成していた際、後述する現象が発生していましたので問い合わせを行いたいと考えています。
それらの現象について検証コードを作成したのですが、一部マジカルミライ2021プログラミングコンテストに提出したコードを含んでおり規約上コンテスト終了までソースコードが公開できない状態です。
検証コードのprivateリポジトリにコラボレータとして招待しコードや現象の補足を共有し確認して頂くことは可能でしょうか?
以下、問い合わせたい内容


Player.requestPlay() 実行後、PlayerEventListener.onTimeUpdate() が呼ばれるタイミングまでに Player.timer.position を参照すると曲の長さを超える値が入ってる

この現象はプログラムから Player.requestPlay() を実行せずとも Player クラスが生成する Youtube プレイヤーにて再生した場合でも発生します。
この現象はアプリ起動直後、初回の再生時には発生せず、一度楽曲を再生し一時停止した後に再生すると発生します。


歌詞情報のないタイミングで Player.data.getVocalAmplitude() にて声量を取得しても値が常に 0 を超えている

const word = Player.video.findWord(Player.timer.position); (word == null) を満たす状態で
Player.data.getVocalAmplitude(Player.timer.position) にて声量を取得しても値が常に 0 を超えています。
数秒以上ボーカルのない間奏のタイミングでも声量が 0 になりませんが、これは意図されている挙動でしょうか?


Player.video.lastChar.endTime を超える値で Player.getValenceArousal() を実行するとエラーが発生する場合がある

Player.video.lastChar.endTime + OFFSET < position (OFFSETは数秒程度を表す値) を満たす状態で
Player.getValenceArousal(position); を実行すると以下のエラーが発生しました。

Uncaught TypeError: Cannot read properties of undefined (reading 't')
    at t.getValenceArousal (index.es.js:2)
    at t.getValenceArousal (index.es.js:2)
    at t.getValenceArousal (index.es.js:2)
    at Player.getValenceArousal(position) を呼び出した関数
    at ...

頻繁にビート間隔が変動している

ほぼ1ビート毎にビート間隔 (IBeat.duration) が変わっており、BPMの表示やBPMに即した演出を実装しようとするとそれらの表示が安定しなくなります。

11 replies