Alexa.Gadget.MusicDataインターフェース(ベータ)



Alexa.Gadget.MusicDataインターフェース(ベータ)

このインターフェースは、Echoデバイスで再生しているAmazon Musicのテンポデータをガジェットに送信します。このインターフェースはAmazon Musicでのみ動作します。その他の音楽サービスプロバイダーはサポートしていません。

ガジェットがこのインターフェースをサポートしている場合は、1曲につきTempoディレクティブを2つ受信します。1つは曲の先頭に、もう1つは曲の終わりに受信します。曲の先頭に提供されるテンポデータは、曲の1分あたりの平均拍数です。曲の終わりに提供されるテンポデータはゼロで、曲が終了したことを示します。

Amazon Musicがミュートになっている場合でも、テンポデータはガジェットに送信されます。

このインターフェースのサポート

このインターフェースをサポートするには、Capabilitiesの配列に以下のエントリを含むDiscover.Responseイベントを使用して、EchoデバイスのDiscoverディレクティブにガジェットから応答を返す必要があります。

{
   "type": "AlexaInterface",
   "interface": "Alexa.Gadget.MusicData",
   "version": "1.0",
   "configurations": {
      "supportedTypes":[
       {
          "name":"tempo"
       }
      ]
    }
}

ディレクティブ

このインターフェースには、以下に説明する1つのディレクティブ (Tempo)が含まれます。

Tempoディレクティブ

このディレクティブは、ガジェットに音楽のテンポを提供します。.protoファイルの記述は次のとおりです。

message TempoDirectiveProto {
   Directive directive = 1;
   message Directive {
      alexaGadgetMusicData.TempoDirectivePayloadProto payload = 2;
      header.DirectiveHeaderProto header = 1;
   }
}

message DirectiveHeaderProto {
   string namespace = 1; 
   string name = 2; 
   string messageId = 3; 
   string dialogRequestId = 4;      
}

message TempoDirectivePayloadProto {
   int32 playerOffsetInMilliseconds = 1;
   repeated TempoData tempoData = 2;
   message TempoData {
      int32 startOffsetInMilliseconds = 2;
      int32 value = 1;
   }
}

TempoDirectiveProto

このメッセージのフィールドは次のとおりです。

フィールド 説明
directive Tempoディレクティブの全文が含まれます。 Directive

Directive

このメッセージのフィールドは次のとおりです。

フィールド 説明
header このディレクティブのヘッダーが含まれます。 DirectiveHeaderProto
payload このディレクティブのペイロードが含まれます。 TempoDirectivePayloadProto

DirectiveHeaderProto

このメッセージのフィールドは次のとおりです。

フィールド 説明
namespace このディレクティブの名前空間で、Alexa.Gadget.MusicDataが入ります。 文字列
name このディレクティブの名前で、Tempoが入ります。 文字列
messageId このディレクティブのインスタンスを一意に定義するIDです。文字列は空の場合があります。 文字列
dialogRequestId このディレクティブをユーザーからの特定の音声対話に関連付ける一意のIDです。このフィールドは省略可能です。 文字列

TempoDirectivePayloadProto

このメッセージのフィールドは次のとおりです。

フィールド 説明
playerOffsetInMilliseconds オーディオプレーヤーが現在ストリーミングされている位置(ミリ秒単位)です。 int32
tempoData 1分あたりの拍数(BPM)単位での音楽のテンポ値と、指定されたテンポ値が有効になる曲の先頭からのオフセットをそれぞれが含む、TempoDataオブジェクトの配列です。 TempoDataの配列

TempoData

このメッセージのフィールドは次のとおりです。

フィールド 説明
startOffsetInMilliseconds 曲の先頭からの開始オフセットのvalue(ミリ秒単位)です。

曲を同期させるための手がかりとして、startOffsetInMilliSecondsの値からplayerOffsetInMillisecondsの値を引いた数値を使用できます。

たとえば、playerOffsetInMilliseconds7000で、startOffsetInMilliSeconds9000のテンポデータをガジェットが受信しているとします。この場合、受信しているデータは曲に入るまで2000ミリ秒であることを算出できます。


startOffsetInMillisecondsのテンポ値が0の場合、またはplayerOffsetInMillisecondsの値がstartOffsetInMillisecondsの値以上の場合は、ガジェットはデータをすぐに処理する必要があります。
int32
value 音楽のテンポを1分あたりの拍数の単位で示す値です。値が0のときは、曲の終わりを意味します。 int32