- Timestamp:
- 2015-08-04T13:50:35+12:00 (9 years ago)
- Location:
- main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/audiosynth.view.js
r29980 r30093 292 292 293 293 var fnPlayKeyboard = function(e) { 294 console.log("***### fnPlayKeyboard() e=" + e); //JSON.stringify(e));294 //console.log("***### fnPlayKeyboard() e=" + e); //JSON.stringify(e)); 295 295 296 296 // check to see if any modal dialogs are open … … 307 307 } 308 308 309 console.log("**** testing keyboard event key: '" + e.key + "' keycode = " + e.keyCode);309 //console.log("**** testing keyboard event key: '" + e.key + "' keycode = " + e.keyCode); 310 310 311 311 var $focused = $(':focus'); … … 321 321 if (e.keyCode == 32) { // <space-bar> 322 322 togglePlayPause(); 323 //e.preventDefault();323 e.preventDefault(); 324 324 return false; 325 325 } … … 438 438 } 439 439 440 var drumKeyDown = { "C": false, "V": false, "B": false, "N": false, "M": false }; 441 440 442 var fnRemoveKeyBinding = function(e) { 441 443 442 console.log("**** key up at: " + Date.now())444 //console.log("**** key up at: " + Date.now()) 443 445 // console.log("*** event e = " + JSON.stringify(e)); 444 446 … … 462 464 keysPressed.splice(i, 1); 463 465 } 464 } 465 466 } 466 } 467 468 // See if drum animation should be stopped 469 if (e.keyCode == "C".charCodeAt(0)) { 470 drumKeyDown["C"] = false; 471 $('#drum1').trigger("mouseup"); 472 } 473 else if (e.keyCode == "V".charCodeAt(0)) { 474 drumKeyDown["V"] = false; 475 $('#drum3').trigger("mouseup"); 476 } 477 else if (e.keyCode == "B".charCodeAt(0)) { 478 drumKeyDown["B"] = false; 479 $('#drum2').trigger("mouseup"); 480 } 481 else if (e.keyCode == "N".charCodeAt(0)) { 482 drumKeyDown["N"] = false; 483 $('#drum4').trigger("mouseup"); 484 } 485 else if (e.keyCode == "M".charCodeAt(0)) { 486 drumKeyDown["M"] = false; 487 $('#drum5').trigger("mouseup"); 488 } 489 490 } 467 491 468 492 var fnPlaySong = function(arr) { … … 491 515 console.log("*** drum pressed keyCode: " + e.keyCode); 492 516 if (e.keyCode == "C".charCodeAt(0)) { 517 drumKeyDown["C"] = true; 493 518 $('#drum1').trigger("mousedown"); 494 519 } 495 520 else if (e.keyCode == "V".charCodeAt(0)) { 521 drumKeyDown["V"] = true; 522 $('#drum3').trigger("mousedown"); 523 } 524 else if (e.keyCode == "B".charCodeAt(0)) { 525 drumKeyDown["B"] = true; 496 526 $('#drum2').trigger("mousedown"); 497 527 } 498 else if (e.keyCode == "B".charCodeAt(0)) {499 $('#drum3').trigger("mousedown");500 }501 528 else if (e.keyCode == "N".charCodeAt(0)) { 529 drumKeyDown["N"] = true; 502 530 $('#drum4').trigger("mousedown"); 503 531 } 504 532 else if (e.keyCode == "M".charCodeAt(0)) { 533 drumKeyDown["M"] = true; 505 534 $('#drum5').trigger("mousedown"); 506 535 } -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/game-on.js
r29980 r30093 40 40 var docStorage = null; 41 41 42 var site_name = gs.xsltParams.site_name; 43 var collection = gs.cgiParams["c"]; 44 42 45 if (hasLocalStorage) { 43 46 … … 55 58 } 56 59 60 console.log("docStorage = " + docStorage); 61 //console.log("docOID = " + docOID); 62 //console.log("*** docOID in docStorage = " + (docOID in docStorage)); 63 console.log("*** palTracks = " + (JSON.stringify(docStorage.palTracks))); 64 console.log("*** popTracks = " + (JSON.stringify(docStorage.popTracks))); 65 66 //console.log("*** palTracks.length = " + (Object.keys(docStorage.palTracks).length)); 67 68 /* 69 70 //if ((docStorage==null) || !(docOID in docStorage) || (docOID in Storage && !(docStorage[docOID].palTracks.length) )) { 71 if ((docStorage==null) || !(docStorage.palTracks) || (docStorage.palTracks && (Object.keys(docStorage.palTracks).length==0))) { 72 73 74 console.log("**** Need to retrieve Respooled data from DL"); 75 76 if (docStorage==null) { 77 docStorage = {palTracks:{}, popTracks:{}}; 78 } 79 gs.functions.getArchivesMetadata(collection, site_name, docOID, 80 "docStorage", 0, function(metadata) { 81 var metaval_encoded_str = metadata.getValue(); 82 var metaval_str = decodeURIComponent(metaval_encoded_str) 83 console.log("***!!! metadata = '" + metaval_str + "'"); 84 if (metaval_str != "") { 85 var metaval = eval("("+metaval_str+")"); 86 console.log("***!!! metadata JSON = " + JSON.stringify(metaval)); 87 docStorage = metaval; 88 } 89 else { 90 docStorage = {palTracks:{}, popTracks:{}}; 91 } 92 goDocStorage = docStorage; 93 } 94 ); 95 96 } 97 */ 98 99 //console.log("*** returning docStorage.palTracks " + JSON.stringify(docStorage.palTracks)); 100 57 101 return docStorage; 102 } 103 104 105 function saveDocStorage(log_prefix) 106 { 107 var docOID = gs.cgiParams.d; 108 var site_name = gs.xsltParams.site_name; 109 var collection = gs.cgiParams["c"]; 110 111 if (hasLocalStorage) { 112 console.log(log_prefix + ": Saving in Browser localStorage track data for '" + docOID + "'"); 113 localStorage.setItem(docOID,JSON.stringify(goDocStorage)); 114 } 115 116 /* 117 var goDocStorageStrEncoded = encodeURIComponent(JSON.stringify(goDocStorage)); 118 119 console.log(log_prefix+": Away to save metadata to DL: " + goDocStorageStrEncoded); 120 121 gs.functions.setArchivesMetadata(collection, site_name, docOID, 122 "docStorage", null, goDocStorageStrEncoded, null, "override", 123 function(response){ 124 console.log("**** saved Respooled metadata to the DL server") 125 console.log("*** response: " + JSON.stringify(response)); 126 } 127 ); 128 */ 58 129 } 59 130 … … 70 141 } 71 142 143 function getActiveOverlayLayers(opt_field) 144 { 145 var field = opt_field || "name"; 146 147 var popActiveLayers = []; 148 $('#popForm input:checked').each(function() { 149 popActiveLayers.push(this[field]); 150 }); 151 152 return popActiveLayers; 153 } 154 155 156 function getPalTracks(docOID) { 157 158 if (!("palTracks" in goDocStorage)) { 159 goDocStorage = {palTracks:{}, popTracks:{}}; 160 } 161 162 return goDocStorage.palTracks; 163 164 } 165 166 function getPopTracks(docOID) { 167 168 if (!("popTracks" in goDocStorage)) { 169 goDocStorage = {palTracks:{}, popTracks:{}}; 170 } 171 172 return goDocStorage.popTracks; 173 174 } 175 72 176 function populatePalList(docStorage) 73 177 { 74 178 // populate pal List 179 var docOID = gs.cgiParams.d; 180 75 181 if (hasLocalStorage) { 76 182 77 var palTracks = docStorage.palTracks || {};183 var palTracks = getPalTracks(docOID); 78 184 79 185 //console.log("*** palTracks = " + JSON.stringify(palTracks)); … … 103 209 104 210 211 function populatePopList(docStorage) 212 { 213 // populate pop List 214 var docOID = gs.cgiParams.d; 215 var hasPopTracks = false; 216 217 if (hasLocalStorage) { 218 219 var popTracks = getPopTracks(docOID); 220 221 //console.log("*** popTracks = " + JSON.stringify(popTracks)); 222 var popListKeys = Object.keys(popTracks).sort(); 223 224 if (popListKeys.length>0) { 225 hasPopTracks = true; 226 } 227 for (var i=0; i<popListKeys.length; i++) { 228 var key = popListKeys[i]; 229 var track = popTracks[key]; 230 var name = key; 231 var cb_name = name.replace(/[ -]/g,""); 232 var cb_value = name; 233 234 var opt_checked = (i==0) ? ' checked="checked"' : ""; 235 236 $('#popList').append('<div id="pop'+cb_name+'"><input type="checkbox" ' 237 + '" name="'+cb_name+'" value="' + cb_value + '"' 238 + opt_checked + '>' 239 + name + '</div>'); 240 } 241 } 242 243 if (!hasPopTracks) { 244 // Put in some fake data for now 245 console.log("**** adding baseline Popup Trivia item"); 246 247 $('#popList').append('<input type="checkbox" id="popPopupTrivia" name="PopupTrivia" value="Popup Trivia" checked="checked"/>Popup Trivia<br />'); 248 249 if (hasLocalStorage) { 250 var popTracks = getPopTracks(docOID); 251 popTracks["Popup Trivia"] = ""; 252 } 253 254 255 //$('#palList').append('<input type="checkbox" id="palDrumbeatHero" name="DrumbeatHero" value="Drum-beat Hero" />Drum-beat Hero<br />'); 256 } 257 } 258 259 105 260 function computeMidiStats(track) 106 261 { … … 168 323 go_top_level_group = new goPaper.group("gameOnPaper",[]); 169 324 325 var docOID = gs.cgiParams.d; 326 170 327 if (hasLocalStorage) { 171 328 … … 173 330 // palTracks[save_name] = [ { name: "my recording 1", baseCTime: 123.3, events: [ .... ] } ] 174 331 175 var palTracks = docStorage.palTracks || {};332 var palTracks = getPalTracks(docOID); 176 333 177 334 var total_duration = mediaPlayer.duration; … … 233 390 var block_events_len = block_events.length; 234 391 for (var ne=0; ne<block_events_len; ne++) { 235 392 236 393 var note_event = block_events[ne]; 237 394 var midi_pitch = note_event.midiPitch; 238 395 239 396 var startPercTime = (base_ctime + note_event.startCurrentTime)/total_duration; 397 240 398 var rx_org = startPercTime * go_paper_x_dim; 241 var ry_org = go_paper_y_dim - ((note_event.midiPitch - min_midi_pitch) * midi_y_dim_spacing) - midi_y_dim_spacing;399 var ry_org; 242 400 243 var rx_dim = (note_event.duration/1000)/total_duration * go_paper_x_dim;244 var ry_dim = midi_y_dim_spacing;401 var rx_dim; 402 var ry_dim; 245 403 404 if (note_event.type && (note_event.type=="drum")) { 405 ry_org = 0; 406 407 rx_dim = 1; 408 ry_dim = go_paper_y_dim; 409 } 410 else { 411 var midi_pitch = note_event.midiPitch; 412 413 //var startPercTime = (base_ctime + note_event.startCurrentTime)/total_duration; 414 //var rx_org = startPercTime * go_paper_x_dim; 415 ry_org = go_paper_y_dim - ((note_event.midiPitch - min_midi_pitch) * midi_y_dim_spacing) - midi_y_dim_spacing; 416 417 rx_dim = (note_event.duration/1000)/total_duration * go_paper_x_dim; 418 ry_dim = midi_y_dim_spacing; 419 } 420 246 421 var rect = goPaper.rect(rx_org,ry_org,rx_dim,ry_dim-0.2); 247 422 //rect.attr({stroke:"none", strokeWidth:0.2, fill:"#2E52A4"}); … … 251 426 go_top_level_group.push(rect); 252 427 253 if (midi_pitch < block_min_midi_pitch) { 254 block_min_midi_pitch = midi_pitch; 428 if (midi_pitch) { 429 if (midi_pitch < block_min_midi_pitch) { 430 block_min_midi_pitch = midi_pitch; 431 } 432 if (midi_pitch > block_max_midi_pitch) { 433 block_max_midi_pitch = midi_pitch; 434 } 255 435 } 256 if (midi_pitch > block_max_midi_pitch) { 257 block_max_midi_pitch = midi_pitch; 258 } 436 259 437 } 260 438 … … 343 521 goPaper = Raphael("gameOnPaper",go_paper_x_dim,go_paper_y_dim); 344 522 goPaper.canvas.style.backgroundColor = '#FFFFFF'; 523 524 if (gs.xsltParams.interface_name == "dlfm") { 525 526 $("#gameOnPaper>svg").panzoom({ 527 $zoomIn: $(".zoom-in"), 528 $zoomOut: $(".zoom-out"), 529 $zoomRange: $(".zoom-range"), 530 $reset: $(".reset") 531 }); 532 533 $("#gameOnPaper>svg").panzoom("option", "contain", true ); 534 535 } 345 536 346 537 … … 348 539 349 540 populatePalList(goDocStorage); 541 populatePopList(goDocStorage); 542 350 543 displayActiveTrackLayers(goDocStorage); 351 544 } 352 545 546 // pal routines 353 547 354 548 function palDeleteConfirmed() … … 359 553 var palActiveLayersValue = getActiveTrackLayers("value"); 360 554 361 var palTracks = goDocStorage.palTracks || {}; 555 var docOID = gs.cgiParams.d; 556 var palTracks = getPalTracks(docOID); 362 557 363 558 for (var i=0; i<palActiveLayersID.length; i++) { … … 368 563 delete palTracks[value]; 369 564 } 565 566 saveDocStorage("palDeleteConfirmed()"); 370 567 } 371 568 … … 387 584 function palSave() 388 585 { 389 var palTracks = goDocStorage.palTracks || {}; 586 var docOID = gs.cgiParams.d; 587 var palTracks = getPalTracks(docOID); 390 588 391 589 var json_edit_str = trackEditor.getSession().getValue(); 392 console.log("**** json edit str= " + json_edit_str);590 console.log("**** palSave() trackEditor.getSession value = " + json_edit_str); 393 591 394 592 var json_edit = eval("("+json_edit_str+")"); … … 398 596 //console.log("*** key = " + key); 399 597 var val = json_edit[key]; 400 console.log("**** Saving under key[ 598 console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val)); 401 599 palTracks[key] = val; 402 600 } 403 601 } 404 602 405 if (hasLocalStorage) { 406 var docOID = gs.cgiParams.d; 407 console.log("Saving in Browser localStorage track data for '" + docOID + "'"); 408 localStorage.setItem(docOID,JSON.stringify(goDocStorage)); 409 } 603 saveDocStorage("palSave()"); 604 410 605 } 411 606 412 607 function palEdit() 413 608 { 414 var palTracks = goDocStorage.palTracks || {}; 609 var docOID = gs.cgiParams.d; 610 var palTracks = getPalTracks(docOID); 415 611 416 612 var palActiveLayers = getActiveTrackLayers("value"); … … 431 627 } 432 628 629 // 630 // Popup Info Overlay routines 631 // 632 633 634 function popCreate() 635 { 636 $('#create-info-popup').dialog('open'); 637 638 return false; // no need to process the event any further 639 } 640 641 function popDeleteConfirmed() 642 { 643 //var popActiveLayers = $('input[type=checkbox]:checked', '#popForm'); 644 645 var popActiveLayersID = getActiveOverlayLayers("name"); 646 var popActiveLayersValue = getActiveOverlayLayers("value"); 647 648 var docOID = gs.cgiParams.d; 649 var popTracks = getPopTracks(docOID); 650 651 for (var i=0; i<popActiveLayersID.length; i++) { 652 var id = popActiveLayersID[i]; 653 $('#pop'+id).remove(); 654 655 var value = popActiveLayersValue[i]; 656 delete popTracks[value]; 657 } 658 659 //console.log("***### pop mode, skipping saving for now"); 660 saveDocStorage("popDeleteConfirmed()"); 661 662 } 663 664 665 function popDelete() 666 { 667 $('#delete-info-popup').dialog('open'); 668 669 return false; // no need to process the event any further 670 } 671 672 function popSave() 673 { 674 var docOID = gs.cgiParams.d; 675 var popTracks = getPopTracks(docOID); 676 677 var text_edit_str = infoEditor.getSession().getValue(); 678 console.log("**** popSave() infoEditor.getSession value = " + text_edit_str); 679 680 var popActiveLayers = getActiveOverlayLayers(); 681 //var json_edit = eval("("+json_edit_str+")"); 682 683 var key = popActiveLayers[0]; 684 //console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val)); 685 console.log("**** Saving under key[" + key + "]: " + text_edit_str); 686 popTracks[key] = text_edit_str; 687 688 /* 689 for (var key in json_edit){ 690 if (json_edit.hasOwnProperty(key)) { 691 //console.log("*** key = " + key); 692 var val = json_edit[key]; 693 console.log("**** Saving under key[" + key + "]: " + JSON.stringify(val)); 694 popTracks[key] = val; 695 } 696 } 697 */ 698 699 //console.log("***### pop mode, skipping saving for now"); 700 saveDocStorage("popSave()"); 701 702 } 703 704 705 function popEdit() 706 { 707 var docOID = gs.cgiParams.d; 708 var popTracks = getPopTracks(docOID); 709 710 var popActiveLayers = getActiveOverlayLayers("value"); 711 712 //var edit_json = {}; 713 var edit_text = ""; 714 715 for (var i=0; i<popActiveLayers.length; i++) { 716 var track_name = popActiveLayers[i]; 717 //edit_json[track_name] = popTracks[track_name]; 718 edit_text += popTracks[track_name]; 719 } 720 721 //infoEditor.setValue(JSON.stringify(edit_json,null,'\t')); 722 infoEditor.setValue(edit_text); 723 infoEditor.clearSelection(); 724 725 $('#edit-info-popup').dialog('open'); 726 727 return false; // no need to process the event any further 728 } 729 730 731 732 -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/in-the-groove.js
r29888 r30093 42 42 var output = e.outputBuffer.getChannelData(c); 43 43 44 44 /* 45 45 for (var i = 0; i < bufferSize; i++) { 46 46 if ( ((mediaPlaybackMode == "neutral") || (mediaPlaybackMode == "record")) … … 55 55 prev_input[c] = input[i]; 56 56 } 57 */ 58 59 if ((mediaPlaybackMode == "neutral") || (mediaPlaybackMode == "record")) { 60 61 62 // Apply Graphics Equalizer, and then play the result 63 64 65 if ((typeof grapheqL !== "undefined") && (typeof grapheqR !== "undefined")) { 66 if (c==0) { 67 // left 68 output.set(grapheqL.process(input)); 69 70 } 71 else { 72 // right 73 output.set(grapheqR.process(input)); 74 } 75 } 76 } 77 else { 78 79 for (var i = 0; i < bufferSize; i++) { 80 if (InTheGroove) { 81 output[i] = input[i]; 82 } 83 else { 84 // Make sound 'tinny' through simple high-pass filter 85 output[i] = input[i] - prev_input[c]; 86 } 87 88 prev_input[c] = input[i]; 89 } 90 } 91 57 92 } 93 58 94 } 59 95 60 96 source.connect(tinnyEffectNode); 61 97 tinnyEffectNode.connect(audioCtx.destination); -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/jam-guitar.js
r29942 r30093 239 239 this._strumDuration = 100; 240 240 if (this._midiPitch>=0) { 241 MIDI.noteOn( 0, this._midiPitch, 40);241 MIDI.noteOn(guitar_midi_inst_num, this._midiPitch, 40); 242 242 console.log("*** Setting Jam guitar strumForce = 5"); 243 243 } … … 265 265 if (this._midiPitch>=0) { 266 266 console.log("*** setting strumDuration = 0"); 267 MIDI.noteOff( 0, this._midiPitch, 0);267 MIDI.noteOff(guitar_midi_inst_num, this._midiPitch, 0); 268 268 } 269 269 } -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/jquery-drums.js
r29938 r30093 1 1 // Based on: 2 2 // http://www.theonlytutorials.com/jquery-drum-sets-html5-audio-tag-example/ 3 4 5 var hitDrumStartCurrentTime = null; 6 var hitDrumEndCurrentTime; 7 var hitDrumMidiPitch; 8 var hitDrumMidiPitchReadable; 9 10 function calcDrumMidiNoteInfo() { 11 if (hitDrumStartCurrentTime != null) { 12 13 var hitDrumDuration = hitDrumEndCurrentTime - hitDrumStartCurrentTime; 14 15 // console.log("**** " + playedNotePitch + " (midi pitch = " + playedMidiPitch+ ") startTime = ", relativePlayStartTime + ", duration = " + playedDuration); 16 17 if (mediaPlayedNotes[String(mediaStartPlayTime)]) { 18 19 mediaPlayedNotes[String(mediaStartPlayTime)].push( 20 { 'type' : "drum", 21 'midiPitch' : hitDrumMidiPitch, 22 //'midiNoteOn' : relativePlayedNoteStartTime, 23 //'midiNoteOff' : relativePlayedNoteEndTime, 24 'startCurrentTime' : hitDrumStartCurrentTime, 25 'duration' : hitDrumDuration, 26 'startPercTime': hitDrumStartCurrentTime/mediaPlayer.duration, 27 'humanReadble' : hitDrumMidiPitchReadable } 28 ); 29 } 30 31 } 32 } 3 33 4 34 $(document).ready(function() { … … 26 56 27 57 $('.drum').mousedown(function() { 58 59 hitDrumStartCurrentTime = mediaPlayer.currentTime; 60 hitDrumMidiPitchReadable = $(this).attr('id'); 61 hitDrumMidiPitch = hitDrumMidiPitchReadable.replace(/^drum/,""); 28 62 29 63 //find the drum hit and play the respective audio … … 31 65 drum = eval(drum); 32 66 33 if (drum.ended) { 67 if (drum.ended) { 34 68 $(this).addClass('hit'); 35 69 drum.play(); … … 40 74 console.log("Error thrown when playing drum sound: " + e); 41 75 } 76 77 // Force finish of previous drum hit 78 hitDrumEndCurrentTime = mediaPlayer.currentTime; 79 calcDrumMidiNoteInfo(); 80 hitDrumStartCurrentTime = mediaPlayer.currentTime; 81 hitDrumEndCurrentTime = null; 82 42 83 $(this).addClass('hit'); 43 84 drum.play(); … … 46 87 47 88 $('.drum').mouseup(function() { 89 hitDrumEndCurrentTime = mediaPlayer.currentTime; 90 calcDrumMidiNoteInfo(); 91 hitDrumStartCurrentTime = null; 92 48 93 $(this).removeClass('hit'); 49 94 }); -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/media-player.js
r29898 r30093 47 47 48 48 // Hide the browser's default controls 49 mediaPlayer.controls = false; 50 49 mediaPlayer.controls = false; 50 51 // Make the default volume a little bit quiter, so instruments can be heard over it 52 mediaPlayer.volume = 0.3 53 51 54 // Add a listener for the timeupdate event so we can update the progress bar 52 55 mediaPlayer.addEventListener('timeupdate', updateProgressBar, false); … … 343 346 //console.log("*** set up docStorage: " + JSON.stringify(docStorage)); 344 347 345 var palTracks = docStorage.palTracks;348 var palTracks = getPalTracks(docOID); 346 349 347 350 // Make timing information relative to ba base value … … 362 365 palTracks[save_name] = [ { name: save_name + " 1", baseCTime: base_time_sct, events: recordedNotesArray } ] 363 366 364 console.log("Storing " + num_rec_notes + " recorded notes as layer '" + save_name +"'"); 365 console.log("**** saved: " + JSON.stringify(palTracks[save_name])); 366 367 localStorage.setItem(docOID, JSON.stringify(docStorage)); 367 //console.log("Storing " + num_rec_notes + " recorded notes as layer '" + save_name +"'"); 368 //console.log("**** saved: " + JSON.stringify(palTracks[save_name])); 369 370 //localStorage.setItem(docOID, JSON.stringify(docStorage)); 371 368 372 } 369 373 else { 370 console.log("Warning: unable to save '" + save_name +"' as browser does not support LocalStorage"); 371 } 372 374 //console.log("Warning: unable to save '" + save_name +"' as browser does not support LocalStorage"); 375 } 376 377 saveDocStorage("saveRecording()"); 378 373 379 var cb_name = save_name.replace(/[ -]/g,""); 374 380 var cb_value = save_name; … … 386 392 return valid; 387 393 } 394 395 396 function saveNewOverlay() 397 { 398 var valid = true; 399 400 var $save_name_input = $("#create-info-name"); 401 var save_name = $save_name_input.val(); 402 403 if (save_name.match(/^\s*$/)) { 404 valid = false; 405 $save_name_input.addClass( "ui-state-error" ); 406 } 407 else { 408 409 if (hasLocalStorage) { 410 var docOID = gs.cgiParams.d; 411 412 413 // Force reset of what has been stored for this item 414 //localStorage.setItem(docOID, JSON.stringify(null)); 415 416 var docStorage = getDocStorage(docOID); 417 418 var popTracks = getPopTracks(docOID); 419 420 var template_webvtt; 421 template_webvtt = "WEBVTT\n"; 422 template_webvtt += "\n"; 423 template_webvtt += "NOTE Example Popup Info Nugget\n"; 424 template_webvtt += "\n"; 425 template_webvtt += "CueId1\n"; 426 template_webvtt += "00:00.000 --> 00:2.000\n"; 427 template_webvtt += "{\n"; 428 template_webvtt += "\"title\": \"My First Title\",\n"; 429 template_webvtt += "\"text\": \"My first info nugget text\",\n"; 430 template_webvtt += "\"xpos\": \"10px\",\n"; 431 template_webvtt += "\"ypos\": \"30px\"\n"; 432 template_webvtt += "}\n"; 433 template_webvtt += "\n"; 434 435 popTracks[save_name] = [ template_webvtt ]; // Set up new entry, with exemplar webVTT entry 436 437 //console.log("Storing " + num_rec_notes + " recorded notes as layer '" + save_name +"'"); 438 //console.log("**** saved: " + JSON.stringify(palTracks[save_name])); 439 440 //localStorage.setItem(docOID, JSON.stringify(docStorage)); 441 442 } 443 else { 444 //console.log("Warning: unable to save '" + save_name +"' as browser does not support LocalStorage"); 445 } 446 447 //console.log("***### pop mode, skipping saving for now"); 448 saveDocStorage("saveNewOverlay()"); 449 450 var cb_name = save_name.replace(/[ -]/g,""); 451 var cb_value = save_name; 452 var name = save_name; 453 454 $('#popList').append('<div id="pop'+cb_name+'"><input type="checkbox" ' 455 + '" name="'+cb_name+'" value="' + cb_value + '"' 456 + ' checked="checked">' 457 + name + '</div>'); 458 459 var $dialog = $('#create-info-popup'); 460 $dialog.dialog( "close" ); 461 } 462 463 return valid; 464 } 465 388 466 389 467 … … 417 495 } 418 496 }); 419 497 dialog.parent().css("z-index",999); 498 420 499 var form = dialog.find( "form" ).on( "submit", function( event ) { 421 500 event.preventDefault(); … … 450 529 } 451 530 }); 452 531 delete_dialog.parent().css("z-index",999); 453 532 454 533 var edit_dialog = $('#edit-recording-popup').dialog({ … … 479 558 } 480 559 }); 481 560 edit_dialog.parent().css("z-index",999); 561 482 562 trackEditor = ace.edit("trackEditor"); 483 563 trackEditor.getSession().setMode("ace/mode/json"); … … 486 566 trackEditor.getSession().setUndoManager(new UndoManager()); 487 567 568 // 569 // Pop layer overlays 570 // 571 572 var new_info_dialog = $('#create-info-popup').dialog({ 573 width : 500, 574 height: 350, 575 autoOpen: false, // Do not open on page load 576 modal: true, // Freeze the background behind the overlay 577 578 show: { 579 effect: "blind", 580 duration: 800 581 }, 582 hide: { 583 effect: "blind", 584 duration: 300 585 }, 586 587 buttons: { 588 "Create Overlay": saveNewOverlay, 589 Cancel: function() { 590 $(this).dialog("close"); 591 } 592 }, 593 close: function() { 594 form[0].reset(); 595 $( "#create-info-name" ).removeClass( "ui-state-error" ); 596 } 597 }); 598 new_info_dialog.parent().css("z-index",999); 599 600 var info_delete_dialog = $('#delete-info-popup').dialog({ 601 resizable: false, 602 autoOpen: false, 603 width: 500, 604 height:200, 605 modal: true, 606 607 show: { 608 effect: "blind", 609 duration: 800 610 }, 611 hide: { 612 effect: "blind", 613 duration: 300 614 }, 615 616 buttons: { 617 "Delete selected items": function() { 618 // call delete 619 popDeleteConfirmed(); 620 $( this ).dialog( "close" ); 621 }, 622 Cancel: function() { 623 $( this ).dialog( "close" ); 624 } 625 } 626 }); 627 info_delete_dialog.parent().css("z-index",999); 628 629 630 var info_edit_dialog = $('#edit-info-popup').dialog({ 631 resizable: true, 632 autoOpen: false, 633 width: 800, 634 height:600, 635 modal: true, 636 637 show: { 638 effect: "blind", 639 duration: 800 640 }, 641 hide: { 642 effect: "blind", 643 duration: 300 644 }, 645 646 buttons: { 647 "Save": function() { 648 // call delete 649 popSave(); 650 $( this ).dialog( "close" ); 651 }, 652 Cancel: function() { 653 $( this ).dialog( "close" ); 654 } 655 } 656 }); 657 info_edit_dialog.parent().css("z-index",999); 658 659 infoEditor = ace.edit("infoEditor"); 660 infoEditor.getSession().setMode("ace/mode/text"); 661 infoEditor.getSession().setUseSoftTabs(false); 662 var InfoUndoManager = require("ace/undomanager").UndoManager; 663 infoEditor.getSession().setUndoManager(new UndoManager()); 664 665 666 667 488 668 489 669 }); -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/qtip-popups.js
r29891 r30093 6 6 var overlay= document.getElementById('overlay'); 7 7 var video= document.getElementById('video'); 8 8 9 9 video.addEventListener('timeupdate', function() { 10 10 11 //var trivia_layer_on = $('input[name=PopupTrivia]:checked', '#popForm').val() || ""; 12 var trivia_layer_on = $('input[name=PopupTrivia]:checked', '#popList').val() || ""; 13 //var trivia_layer_on = $('input:checked', '#popForm').val() || ""; 14 15 console.log("*** trivia_layer_on = " + trivia_layer_on); 11 16 12 var trivia_layer_on = $('input[name=PopupTrivia]:checked', '#bubForm').val() || ""; 13 if (trivia_layer_on != "PopupTrivia") { 17 if (trivia_layer_on != "Popup Trivia") { 14 18 return; 15 19 } 20 16 21 // Only get to here if asked for the popup trivia layer 17 22 //console.log("***#### trivia layer on = " + trivia_layer_on); 23 24 //var popActiveLayersID = getActiveOverlayLayers("name"); 25 26 27 vidTimeStamp = video.currentTime; 18 28 19 vidTimeStamp = video.currentTime; 20 var textTrack = document.getElementById('bubbles').track; 29 //for (var i=0; i<popActiveLayersID.length; i++) { 30 //var track_name = popActiveLayersID[i]; 31 32 var textTrack = document.getElementById('bubbles').track; 21 33 22 // for each cue 23 if (cueIdxOn>-1) { 24 // there is a cue presently on 25 // check if need to turn off cue 26 if (textTrack.cues[cueIdxOn].endTime<vidTimeStamp) { 27 // turn off 28 hideBubble(); 29 console.log("turn off cue:"+cueIdxOn); 30 cueIdxOn = -1; 31 } 32 } 33 34 if (cueIdxOn==-1) { 35 36 for (var cueIdx = 0; cueIdx < textTrack.cues.length; cueIdx++) { 37 38 if (vidTimeStamp>=textTrack.cues[cueIdx].startTime && vidTimeStamp<textTrack.cues[cueIdx].endTime) { 39 console.log("show cue:"+cueIdx); 40 // turn on 41 showBubble(cueIdx); 42 cueIdxOn = cueIdx; 34 // for each cue 35 if (cueIdxOn>-1) { 36 // there is a cue presently on 37 // check if need to turn off cue 38 if (textTrack.cues[cueIdxOn].endTime<vidTimeStamp) { 39 // turn off 40 hideBubble(); 41 console.log("turn off cue:"+cueIdxOn); 42 cueIdxOn = -1; 43 43 } 44 44 } 45 } 46 45 46 if (cueIdxOn==-1) { 47 48 for (var cueIdx = 0; cueIdx < textTrack.cues.length; cueIdx++) { 49 50 if (vidTimeStamp>=textTrack.cues[cueIdx].startTime && vidTimeStamp<textTrack.cues[cueIdx].endTime) { 51 console.log("show cue:"+cueIdx); 52 // turn on 53 showBubble(cueIdx); 54 cueIdxOn = cueIdx; 55 } 56 } 57 } 58 //} 47 59 48 60 }, false); -
main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/respool-midi.js
r29877 r30093 150 150 var GM_num_to_instrument_array = null; 151 151 152 //MIDI.programChange(0, MIDI.GeneralMIDI.byName["instrument_name"].number); 153 //MIDI.programChange(0, MIDI.GM.byName["instrument_name"].number); 154 152 155 //var instrument_name = "lead 1 (square)"; 153 156 //var instrument_name = "lead 2 (sawtooth)"; 154 //var instrument_name = "acoustic grand piano";157 var instrument_name = "acoustic grand piano"; 155 158 //var instrument_name = "distortion guitar"; 156 var instrument_name = "overdriven guitar"; 159 //var instrument_name = "overdriven guitar"; 160 161 ////var instrument_names = ["acoustic grand piano" , "distortion guitar" ]; 162 var instrument_names = ["acoustic_grand_piano" , "church_organ", "acoustic_guitar_nylon", "overdriven_guitar" ]; 163 164 165 var guitar_midi_inst_num = 3; 157 166 158 167 window.onload = function () { 159 168 160 169 MIDI.loadPlugin({ 161 //soundfontUrl: "./soundfont/",162 //soundfontUrl: "./FluidR3_GM/",170 //soundfontUrl: gs.variables.httpCollection + "/soundfont/", 171 //soundfontUrl: gs.variables.httpCollection + "/FluidR3_GM/", 163 172 soundfontUrl: gs.variables.httpCollection + "/soundfont-fluidr3-gm/", 164 173 165 174 //instrument: "acoustic_grand_piano", 166 175 //instrument: "lead_1_square", 167 instrument: instrument_name.replace(/ /g,"_").replace(/[()]/g,""), 176 //instrument: instrument_name.replace(/ /g,"_").replace(/[()]/g,""), 177 instruments: instrument_names, 168 178 //instrument: "acoustic_bass", 169 179 //instrument: "voice_oohs", … … 189 199 } 190 200 201 /* 191 202 var channel = 0; // MIDI allows for 16 channels, 0-15 192 203 // the xylophone is represented as instrument 13 in General MIDI. 193 var instrument_num = GM_instrument_to_num_map[instrument_name]; 204 var instrument_num = MIDI.GM.byName[instrument_names[2]].number; 205 //var instrument_num = GM_instrument_to_num_map[instrument_name]; 194 206 console.log("*** instrument name: " + instrument_name + ", instrument num = " + instrument_num); 195 207 196 208 // middle C (C4) according to General MIDI 197 var note = 60;198 var velocity = 127; // how hard the note hits, from 0-127199 var delay = 1.5; // how long to hold the note, in seconds209 //var note = 60; 210 //var velocity = 127; // how hard the note hits, from 0-127 211 //var delay = 1.5; // how long to hold the note, in seconds 200 212 201 213 // play the note 202 MIDI.programChange(0, instrument_num); // Load xylophone into Channel 0 203 //MIDI.noteOn(0, note, velocity) // Play middle C on Channel 0 204 //MIDI.noteOff(0, note, delay) // Release the middle C after 0.5 seconds 214 MIDI.programChange(channel, instrument_num); 215 */ 216 217 var i; 218 for (i=0; i<instrument_names.length; i++) { 219 var instrument_num = MIDI.GM.byName[instrument_names[i]].number; 220 console.log("*** instrument name: " + instrument_names[i] + ", instrument num = " + instrument_num); 221 MIDI.programChange(i, instrument_num); // channel, inst_num 222 } 205 223 } 206 224
Note:
See TracChangeset
for help on using the changeset viewer.