source: main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/game-on.js@ 29886

Last change on this file since 29886 was 29886, checked in by davidb, 9 years ago

Code for showing the note events in a piano-roll style display

  • Property svn:executable set to *
File size: 3.7 KB
Line 
1"use strict";
2
3var paper_x_dim = 920;
4var paper_y_dim = 445;
5
6var gameOnCurrentTimeXPos = 0;
7var gameOnCurrentTimelineRect = null;
8
9function 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
17function 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
114function 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}
Note: See TracBrowser for help on using the repository browser.