Alexa.Gadget.MusicDataインターフェース(ベータ)
Alexa.Gadget.MusicDataインターフェース(ベータ)
このインターフェースは、Echoデバイスで再生しているAmazon Musicのテンポデータをガジェットに送信します。このインターフェースはAmazon Musicでのみ動作します。その他の音楽サービスプロバイダーはサポートしていません。
ガジェットがこのインターフェースをサポートしている場合は、1曲につきTempo
ディレクティブを2つ受信します。1つは曲の先頭に、もう1つは曲の終わりに受信します。曲の先頭に提供されるテンポデータは、曲の1分あたりの平均拍数です。曲の終わりに提供されるテンポデータはゼロで、曲が終了したことを示します。
Amazon Musicがミュートになっている場合でも、テンポデータはガジェットに送信されます。
注: 各ディレクティブとイベントは、3つの個別の.protoファイル(ヘッダー、ペイロード、およびこの2つが結合されたファイル)がコンパイルされたものです。.protoファイルは、Alexa GadgetsサンプルコードGitHubリポジトリからダウンロードできます。このトピックでは、各.protoファイルのすべてのフィールドをまとめて説明します。
このインターフェースのサポート
このインターフェースをサポートするには、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 の値を引いた数値を使用できます。
たとえば、 playerOffsetInMilliseconds が7000 で、startOffsetInMilliSeconds が9000 のテンポデータをガジェットが受信しているとします。この場合、受信しているデータは曲に入るまで2000 ミリ秒であることを算出できます。startOffsetInMilliseconds のテンポ値が0の場合、またはplayerOffsetInMilliseconds の値がstartOffsetInMilliseconds の値以上の場合は、ガジェットはデータをすぐに処理する必要があります。 |
int32 |
value |
音楽のテンポを1分あたりの拍数の単位で示す値です。値が0のときは、曲の終わりを意味します。 | int32 |