1 | "use strict";
|
---|
2 |
|
---|
3 | var paper_x_dim = 920;
|
---|
4 | var paper_y_dim = 445;
|
---|
5 |
|
---|
6 | var gameOnCurrentTimeXPos = 0;
|
---|
7 | var gameOnCurrentTimelineRect = null;
|
---|
8 |
|
---|
9 | function updateGameOnCurrentTimeline()
|
---|
10 | {
|
---|
11 | gameOnCurrentTimeXPos = (mediaPlayer.currentTime / mediaPlayer.duration) * paper_x_dim;
|
---|
12 | //console.log("*** x pos = " + gameOnCurrentTimeXPos);
|
---|
13 |
|
---|
14 | gameOnCurrentTimelineRect.attr({x: gameOnCurrentTimeXPos});
|
---|
15 | }
|
---|
16 |
|
---|
17 | function initGameOn()
|
---|
18 | {
|
---|
19 | console.log("initGameOn()");
|
---|
20 |
|
---|
21 | var gmp_x_dim = $('#gameOnPaper').width();
|
---|
22 | var gmp_y_dim = $('#gameOnPaper').height();
|
---|
23 |
|
---|
24 | console.log("*** gmp_x_dim = " + gmp_x_dim);
|
---|
25 | console.log("*** gmp_y_dim = " + gmp_y_dim);
|
---|
26 |
|
---|
27 | var paper_x_dim = 920;
|
---|
28 | var paper_y_dim = 445;
|
---|
29 |
|
---|
30 | var num_midi_pitches = 128;
|
---|
31 |
|
---|
32 | //var paper = Raphael("gameOnPaper",gmp_x_dim,gmp_y_dim);
|
---|
33 | var paper = Raphael("gameOnPaper",paper_x_dim,paper_y_dim);
|
---|
34 | paper.canvas.style.backgroundColor = '#FFFFFF';
|
---|
35 |
|
---|
36 | console.log("*** hasLocalStorage = " + hasLocalStorage);
|
---|
37 |
|
---|
38 | if (hasLocalStorage) {
|
---|
39 | var docOID = gs.cgiParams.d;
|
---|
40 |
|
---|
41 | var docStorageStr = localStorage.getItem(docOID);
|
---|
42 |
|
---|
43 | var docStorage = (docStorageStr != null) ? eval("("+docStorageStr+")") : {palTracks:{}, popTracks:{}};
|
---|
44 |
|
---|
45 | var palTracks = docStorage.palTracks || {};
|
---|
46 |
|
---|
47 | // 'palTracks' for the form:
|
---|
48 | // palTracks[save_name] = [ { name: "my recording 1", baseCTime: 123.3, events: [ .... ] } ]
|
---|
49 |
|
---|
50 | var my_recording = palTracks['My Recording'];
|
---|
51 |
|
---|
52 | if (my_recording != null) {
|
---|
53 | var total_duration = mediaPlayer.duration;
|
---|
54 | console.log("*** total duration = " + total_duration);
|
---|
55 |
|
---|
56 | var min_midi_pitch = num_midi_pitches-1;
|
---|
57 | var max_midi_pitch = 0;
|
---|
58 |
|
---|
59 | // calculate range of midi pitches present
|
---|
60 | for (var b=0; b<my_recording.length; b++) {
|
---|
61 | var track_block = my_recording[b];
|
---|
62 | var base_ctime = track_block.baseCTime;
|
---|
63 | var block_events = track_block.events;
|
---|
64 |
|
---|
65 | for (var ne=0; ne<block_events.length; ne++) {
|
---|
66 | var midi_pitch = block_events[ne].midiPitch;
|
---|
67 | if (midi_pitch < min_midi_pitch) {
|
---|
68 | min_midi_pitch = midi_pitch;
|
---|
69 | }
|
---|
70 | if (midi_pitch > max_midi_pitch) {
|
---|
71 | max_midi_pitch = midi_pitch;
|
---|
72 | }
|
---|
73 | }
|
---|
74 | }
|
---|
75 | console.log("*** max pitch = " + max_midi_pitch + ", min pitch = " + min_midi_pitch);
|
---|
76 |
|
---|
77 | var raw_midi_range = max_midi_pitch - min_midi_pitch;
|
---|
78 | var midi_range = Math.max(4,raw_midi_range);
|
---|
79 |
|
---|
80 | var midi_y_dim_spacing = paper_y_dim / midi_range;
|
---|
81 |
|
---|
82 | for (var b=0; b<my_recording.length; b++) {
|
---|
83 |
|
---|
84 | var track_block = my_recording[b];
|
---|
85 | var base_ctime = track_block.baseCTime;
|
---|
86 |
|
---|
87 | var block_events = track_block.events;
|
---|
88 |
|
---|
89 | for (var ne=0; ne<block_events.length; ne++) {
|
---|
90 |
|
---|
91 | var note_event = block_events[ne];
|
---|
92 |
|
---|
93 | var startPercTime = (base_ctime + note_event.startCurrentTime)/total_duration;
|
---|
94 | var rx_org = startPercTime * paper_x_dim;
|
---|
95 | var ry_org = paper_y_dim - ((note_event.midiPitch - min_midi_pitch) * midi_y_dim_spacing);
|
---|
96 |
|
---|
97 | var rx_dim = (note_event.duration/1000)/total_duration * paper_x_dim;
|
---|
98 | var ry_dim = midi_y_dim_spacing;
|
---|
99 |
|
---|
100 | var rect = paper.rect(rx_org,ry_org,rx_dim,ry_dim);
|
---|
101 | rect.attr({stroke:"black",fill:"#2E52A4"});
|
---|
102 | }
|
---|
103 | }
|
---|
104 | }
|
---|
105 | }
|
---|
106 |
|
---|
107 | gameOnCurrentTimelineRect = paper.rect(-2,0,1,paper_y_dim);
|
---|
108 | console.log("*** gameOnCurrentTimelineRect = " + gameOnCurrentTimelineRect);
|
---|
109 |
|
---|
110 | gameOnCurrentTimelineRect.attr({fill: "red", stroke: "red"});
|
---|
111 |
|
---|
112 | }
|
---|
113 |
|
---|
114 | function pamDelete()
|
---|
115 | {
|
---|
116 | //var pamActiveLayers = $('input[type=checkbox]:checked', '#pamForm');
|
---|
117 |
|
---|
118 | var pamActiveLayers = [];
|
---|
119 | $('#pamForm input:checked').each(function() {
|
---|
120 | pamActiveLayers.push({name: this.name, value: this.value});
|
---|
121 | });
|
---|
122 |
|
---|
123 | return false;
|
---|
124 | }
|
---|