Songle Sync を試す

Songle Sync APIとは?

Songle Sync API (Application Programming Interface) を利用することで、楽曲を再生して演出を描画する音楽連動制御アプリを容易に開発することができます。まずは Songle SyncチュートリアルのStep 3 をご覧ください。

Songle Sync APIによるプログラミングでは、1台の機器を念頭においてアプリをプログラミングするだけで、他の多数の機器と自動的に連動できます。しかも、スマートフォンやパソコンのウェブブラウザーで動作するアプリ、照明を制御するアプリ、ロボットを制御するアプリのように、個別に開発されたさまざまな種類のアプリを、ある楽曲の再生に一緒に連動させることができます。このようにプログラマーは、通信や他の機器との連動制御を全く意識せずに、大規模な音楽連動制御を実現することができます。

この1台の機器を念頭においたプログラミングでは、小節の先頭ではこういう演出、サビに入ったらこういう演出、といったプログラム、すなわちイベント駆動なプログラムを記述するだけで、楽曲中の再生時刻が各イベントの時刻に達すると自動的にそうした演出が実行されます。しかも楽曲ごとに手作業でイベントを設定する必要がなく、Songleの解析結果(ビート、小節、サビ区間、繰り返し区間、コードなど)をイベントとして利用できます。こうしたイベント駆動プログラミングに基づく1台用のSongle Sync APIは、現在も提供中のSongle WidgetのAPI v1が発展したAPIに位置づけられるため、以下のリファレンスマニュアルでは、Songle Sync APIの説明にも関わらず、「Songle Widget」あるいはその省略形の「SW」が頻繁に登場します。

Songle sync devkit


SW.Player: class

Songle 外部埋め込みプレーヤを抽象化したクラスです。

var player = new SW.Player();
SW.Player.Name: string

SW.Player クラスの名前を表す dispatcherName の定数です。

SW.Player.Type: string

SW.Player クラスの種類を表す dispatcherType の定数です。

SW.Player.MinVolume: number

音量の最小値の定数です。

SW.Player.MaxVolume: number

音量の最大値の定数です。

SW.Player@accessToken: string

音楽地図情報などにアクセスするための公開用のトークンのプロパティです。
トークンは、ユーザページより発行することができます。

SW.Player@secretToken: string

音楽地図情報などにアクセスするための認証用のトークンのプロパティです。
トークンは、ユーザページより発行することができます。

SW.Player@brandElement: string

Songle APIの使用情報を表示するためのDOMを指定します。

SW.Player@mediaElement: string

media の情報を表示するためのDOMを指定します。

SW.Player@dispatcherName: string

このクラスの名前を返します。
このメソッドは、クラスインスタンスやイベントの発生元を特定する用途で利用することが想定されています。

console.log(player.dispatcherName == SW.Player.Name); // true
SW.Player@dispatcherType: string

このクラスの種類を返します。
このメソッドは、クラスインスタンスやイベントの発生元を特定する用途で利用することが想定されています。

console.log(player.dispatcherType == SW.Player.Type); // true
SW.Player@media: SW.Media::SuperClass

SW.Player@musicMap: object

現在読み込まれている楽曲構造にアクセスすることができます。

console.log(player.musicMap.beats);
console.log(player.musicMap.chords);
console.log(player.musicMap.chorusSections);
console.log(player.musicMap.repeatSections);
console.log(player.musicMap.variation);
SW.Player@isReady: boolean

ステータスが ready の場合 true を返します。

SW.Player@isPlaying: boolean

ステータスが playing の場合 true を返します。

SW.Player@isPaused: boolean

ステータスが paused の場合 true を返します。

SW.Player@isSeeking: boolean

ステータスが seeking の場合 true を返します。

SW.Player@duration: number

楽曲の長さをミリ秒単位で返します。

console.log(player.duration);
SW.Player@position: number

楽曲の再生位置を返します。

console.log(player.position);
SW.Player#activate: void

SW.Player#addPlugin: void

使用する plugin を追加します。

SW.Player#useMedia: void

使用する楽曲メディアを指定します。

SW.Player#play: void

音楽を再生します。

SW.Player#pause: void

音楽を一時停止します。

SW.Player#stop: void

音楽を停止します。

SW.Player#seekTo: void

音楽を指定する時間までseekします。

SW.Player#on: void

eventが起きたときに呼び出される関数を指定します。

player.on("play", function() {
console.log("play event occurred"); });
SW.Player error event

エラーが発生したときに呼び出される event です。

player.on("error", function() {
console.log("error event occurred"); });
SW.Player play event

楽曲の再生が開始されたときに呼び出される event です。

player.on("play", function() {
console.log("play event occurred"); });
SW.Player pause event

楽曲が一時停止されたときに呼び出される event です。

player.on("pause", function() {
console.log("pause event occurred"); });
SW.Player seek event

楽曲がseekされたときに呼び出される event です。

player.on("play", function() {
console.log("seek event occurred"); });
SW.Player finish event

楽曲の再生が終了したときに呼び出される event です。

player.on("play", function() {
console.log("finish event occurred"); });
SW.Media.SuperClass: class

Songle で使用する media を抽象化したクラスです。

SW.Media.SuperClass@Name: string

クラスの名前を返します。

SW.Media.SuperClass@Type: string

クラスの種類を返します。

SW.Media.SuperClass@DefaultVideoPlayerSizeW: number

SW.Media.SuperClass@DefaultVideoPlayerSizeH: number

SW.Media.SuperClass@StateReady: boolean

SW.Media.SuperClass@StatePlaying: boolean

SW.Media.SuperClass@StatePaused: boolean

SW.Media.SuperClass@StateSeeking: boolean

SW.Media.SuperClass@StateFinished: boolean

SW.Media.SuperClass@StateTimeUpdate: boolean

SW.Media.SuperClass mediaError event

SW.Media.SuperClass mediaReady event

SW.Media.SuperClass medisStateChange event

SW.Media.SuperClass mediaPlay event

SW.Media.SuperClass mediaPause event

SW.Media.SuperClass mediaSeek event

SW.Media.SuperClass mediaFinish event

SW.Media.Headless@Name: string

クラスの名前を返します。

SW.Media.Headless@Type: string

クラスの種類を返します。

SW.Media.HTMLMediaElement@Name: string

クラスの名前を返します。

SW.Media.HTMLMediaElement@Type: string

クラスの種類を返します。

SW.Media.NNVideo@Name: string

クラスの名前を返します。

SW.Media.NNVideo@Type: string

クラスの種類を返します。

SW.Media.YTVideo@Name: string

クラスの名前を返します。

SW.Media.YTVideo@Type: string

クラスの種類を返します。

SW.Plugin.SuperClass

SW.Plugin.Beat

SW.Plugin.Beat constructor

SW.Plugin.Beat barEnter event

小節に入ったとき呼び出される event です。

SW.Plugin.Beat barLeave event

小節を抜けたときに呼び出される event です。

SW.Plugin.Beat beatEnter event

拍に入ったときに呼び出される event です。

SW.Plugin.Beat beatLeave event

拍を抜けたときに呼び出される event です。

SW.Plugin.Chord constructor

SW.Plugin.Chord chordEnter event

サビに入ったときに呼び出される event です。

SW.Plugin.Chord chordLeave event

サビを抜けたときに呼び出される event です。

SW.Plugin.Chorus constructor

SW.Plugin.Chorus#seekToPrevChorusSection: void

前のサビ区間にシークします。

SW.Plugin.Chorus#seekToNextChorusSection: void

次のサビ区間にシークします。

SW.Plugin.Chorus#seekToPrevRepeatSection: void

SW.Plugin.Chorus#seekToNextRepeatSection: void

SW.Plugin.Chorus chorusSectionEnter event

SW.Plugin.Chorus chorusSectionLeave event

SW.Plugin.Chorus repeatSectionEnter event

SW.Plugin.Chorus repeatSectionLeave event

SW.Plugin.Variation constructor

SW.Plugin.Variation variationEnter event

SW.Plugin.Variation variationLeave event

SW.Plugin.SongleSync@isMaster: boolean

SW.Plugin.SongleSync@isSlave: boolean

SW.Plugin.SongleSync@nodeSessionId: string

SW.Plugin.SongleSync constructor

SW.Plugin.SongleSync songleSyncNodeChange event

SW.Plugin.SongleSync songleSyncNodeEnter event

SW.Plugin.SongleSync songleSyncNodeLeave event

SW.System@defaultEndpointWebClientProtocol: string

SW.System@defaultEndpointWebClientHost: string

SW.System@defaultEndpointWebSocketProtocol: string

SW.System@defaultEndpointWebSocketHost: string

SW.System@searchQueries: any

SW.System@showDebugLog: string

SW.System@showErrorLog: string

  • @Name
  • @Type