-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviz.js
122 lines (113 loc) · 3.11 KB
/
viz.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// 再生したいメディアを指定
const media_url = "https://www.youtube.com/watch?v=eVwdeIDjXeM";
let player;
// APIの準備が出来ると呼ばれる
window.onSongleWidgetAPIReady = function (SongleWidgetAPI) {
window.SW = SongleWidgetAPI;
SW.System.defaultEndpointWebClientProtocol = "https:";
init();
}
window.init = function () {
player = new SW.Player({
mediaElement: "div#widget" // プレイヤーを埋め込むDOMを指定
});
player.accessToken = window.accessToken;
player.secretToken = window.secretToken;
// 再生するメディアをセット
player.useMedia(media_url);
// slaveを同期させるプラグインを設定
player.addPlugin(new SW.Plugin.SongleSync());
// 利用するイベントのプラグインを設定
player.addPlugin(new SW.Plugin.Beat());
player.addPlugin(new SW.Plugin.Chorus());
player.addPlugin(new SW.Plugin.Chord());
// 各イベントに対応するアクションを設定
setBeatEvent();
setChordEvent();
setChorusEvent();
// mediaReadyで動画が準備完了したら実行
player.on("mediaReady", function () {
// プレイヤー操作ボタン設定
setPlayerCtrl();
// 自動再生
setTimeout(function () {
player.play();
player.seekTo(108000);
}, 1000);
})
}
// プレイヤー操作ボタン設定
window.setPlayerCtrl = function () {
// 再生
$("#widget_ctrl .play").click(function () {
player.play();
player.seekTo(109700);
});
// 停止
$("#widget_ctrl .pause").click(function () {
player.pause();
});
// 先頭
$("#widget_ctrl .head").click(function () {
player.seekTo(0);
});
// サビ出し
$("#widget_ctrl .seekto_chorus").click(function () {
player.seekToNextChorusSectionItem()
});
$("#widget_ctrl").css({ display: "table" });
$(".memo").show();
}
// ビートでタイルの色を変える(cssで指定)
window.setBeatEvent = function () {
player.on("beatEnter", function (e) {
for (let i = 1; i <= 4; i++) {
li = $("#beats li.b" + i)
if (e.data.beat.position == i) {
li.addClass("current");
} else {
li.removeClass("current");
}
}
});
}
// コード左上に表示する
window.setChordEvent = function () {
player.on("chordEnter", function (e) {
if (e.data.chord.name != "N") {
$("#chord").text(e.data.chord.name);
} else {
$("#chord").text("");
}
});
}
// サビはビートの色を変更(cssで指定)し、右上に「サビ」と表示させる
window.setChorusEvent = function () {
player.on("chorusSectionEnter", function (e) {
$("#beats").addClass("chorus");
$("#chorus_alert").show();
});
player.on("chorusSectionLeave", function (e) {
$("#beats").removeClass("chorus");
$("#chorus_alert").hide();
});
}
// URLの引数を取得する関数
window.getUrlVars = function () {
let i, key, keySearch, len, p, param, val, vars;
vars = {};
param = location.search.substring(1).split('&');
for (i = 0, len = param.length; i < len; i++) {
p = param[i];
keySearch = p.search(/=/);
key = '';
if (keySearch !== -1) {
key = p.slice(0, keySearch);
val = p.slice(p.indexOf('=', 0) + 1);
if (key !== '') {
vars[key] = decodeURI(val);
}
}
}
return vars;
}