Plugin Directory

Changeset 3001892


Ignore:
Timestamp:
11/26/2023 09:21:19 PM (2 years ago)
Author:
genolve
Message:
  • DALL-E 3 activated.
  • Sound effects for object animations and AI text2voice.
Location:
genolve-toolkit/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • genolve-toolkit/trunk/genolve-toolkit.php

    r2973369 r3001892  
    22/*
    33 * Plugin Name: Genolve AI image generator + Toolkit
    4  * Version: 4.0.5
     4 * Version: 4.0.6
    55 * Plugin URI: https://www.genolve.com/
    66 * Description: Stunning AI images from a prompt, AI-edit photos, plus amazing toolkit to make banners, collages, slideshows or music videos.
  • genolve-toolkit/trunk/inc/functions.php

    r2973369 r3001892  
    1212define( 'GENOLVE_MANAGE_GROUP', 'genolve-manage-group');
    1313define( 'GENOLVE_DASHBOARD_GROUP', 'genolve-dashboard-group');
    14 /* TEST 
     14/* TEST   
    1515
    1616define( 'GENOLVE_ACTION_URL',  'http://localhost/widget/');
    1717define( 'GENOLVE_JS_URL',      'http://localhost/widget/js/' );
    1818define( 'GENOLVE_VER',      '' );
    19  */
     19*/
    2020/* PRODUCTION  also change version in genolve-toolkit.php,eloop and readme.txt */
    2121define( 'GENOLVE_ACTION_URL',  'https://www.genolve.com/');     
    2222define( 'GENOLVE_JS_URL',      'https://www.genolve.com/js/' );
    23 define( 'GENOLVE_VER',         '-4.0.5' );
     23define( 'GENOLVE_VER',         '-4.0.6' );
    2424
    2525/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  • genolve-toolkit/trunk/js/genolve-scroll.js

    r2856531 r3001892  
    11GenolveScroll=function(J){function qa(d,l){O="mouse";X=window.scrollY;da=d.pageX;ma=d.pageY;Y(d,l)}function ra(d,l){O="tilt";X=window.scrollY;Z=d.gamma;Z=d.accelerationIncludingGravity?d.accelerationIncludingGravity.x:0;ea=d.beta;d.data={};d.data.value=e;Y(d,l)}function sa(d,l){O="scroll";X=window.scrollY;Y(d,l)}function ta(d,l){O="music";if(d=gnlvSound.getAna())aa=d.data.freq,latestT=d.data.time,N=d.data.size,na=d.data.metro,d.data.value=e,Y(d,l)}function Y(d,l){fa||(e=d.data.value,requestAnimationFrame(ua),
    2 ha++);fa=!0}var L=this;this.ver="2.0.0";var ba=[],z={},V={},m={},F={},P,da=0,ma=0,Z=0,ea=0,aa=0,N=0,na=0,r=0,U,K,e,O,ha=0,ia=!1,ja,G="notset",ka=!1,la=!0,W={};this.ani_start_timestamp=Date.now();this.muzlock="none";"object"!=typeof window.gnlv_start_time&&(window.gnlv_start_time={"default":L.ani_start_timestamp});null==$&&($=jQuery);if(J&&J.vpr)var a=J.vpr;var M=J&&J.usemode?J.usemode:"edit",Q=J&&J.atime?J.atime:15;null==a&&(a={name:"scroll-vpr-stub",vprint:function(d,l){vv||console.log(l)},dumpvar:function(d){return JSON.stringify(d)},
    3 d0:function(d){d=String(d).replace(/[^0-9\-\.]/g,"");return Math.round(parseFloat(d))},dd:function(d){return Math.round(100*parseFloat(d))/100},ddd:function(d){return Math.round(1E3*parseFloat(d))/1E3},d4:function(d){return Math.round(1E4*parseFloat(d))/1E4},keeptime:function(d){var l="default";d&&d.getAttribute("data-target")&&(l=d.getAttribute("data-target"));"object"!=typeof window.gnlv_start_time&&(window.gnlv_start_time={});window.gnlv_start_time[l]=Date.now()},parsejson:function(d){try{return JSON.parse(d.replace(/'/g,
    4 '"'))}catch(l){alert("JSON parse error on["+d+"]:"+l)}},getBrowser:function(){var d=!1,l=navigator.userAgent||navigator.vendor||window.opera;if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(l)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(l.substr(0,
     2ha++);fa=!0}var L=this;this.ver="2.0.0";var ba=[],z={},V={},m={},F={},P,da=0,ma=0,Z=0,ea=0,aa=0,N=0,na=0,r=0,U,K,e,O,ha=0,ia=!1,ja,G="notset",ka=!1,la=!0,W={};this.ani_start_timestamp=Date.now();this.muzlock="none";"object"!=typeof window.gnlv_start_time&&(window.gnlv_start_time={"default":L.ani_start_timestamp});null==$&&($=jQuery);if(J&&J.vpr)var a=J.vpr;var M=J&&J.usemode?J.usemode:"edit",Q=J&&J.atime?J.atime:15;null==a&&(a={name:"scroll-vpr-stub",vprint:function(d,l){vv||"scrl"!=d&&"anmt"!=d&&
     3console.log(l)},dumpvar:function(d){return JSON.stringify(d)},d0:function(d){d=String(d).replace(/[^0-9\-\.]/g,"");return Math.round(parseFloat(d))},dd:function(d){return Math.round(100*parseFloat(d))/100},ddd:function(d){return Math.round(1E3*parseFloat(d))/1E3},d4:function(d){return Math.round(1E4*parseFloat(d))/1E4},keeptime:function(d){var l="default";d&&d.getAttribute("data-target")&&(l=d.getAttribute("data-target"));"object"!=typeof window.gnlv_start_time&&(window.gnlv_start_time={});window.gnlv_start_time[l]=
     4Date.now()},parsejson:function(d){try{return JSON.parse(d.replace(/'/g,'"'))}catch(l){alert("JSON parse error on["+d+"]:"+l)}},getBrowser:function(){var d=!1,l=navigator.userAgent||navigator.vendor||window.opera;if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(l)||
     5/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(l.substr(0,
    564)))d=!0;return d},setValMode:{LOOP:"LOOP",LOOPz:"LOOPz",LOOPtoBOUND:"LOOPtoBOUND",LIMIT:"LIMIT",RANDOM:"RANDOM",MIDNORM:"MIDNORM",LOWNORM:"LOWNORM",HINORM:"HINORM"},setVal:function(d,l,b,n,k){if(isNaN(d)||!isFinite(d))return n;b=parseFloat(b);n=parseFloat(n);if(b>n){var g=n;n=b;b=g}g=n-b;g=k==this.setValMode.LOOPz?g+1:g;d=isNaN(d)?0:parseFloat(d);l=isNaN(l)?1:parseFloat(l);d+=l;if(d>n)if(k==this.setValMode.LIMIT)d=n;else if(k==this.setValMode.LOOPtoBOUND)d=b;else if(k==this.setValMode.LOOP||k==this.setValMode.LOOPz)for(;d>
    67n;)d-=g;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+k+" must be LOOP/LIMIT/RANDOM");else if(d<b)if(k==this.setValMode.LIMIT)d=b;else if(k==this.setValMode.LOOPtoBOUND)d=n;else if(k==this.setValMode.LOOP||k==this.setValMode.LOOPz)for(;d<b;)d+=g;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+k+" must be LOOP/LIMIT/RANDOM");return d}});a.vprint("scrl"," -  =  ");a.vprint("scrl"," -  =  CREATE gnlvScroll  = - usemode:"+M+" vpr:"+a.name+" eloop:"+eloop.version);"stub"==eloop.version&&
    78a.keeptime&&(eloop.keeptime=a.keeptime);"function"==typeof GNLV_3RDPARTY&&null==eloop.tpr&&(a.vprint("scrl"," -  =  CREATE 3rdparty"),eloop.tpr=new GNLV_3RDPARTY(a,{name:"vekstub"},$));var X=0,fa=!1;this.changeDiv=function(d,l){if(null==d)return e;a.vprint("scrl",vv?"":" -  =  changeDiv   "+e+" -> "+d+" muz:"+l);null==W[e]?a.vprint("scrl",vv?"":" -  =  changeDiv  XXXX lookup fail"):(e=d,null!=l&&(L.muzlock="vol_on"==l?e:"none"))};var va=function(d,l){a.vprint("scrl",vv?"":" -  =  onBeat  =  -  got event:"+
    89d.type+","+d.keyoff+" num ani:"+m[e].gnlvaniA.length);ia=!0;gnlvSound.volColor()};this.toggleMuzPlay=function(){oa("play")};this.toggleMuzPause=function(){oa("pause")};var oa=function(d){var l;a.vprint("scrl",vv?"":"- = toggleMuz("+d+") for num ani:"+m[e].gnlvaniA.length);for(l=0;l<m[e].gnlvaniA.length;l++){paramO=m[e].gnlvaniA[l];var b=paramO.myself;"pause"==d?(b.attr("repeatDur","indefinite"),b.node.setAttribute("fill","remove")):b.attr("repeatDur",1E-6)}},ua=function(d,l){a.vprint("anmt",vv?"":
    9 "- - - - - - - - - - - - - aniOnScrollWrap event:"+O);for(K in W)if(0===String(z[K]).indexOf(O))if("none"!=L.muzlock&&L.muzlock!=K)a.vprint("anmt",vv?"":"- - - - - - - - - - - - - aniOnScrollWrap skip:"+K+" "+O+" for muzlock:"+L.muzlock);else{e=K;a.vprint("anmt",vv?"":"- - - - - - - - - - - - - aniOnScrollWrap on:"+K+" "+O);var b=void 0,n=void 0,k=void 0,g=void 0,t=void 0,C=void 0,H=void 0,E=void 0,D=void 0,x=void 0,A=void 0;var f=[];var R=[],q=[],c={},w=$.extend({},m[e].numAbyTarget),y={},B={};var h=
    10 0;null==F[e]&&(F[e]={lastime:(new Date).getTime(),tiltG:0,tiltB:0,gpa:.5,num_group_mode:0});var u=X;if(null==z[e]||"scroll"==z[e]||"scroll_standard"==z[e]||"scroll_near_top"==z[e]){var v=$("#"+e.replace(/_svg$/,""));1>v.length&&a.vprint("warn",vv?"":"aniOnScroll did not find  div:"+e.replace(/_svg$/,""));E=parseInt(v.offset().top);H=parseInt(v.height());C=parseInt($(window).height());t=parseInt($(window).width());g=E-u;k=C-g}var p=(new Date).getTime();v=p-F[e].lastime;F[e].lastime=p;if(null==z[e]||
    11 "scroll"==z[e])E<.5*C?(z[e]="scroll_near_top",h=0,V[e]=H>C?.1:.6):(z[e]="scroll_standard",h=.2*H,V[e]=H>C?.6:1);if("scroll_standard"==z[e])x=a.d4(Math.min(1,(k-h)/C*V[e]));else if("scroll_near_top"==z[e])x=a.d4(Math.min(1,u/(g+H*V[e])));else if("mouse"==z[e])x=a.d4((k-h)/C),1.5>x&&0<x&&(x=a.d4(Math.min(1,da/t)));else if("tilt"==z[e])x=a.d4((k-h)/C),1.5>x&&0<x&&(window.matchMedia("only screen and (orientation:portrait)").matches?F[e].gpa=a.setVal(F[e].gpa,Z*Math.PI/180,0,1,a.setValMode.LIMIT):F[e].gpa=
    12 a.setVal(F[e].gpa,ea*Math.PI/180,0,1,a.setValMode.LIMIT),x=F[e].gpa);else if("music"==z[e]){var S=t=p=x=0,I=0,T=!1,pa=0,wa=Math.max(15,F[e].num_group_mode);A=na;for(h=0;h<N;h++)255>aa[h]&&!T&&(T=!0,n=h),h>wa+n&&15>aa[h]&&pa++,f[h]=a.setVal(aa[h]/255,0,0,1,a.setValMode.LIMIT),R[h]=a.setVal(latestT[h]/255,0,0,1,a.setValMode.LIMIT),T&&3>pa&&q.push(f[h]),I=Math.max(I,f[h]),x+=f[h],h<N/3?S+=f[h]:h<N/3+N/3?t+=f[h]:p+=f[h];c.ave=x/=N;c.max=I;c.bass=S/(N/3);c.mid=t/(N/3);c.treb=p/(N/3);c["group mode"]=f}a.vprint("scrl",
     10"- - - - - - - - - - - - - aniOnScrollWrap event:"+O);for(K in W)if(0===String(z[K]).indexOf(O))if("none"!=L.muzlock&&L.muzlock!=K)a.vprint("anmt",vv?"":"- - - - - - - - - - - - - aniOnScrollWrap skip:"+K+" "+O+" for muzlock:"+L.muzlock);else{e=K;a.vprint("anmt",vv?"":"- - - - - - - - - - - - - aniOnScrollWrap on:"+K+" "+O);var b=void 0,n=void 0,k=void 0,g=void 0,t=void 0,D=void 0,H=void 0,E=void 0,A=void 0,x=void 0,B=void 0;var f=[];var R=[],q=[],c={},w=$.extend({},m[e].numAbyTarget),y={},C={};var h=
     110;null==F[e]&&(F[e]={lastime:(new Date).getTime(),tiltG:0,tiltB:0,gpa:.5,num_group_mode:0});var u=X;if(null==z[e]||"scroll"==z[e]||"scroll_standard"==z[e]||"scroll_near_top"==z[e]){var v=$("#"+e.replace(/_svg$/,""));1>v.length&&a.vprint("warn",vv?"":"aniOnScroll did not find  div:"+e.replace(/_svg$/,""));E=parseInt(v.offset().top);H=parseInt(v.height());D=parseInt($(window).height());t=parseInt($(window).width());g=E-u;k=D-g}var p=(new Date).getTime();v=p-F[e].lastime;F[e].lastime=p;if(null==z[e]||
     12"scroll"==z[e])E<.5*D?(z[e]="scroll_near_top",h=0,V[e]=H>D?.1:.6):(z[e]="scroll_standard",h=.2*H,V[e]=H>D?.6:1);if("scroll_standard"==z[e])x=a.d4(Math.min(1,(k-h)/D*V[e]));else if("scroll_near_top"==z[e])x=a.d4(Math.min(1,u/(g+H*V[e])));else if("mouse"==z[e])x=a.d4((k-h)/D),1.5>x&&0<x&&(x=a.d4(Math.min(1,da/t)));else if("tilt"==z[e])x=a.d4((k-h)/D),1.5>x&&0<x&&(window.matchMedia("only screen and (orientation:portrait)").matches?F[e].gpa=a.setVal(F[e].gpa,Z*Math.PI/180,0,1,a.setValMode.LIMIT):F[e].gpa=
     13a.setVal(F[e].gpa,ea*Math.PI/180,0,1,a.setValMode.LIMIT),x=F[e].gpa);else if("music"==z[e]){var S=t=p=x=0,I=0,T=!1,pa=0,wa=Math.max(15,F[e].num_group_mode);B=na;for(h=0;h<N;h++)255>aa[h]&&!T&&(T=!0,n=h),h>wa+n&&15>aa[h]&&pa++,f[h]=a.setVal(aa[h]/255,0,0,1,a.setValMode.LIMIT),R[h]=a.setVal(latestT[h]/255,0,0,1,a.setValMode.LIMIT),T&&3>pa&&q.push(f[h]),I=Math.max(I,f[h]),x+=f[h],h<N/3?S+=f[h]:h<N/3+N/3?t+=f[h]:p+=f[h];c.ave=x/=N;c.max=I;c.bass=S/(N/3);c.mid=t/(N/3);c.treb=p/(N/3);c["group mode"]=f}a.vprint("scrl",
    1314vv?"":"aniOnScroll - - - - ");a.vprint("scrl",vv?"":"aniOnScroll - - - - START[ divid "+e+" ] event:"+O+" calc: "+z[e]+" talldiv:"+V[e]+" found svgA?"+typeof svgA+" svgH.id:"+typeof W[e]);if("undefined"!=typeof gnlvSound&&gnlvSound.muted&&"music"==z[e])a.vprint("scrl",vv?"":"aniOnScroll MUTE abort");else{cur_t=eloop.anielapsed?eloop.anielapsed():L.anielapsed();for(b in m[e].slot)isVis=!0,h=m[e].slot[b],h.transO&&h.transO.slide&&h.transO.slide.startDelay&&h.transO.slide.duration&&("none"!=h.transO.slide.animateIn||
    141510==h.transO.slide.addFade)?(a.vprint("scrl",vv?"":"aniOnScroll slot["+b+"]transO?"+h.transO),start_t=h.transO.slide.startDelay,gofor="none"!=h.transO.slide.animateOut?h.transO.slide.animateOutPause+2*h.transO.slide.duration:Q-start_t,m[e].slot[b].isVis=cur_t>start_t&&cur_t<start_t+gofor?!0:!1,a.vprint("scrl",vv?"":"aniOnScroll slot["+b+"]vis?"+m[e].slot[b].isVis)):a.vprint("scrl",vv?"":"aniOnScroll["+e+"] slot["+b+"] no trasO or not faded");a.vprint("scrl",vv?"":"aniOnScroll - - - - START[ divid "+
    15 e+" , "+z[e]+"] dt:"+v+" - - - divscroll:"+E+" h:"+H+" winscroll:"+u+" h:"+C+" x:"+da+" y:"+ma+" g:"+Z+" b:"+ea+"->"+g+" inverse:"+k+" %:"+x+" num ani:"+m[e].gnlvaniA.length);if(1>x&&0<x)for(h=E=0;h<m[e].gnlvaniA.length;h++){b=m[e].gnlvaniA[h];u=b.valsA.length;n=1;v=x;G="notsound";if("music"==z[e]&&b.music&&b.music.enable){if(b.music.keyoff&&c[b.music.keyoff]&&(v=c[b.music.keyoff],b.slot&&m[e].slot[b.slot]&&!1===m[e].slot[b.slot].isVis)){a.vprint("scrl",vv?"":"aniOnScroll skip ani:"+h);continue}G=
    16 b.music.drivemode;1<b.music.beatMultiple?g=a.setVal(A*b.music.beatMultiple,0,0,1,a.setValMode.LOOP):-1>=b.music.beatMultiple?(g=A/Math.abs(b.music.beatMultiple),ia&&(b.gpb+=b.mpAlongPrev),g=b.gpb+g,1<g&&(g=b.gpb=0)):g=A;g<b.mpAlongPrev?(b.mpPulse=.002*9,a.vprint("scrl",vv?"":"aniOnScroll                     *  Pulse  *")):b.mpPulse*=.6;b.mpAlongPrev=g;k=v>b.threshold?1:0;b.threshold=v>b.threshold?b.threshold+.005:b.threshold-.005;D=1*Math.cos(g*Math.PI*2)+1.2;"freqbar"==G?g=v:"waveform"==G?g=R[0]:
     16e+" , "+z[e]+"] dt:"+v+" - - - divscroll:"+E+" h:"+H+" winscroll:"+u+" h:"+D+" x:"+da+" y:"+ma+" g:"+Z+" b:"+ea+"->"+g+" inverse:"+k+" %:"+x+" num ani:"+m[e].gnlvaniA.length);if(1>x&&0<x)for(h=E=0;h<m[e].gnlvaniA.length;h++){b=m[e].gnlvaniA[h];u=b.valsA.length;n=1;v=x;G="notsound";if("music"==z[e]&&b.music&&b.music.enable){if(b.music.keyoff&&c[b.music.keyoff]&&(v=c[b.music.keyoff],b.slot&&m[e].slot[b.slot]&&!1===m[e].slot[b.slot].isVis)){a.vprint("scrl",vv?"":"aniOnScroll skip ani:"+h);continue}G=
     17b.music.drivemode;1<b.music.beatMultiple?g=a.setVal(B*b.music.beatMultiple,0,0,1,a.setValMode.LOOP):-1>=b.music.beatMultiple?(g=B/Math.abs(b.music.beatMultiple),ia&&(b.gpb+=b.mpAlongPrev),g=b.gpb+g,1<g&&(g=b.gpb=0)):g=B;g<b.mpAlongPrev?(b.mpPulse=.002*9,a.vprint("scrl",vv?"":"aniOnScroll                     *  Pulse  *")):b.mpPulse*=.6;b.mpAlongPrev=g;k=v>b.threshold?1:0;b.threshold=v>b.threshold?b.threshold+.005:b.threshold-.005;A=1*Math.cos(g*Math.PI*2)+1.2;"freqbar"==G?g=v:"waveform"==G?g=R[0]:
    1718"beat"!=G&&("beat with flow"==G?g=a.setVal(b.gpa,b.mpPulse+.002,0,1,a.setValMode.LOOP):"beat against flow"==G?g=a.setVal(b.gpa,b.mpPulse+-.002,0,1,a.setValMode.LOOP):"freqbar with easeback"==G?g=a.setVal(Math.max(v,b.gpa),-.002,0,1,a.setValMode.LIMIT):"advance jumpy"==G?g=a.setVal(b.gpa,.002*k,0,1,a.setValMode.LOOP):"advance"==G?g=a.setVal(b.gpa,.002*v,0,1,a.setValMode.LOOP):"advance with easeback"==G&&(g=a.setVal(b.gpa,.006*k-.002,0,1,a.setValMode.LOOP)));if("group mode"==b.music.keyoff){k="freqbar"==
    18 G?q.length:N;C=F[e].num_group_mode<k?Math.round(k/F[e].num_group_mode):1;H=a.setVal(E*C,0,0,k,a.setValMode.LOOP);if("freqbar"==G)g=q[H];else if("waveform"==G)g=R[H];else{if(0==E){ba=[];for(v=F[e].num_group_mode-1;0<v;v--)m[e].gnlvaniA[h+v].twa=m[e].gnlvaniA[h+v-1].twa,ba[h+v]=m[e].gnlvaniA[h+v].twa;m[e].gnlvaniA[h].twa=a.d4(c.mid);m[e].gnlvaniA[h].twa=R[3];ba[h]=m[e].gnlvaniA[h].twa;a.vprint("scrl",vv?"":"aniOnScrol set    T T T at ii="+h+" beat/pulse val:"+m[e].gnlvaniA[h].twa+"   TWA "+a.dumpvar(ba))}g=
    19 m[e].gnlvaniA[h].twa}v=g;a.vprint("scrl",vv?"":"aniOnScroll div:"+e+" GROUPMODE[ "+E+" of "+F[e].num_group_mode+" ] * binstep:"+C+" of max:"+k+"->dex"+H+" extracted gpA of:"+g);E++}a.vprint("scrl",vv?"":"aniOnScroll div:"+e+" MUSIC keyoff["+b.music.keyoff+"] % "+v+"  drivemode["+G+"] durm?"+b.durm+" beatM:"+b.music.beatMultiple+" %> "+g);v=b.gpa=g}for(v=a.setVal(v*b.durm,0,0,1,a.setValMode.LOOP);b.timsA[n]<v&&n<u;)n++;g=b.timsA[n]-b.timsA[n-1];k=v-b.timsA[n-1];H=a.d4(k/g);k=b.type;C=b.valsA[n-1];
    20 g=b.valsA[n];p=C;t=g;S=H;I=[];if("number"==typeof p)p+=(t-p)*S;else if("object"==typeof p){p.length!=t.length&&a.vprint("scrl",vv?"":"X X X X X X X interpolate beg end LENGTH mismatch:"+p.join("|")+":"+t.join("|"));for(f=0;f<p.length;f++)"number"==typeof p[f]?I.push(p[f]+(t[f]-p[f])*S):(p[f]!=t[f]&&a.vprint("scrl",vv?"":"X X X X X X X interpolate beg end mismatch:"+p[f]+":"+t[f]),I.push(p[f]));p=I.join(",")}else a.vprint("warn","interpolate bad type:"+typeof p),p=void 0;f=b.mytargetid;a.vprint("scrl",
    21 vv?"":"aniOnScroll["+h+"] [type: "+k+"  ][drive: "+G+" ] numvals:"+u+" aBYtran["+f+"]:"+(w[f]-1)+" "+m[e].gnlvaniA[h].attributeName+" gpAlongS:"+x+" gpAlong:"+v+" lpAlong:"+H+" times:"+b.timsA+" vals:"+b.valsA+" dex:"+n+",beg,end:"+C+"|"+g+" now:"+p);if(null!=b.keyPoints)point=Snap.path.getPointAtLength(b.pathd,p*b.zlen),"auto"!=b.rotate&&"auto-reverse"!=b.rotate||null==b.prevpoint?b.prevpoint=point:(theta=Math.atan2(point.y-b.prevpoint.y,point.x-b.prevpoint.x),B[f]=180*theta/Math.PI,"auto-reverse"==
    22 b.rotate&&(B[f]+=180)),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] for keyPoint:"+p+" got:"+point.x+","+point.y+" add2rotate:"+B[f]),p=point.x+","+point.y;else if(null!=B[f]&&"rotate"==k)a.vprint("scrl",vv?"":"aniOnScroll["+h+"] combine rotate:"+p+" and autorotate:"+B[f]),p+=B[f];else if("d"==b.attributeName)p=p.replace(/,?([a-zA-Z]),?/g," $1 "),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] - - - -  CLEANED   - - - -   up d valstr:"+p);else if(!b.attributeName.match(/(stroke-|fill-)/))if(b.attributeName.match(/(stop-color|fill|stroke|flood-color)/)){valstrA=
     19G?q.length:N;D=F[e].num_group_mode<k?Math.round(k/F[e].num_group_mode):1;H=a.setVal(E*D,0,0,k,a.setValMode.LOOP);if("freqbar"==G)g=q[H];else if("waveform"==G)g=R[H];else{if(0==E){ba=[];for(v=F[e].num_group_mode-1;0<v;v--)m[e].gnlvaniA[h+v].twa=m[e].gnlvaniA[h+v-1].twa,ba[h+v]=m[e].gnlvaniA[h+v].twa;m[e].gnlvaniA[h].twa=a.d4(c.mid);m[e].gnlvaniA[h].twa=R[3];ba[h]=m[e].gnlvaniA[h].twa;a.vprint("scrl",vv?"":"aniOnScrol set    T T T at ii="+h+" beat/pulse val:"+m[e].gnlvaniA[h].twa+"   TWA "+a.dumpvar(ba))}g=
     20m[e].gnlvaniA[h].twa}v=g;a.vprint("scrl",vv?"":"aniOnScroll div:"+e+" GROUPMODE[ "+E+" of "+F[e].num_group_mode+" ] * binstep:"+D+" of max:"+k+"->dex"+H+" extracted gpA of:"+g);E++}a.vprint("scrl",vv?"":"aniOnScroll div:"+e+" MUSIC keyoff["+b.music.keyoff+"] % "+v+"  drivemode["+G+"] durm?"+b.durm+" beatM:"+b.music.beatMultiple+" %> "+g);v=b.gpa=g}for(v=a.setVal(v*b.durm,0,0,1,a.setValMode.LOOP);b.timsA[n]<v&&n<u;)n++;g=b.timsA[n]-b.timsA[n-1];k=v-b.timsA[n-1];H=a.d4(k/g);k=b.type;D=b.valsA[n-1];
     21g=b.valsA[n];p=D;t=g;S=H;I=[];if("number"==typeof p)p+=(t-p)*S;else if("object"==typeof p){p.length!=t.length&&a.vprint("scrl",vv?"":"X X X X X X X interpolate beg end LENGTH mismatch:"+p.join("|")+":"+t.join("|"));for(f=0;f<p.length;f++)"number"==typeof p[f]?I.push(p[f]+(t[f]-p[f])*S):(p[f]!=t[f]&&a.vprint("scrl",vv?"":"X X X X X X X interpolate beg end mismatch:"+p[f]+":"+t[f]),I.push(p[f]));p=I.join(",")}else a.vprint("warn","interpolate bad type:"+typeof p),p=void 0;f=b.mytargetid;a.vprint("scrl",
     22vv?"":"aniOnScroll["+h+"] [type: "+k+"  ][drive: "+G+" ] numvals:"+u+" aBYtran["+f+"]:"+(w[f]-1)+" "+m[e].gnlvaniA[h].attributeName+" gpAlongS:"+x+" gpAlong:"+v+" lpAlong:"+H+" times:"+b.timsA+" vals:"+b.valsA+" dex:"+n+",beg,end:"+D+"|"+g+" now:"+p);if(null!=b.keyPoints)point=Snap.path.getPointAtLength(b.pathd,p*b.zlen),"auto"!=b.rotate&&"auto-reverse"!=b.rotate||null==b.prevpoint?b.prevpoint=point:(theta=Math.atan2(point.y-b.prevpoint.y,point.x-b.prevpoint.x),C[f]=180*theta/Math.PI,"auto-reverse"==
     23b.rotate&&(C[f]+=180)),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] for keyPoint:"+p+" got:"+point.x+","+point.y+" add2rotate:"+C[f]),p=point.x+","+point.y;else if(null!=C[f]&&"rotate"==k)a.vprint("scrl",vv?"":"aniOnScroll["+h+"] combine rotate:"+p+" and autorotate:"+C[f]),p+=C[f];else if("d"==b.attributeName)p=p.replace(/,?([a-zA-Z]),?/g," $1 "),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] - - - -  CLEANED   - - - -   up d valstr:"+p);else if(!b.attributeName.match(/(stroke-|fill-)/))if(b.attributeName.match(/(stop-color|fill|stroke|flood-color)/)){valstrA=
    2324p.split(/,/);for(hh=0;3>hh;hh++)u=Number(a.setVal(Math.round(valstrA[hh]),0,0,255,a.setValMode.LIMIT)).toString(16),valstrA[hh]=2==u.length?u:"0"+u;p="#"+valstrA.join("");a.vprint("scrl",vv?"":"aniOnScroll["+h+"] cleaned up color valstr:"+p)}else"string"==typeof p&&(p=p.replace(/,([%])/g,"$1"));if("transform"==b.attributeName)if(w[f]--,ja.transform(k+"("+p+")"),u=ja.transform().localMatrix,null==y[f]&&(y[f]=[]),0==w[f]){y[f].push(u);"sum"==b.additive&&y[f].push(b.lmatrix.clone());a.vprint("scrl",
    2425vv?"":"aniOnScroll["+h+"] - APPLY - matrix["+f+"]: num"+y[f].length+" slot:"+b.slot+" kind:"+b.kind+" type:"+b.type);if("path"!=b.kind)if("slide"==b.kind)"scale"==b.type||"rotate"==b.type&&3>y[f].length||"rotate"==b.type&&3>=y[f].length&&b.slot.match(/^image/)?y[f]=y[f].reverse():2<y[f].length&&(first1=y[f].shift(),y[f]=y[f].reverse(),y[f].unshift(first1));else if("patternTransform"==b.realattributeName||"intrinsic"==b.kind&&"rotate"==b.type)y[f]=y[f].reverse();u=new Snap.Matrix;for(n=0;n<y[f].length;n++)u.add(y[f][n]);
    25 b.mytarget.transform(u)}else y[f].push(u);else"currentTime"==b.attributeName?0==ha%5&&(a.vprint("scrl",vv?"":"aniOnScroll["+h+"]["+ha+"]   V I D E O   [  "+m[e].gnlvaniA[h].attributeName+"  ]-> "+p+" cpAlong:"+D),la?b.mytarget.node.fastSeek?b.mytarget.node.fastSeek(p):(la=!1,b.mytarget.node.play()):b.mytarget.node.playbackRate=D):"gradientTransform"==b.attributeName?(u=m[e].gnlvaniA[h].type+"("+p+")",b.mytarget.attr(u),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] [  "+m[e].gnlvaniA[h].attributeName+
     26b.mytarget.transform(u)}else y[f].push(u);else"currentTime"==b.attributeName?0==ha%5&&(a.vprint("scrl",vv?"":"aniOnScroll["+h+"]["+ha+"]   V I D E O   [  "+m[e].gnlvaniA[h].attributeName+"  ]-> "+p+" cpAlong:"+A),la?b.mytarget.node.fastSeek?b.mytarget.node.fastSeek(p):(la=!1,b.mytarget.node.play()):b.mytarget.node.playbackRate=A):"gradientTransform"==b.attributeName?(u=m[e].gnlvaniA[h].type+"("+p+")",b.mytarget.attr(u),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] [  "+m[e].gnlvaniA[h].attributeName+
    2627" type:"+m[e].gnlvaniA[h].type+" ]-> "+u)):(b.mytarget.attr(b.attributeName,p),a.vprint("scrl",vv?"":"aniOnScroll["+h+"] [  "+m[e].gnlvaniA[h].attributeName+"  ]-> "+p));"patternTransform"==b.realattributeName&&(a.vprint("scrl",vv?"":"aniOnScroll["+h+"] patternTransform updated id:"+b.realtarget.attr("id")+" with val:"+p),b.realtarget.transform(b.mytarget.transform().localMatrix))}ia=!1}}fa=!1};this.anielapsed=function(d){var l="default";"undefined"!=typeof gnlvScroll&&(l=gnlvScroll.changeDiv());
    27 var b=window.gnlv_start_time&&null!=window.gnlv_start_time[l]?window.gnlv_start_time[l]:L.ani_start_timestamp,n=(Date.now()-b)/1E3;if("absolute"==d)return n;d=a.setVal(n,0,0,Q,a.setValMode.LOOP);a.vprint("scrl",vv?"":"anielapsed["+l+"] atime:"+Q+" starttimestamp:"+b+" delta:"+n+" return:"+d);return d};this.resetTransforms=function(d){var l=0;null!=d&&L.changeDiv(d);a.vprint("scrl",vv?"":"resetTransforms start on["+e+"] "+(null!=m[e]));for(d=0;d<m[e].gnlvaniA.length;d++){var b=m[e].gnlvaniA[d];a.vprint("scrl",
    28 vv?"":"resetTransforms ["+d+"] id:"+b.id+" type:"+b.type+" have orig tran?"+b.origtransform+" target?"+(null!=b.mytarget));b.origtransform&&b.mytarget&&(l++,b.mytarget.transform(b.origtransform))}a.vprint("scrl",vv?"":"resetTransforms checking reset "+l+" of "+m[e].gnlvaniA.length)};var ca=function(d,l){for(var b,n,k,g=d.split(l),t=0;t<g.length;t++)b=g[t].match(/(,\s*|\s+)/),n=g[t].match(/[a-zA-Z%]/),k=g[t].match(/#/),b?g[t]=ca(g[t],b[0]):k?(diskula=g[t].replace(/#/,""),g[t]=[parseInt(diskula.substr(0,
    29 2),16),parseInt(diskula.substr(2,2),16),parseInt(diskula.substr(4,2),16)]):n||(g[t]=a.d4(g[t]));return g},xa=function(d){a.vprint("scrl",vv?"":"parseSplines starting on:"+a.dumpvar(d));d.valsA=ca(d.values,/\s*;\s*/);var l=d.valsA.length;if(null!=d.keyTimes)var b=ca(d.keyTimes,/\s*;\s*/);else{var n=[0];for(b=1;b<l;b++)n[b]=Math.min(1,n[b-1]+1/(l-1));b=n}d.timsA=b;if(null!=d.keySplines)l=ca(d.keySplines,/\s*;\s*/);else{n=[];var k=[0,0,1,1];for(b=1;b<l;b++)n.push(k);l=n}d.splsA=l;return d};this.doSetup=
    30 function(d){var l="FROMDIV .gnlv-scroll, FROMDIV .gnlv-mouse, FROMDIV .gnlv-music",b="id attributeName values type dur xlink:href calcMode repeatDur keyTimes keySplines keyPoints rotate additive".split(" "),n={};null==d&&(d={},z={},V={},m={},F={});M=d.usemode?d.usemode:M;l=null==d.fromdiv?l.replace(/FROMDIV/g,""):l.replace(/FROMDIV/g,"#"+d.fromdiv);var k=Snap.selectAll(l);var g;a.vprint("scrl",vv?"":"scrollSetup - - - -doSetup - - - - START usemode:"+M+" - - -fromdiv?"+d.fromdiv+" on num:"+k.length);
    31 for(r=0;r<k.length;r++){var t={};l=!1;var C,H;if("edit"==M)mydivid="default";else if(mydivid=k[r].attr("id"),null==mydivid||null!=W[mydivid])mydivid=null==d.fromdiv?"svg"+r:d.fromdiv+"_svg",a.vprint("scrl",vv?"":"scrollSetup - - - -id missing or not unique, newid >   "+mydivid+" <"),k[r].attr("id",mydivid);m[mydivid]={};m[mydivid].slot={};m[mydivid].gnlvaniA=[];m[mydivid].numAbyTarget={};k[r].started=!1;k[r].hasClass("gnlv-scroll")?P="scroll":k[r].hasClass("gnlv-mouse")?P="mouse":k[r].hasClass("gnlv-music")&&
    32 (P="music");a.vprint("scrl",vv?"":"scrollSetup - - - -doSetup - - - - START svgA["+r+"] divid[ "+mydivid+" ] ,anitype:"+P);null==F[mydivid]&&(F[mydivid]={lastime:(new Date).getTime(),tiltG:0,tiltB:0,gpa:.5});F[mydivid].num_group_mode=0;var E=k[r].select(".gnlv-slot-template");if(E&&E.attr){var D=E.attr("gnlv-data");a.vprint("scrl",vv?"":"TEMPLATE DATA:"+D);D=a.parsejson(D);D.music&&D.music.mp3?k[r].tlmusic=D.music.mp3:a.vprint("warn","scrollSetup found no mp3!");Q!=D.atime&&(a.vprint("warn","scrollSetup found atime missmatch!"+
    33 Q+"< going with:>"+D.atime+" if defined"),Q=D.atime?D.atime:Q)}var x=!1;k[r].hasClass("gnlv-music")&&(x=!0,"undefined"==typeof eloop&&(eloop={}),eloop.templatediv=k[r].parent().attr("id"),eloop.templatediv||(eloop.templatediv="tempid"+Math.floor(1E4*Math.random()),a.vprint("scrl",vv?"":"scrollSetup no id on templatediv, setting now"),k[r].parent().attr("id",eloop.templatediv)),a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MUSIC | | | | | | | | |divid: "+mydivid+" templatediv:"+eloop.templatediv+
    34 " tlmusic:"+k[r].tlmusic),"undefined"==typeof gnlvSound&&"undefined"!=typeof GenolveSound?(a.vprint("scrl",vv?"":"scrollSetup X X X NO snd gnlvSound but had CLAS, instantiate now"),gnlvSound=new GenolveSound({vpr:a}),document.gnlvSound=gnlvSound,volControl=document.gnlvSound.addVol(E)):J&&J.volel&&(a.vprint("scrl",vv?"":"scrollSetup registro vol:"+J.volel),volControl=gnlvSound.registerVol(J.volel)),z[mydivid]="music",eloop.autoResize=eloop.autoResizeSnd?eloop.autoResizeSnd:function(){console.log("gnlvScroll X  X  X  non eloop autoResizeSnd ")},
    35 eloop.autoResize());a.vprint("scrl",vv?"":"scrollSetup START with num SVG["+r+"] tag >"+mydivid+"< of "+k.length+" -------------------------------------------------vv--------------------");var A=k[r].selectAll("g[id=hiddenslotsubnode]");1>A.length?a.vprint("warn","scrollSetup  did not find hiddenslotsubnode for:"+mydivid):ja=A[0];k[r].selectAll(".gnlv-slot-eloop").forEach(function(p,S){var I=p.attr("id");D=p.attr("gnlv-data");if(I.match(/.*hidden.*/)||null==D)a.vprint("scrl",vv?"":"scrollSetup skip datagnlv for slot["+
    36 I+"] ");else{a.vprint("scrl",vv?"":"SLOT [ "+I+" ]  DATA:"+D);q=a.parsejson(D);if(null!=q.usetagID)for(K in q.usetagID){var T=q.usetagID[K];t[T]=I;T.match(/\d$/)&&(t[T.replace(/\d+$/,"N")]=I);("imgcorner"==K||"imgmask"==K)&&(C=k[r].select("#"+T))&&C.parent()&&C.parent().parent()&&(H="imgcorner"==K?C.parent().parent().attr("id"):C.parent().attr("id"),a.vprint("scrl",vv?"":"["+K+"] tagged:"+H),t[H]=I)}null==m[mydivid].slot[I]?m[mydivid].slot[I]=q:a.vprint("warn","scrollSetup slot["+I+"] not empty! mydata already logged??????")}});
    37 var f=k[r].select("#theoverlayVid");"undefined"!=typeof eloop&&eloop.rmVidTimer?eloop.rmVidTimer(E):f&&f.remove();E=k[r].selectAll("animate,animateTransform,animateMotion");a.vprint("scrl",vv?"":"scrollSetup START looping animations["+mydivid+"]  -- - - -- "+E.length);for(var R in m[mydivid].slot){var q=m[mydivid].slot[R];if(q.transO&&q.transO.music&&q.transO.music.enable&&"video"==q.transO.music.whichani)for(videlA=k[r].selectAll("#"+R+" video"),a.vprint("scrl",vv?"":"scrollSetup    > videojog <     for slot["+
    38 R+"] numel:"+videlA.length),g=0;g<videlA.length;g++)videlA[g].attr("id","anivid"+Math.floor(1E4*Math.random())),E.push(videlA[g])}for(U=0;U<E.length;U++){f=E[U];var c={};A=f.parent();g=f.attr("id");null==g&&(g="anmttemp"+Math.floor(1E4*Math.random()),f.attr("id",g));var w=g.match(/^aniusr/)?"slide":g.match(/^anipth/)?"path":g.match(/^anmt/)?"intrinsic":g.match(/^anifal/)?"fallingeffect":g.match(/^anivid/)?"video":"unknown";a.vprint("scrl",vv?"":"scrollSetup ======== start["+U+"]["+g+"]"+w);var y=
    39 A.attr("id")?A.attr("id"):"none",B=h,h=A,u=h.attr?h.attr("id"):"nada";if("vidtimer"!=g&&"marqSOani"!=g&&"timekeeperani"!=g){for(;h.parent()&&h.parent().attr&&!h.hasClass("gnlv-slot-eloop")&&!h.hasClass("gnlv-svg");)B=h,h=h.parent(),u=h.attr("id")?h.attr("id"):"nada";if("hiddenslot"==u||h.hasClass("gnlv-svg"))a.vprint("scrl",vv?"":"scrollSetup found hidden, SKIP:"+g+":");else{if("hiddenslotdefs"==u){B=B.attr("id");if(t[B])u=t[B];else if(t[B.replace(/\d+$/,"N")])u=t[B.replace(/\d+$/,"N")];else{a.vprint("scrl",
    40 vv?"":"X SKIP X  hiddenslot lookup fail on key:"+B+" for hsd2slot hash:"+a.dumpvar(t));continue}q=m[mydivid].slot[u];a.vprint("scrl",vv?"":"scrollSetup hiddenslotdefs translate for["+B+"]->"+u)}else m[mydivid].slot[u]?q=m[mydivid].slot[u]:a.vprint("scrl",vv?"":"scrollSetup X X X X X X no slot data/mydata for "+u);B=q&&q.transO&&q.transO.music&&q.transO.music.whichani?q.transO.music.whichani:"all";var v=q&&q.transO&&q.transO.music&&q.transO.music.enable?q.transO.music.enable:!1;a.vprint("scrl",vv?
    41 "":"scrollSetup ======== start["+U+"]["+g+"]["+u+"] enabled?"+v+"  have parent?"+(null!=A)+" id:"+y+" type:"+A.node.localName+" > "+f.node.tagName);if(null!=f.attr("begin")&&!f.attr("begin").match(/theoverlayVid/))a.vprint("warn","scrollSetup skip element with begin, id:"+f.attr("id")+" attr:"+f.attr("attributeName"));else if(null!=f.attr("from")&&null==f.attr("values"))a.vprint("warn","scrollSetup skip element with from to, id:"+f.attr("id")+" attr:"+f.attr("attributeName"));else if("handwave"!=
    42 y&&"helpinghand"!=y)if(A.attr("xlink:href")&&A.attr("xlink:href").match(/^#bird/))a.vprint("scrl",vv?"":"scrollSetup SKIP this xlink:"+A.attr("xlink:href"));else if(x&&("slide"==B&&"slide"!=w||"path"==B&&"path"!=w||"intrinsic"==B&&"intrinsic"!=w||"fallingeffect"==B&&"fallingeffect"!=w||"video"==B&&"video"!=w))a.vprint("scrl",vv?"":"scrollSetup SKIP, bad match with whichani:"+B+" me:"+w);else if(x&&!v)a.vprint("scrl",vv?"":"scrollSetup SKIP, music not enabled");else if(!x&&q.transO&&q.transO.sound&&
    43 0==q.transO.sound.enable&&"scroll"!=P)a.vprint("scrl",vv?"":"scrollSetup SKIP, sound not enabled");else if(x&&v&&"slide"==w&&q.transO.music.drivemode.match(/(freqbar|waveform)/)&&"group mode"==q.transO.music.keyoff&&"opacity"==f.attr("attributeName"))a.vprint("scrl",vv?"":"scrollSetup SKIP, opacity for slide freqbar group mode");else{c.slot=u;c.kind=w;x&&q.transO&&q.transO.music&&(c.music=$.extend({},q.transO.music),c.sound=$.extend({},q.transO.sound),c.gpa=0,c.twa=0,c.gpb=0,c.threshold=.5,c.mpPulse=
    44 0,c.order=-1);q.transO&&q.transO.group&&(c.apply2group=q.transO.group.apply2group);for(g=0;g<b.length;g++)c[b[g]]=f.attr(b[g]);"video"==c.kind&&(c.values=f.attr("data-vbeg")+";"+f.attr("data-vend"),c.dur=f.attr("data-vend")-f.attr("data-vbeg"),c.repeatDur="indefinite",c.kind="video",c.attributeName="currentTime",la&&(f.attr("data-vres","never"),f.node.pause()),a.vprint("scrl",vv?"":"scrollSetup videojog params now:"+a.dumpvar(c)));if(f.attr("origid")||A.attr("origid"))l=!0,c.order=f.attr("origid")||
    45 A.attr("origid");"feColorMatrix"==A.node.localName&&(c.type="feColorMatrix");if("rotate"==c.type||"d"==c.attributeName||"feColorMatrix"==c.type)c.values=c.values.replace(/\s*;\s*/g,";").replace(/\s+$/,"").replace(/([a-yA-Y])/g,"$1 ").replace(/\s+/g,",").replace(/,,/g,",").replace(/[,;]$/,""),a.vprint("scrl",vv?"":"scrollSetup CLEANED UP rotate/d values:"+c.values);"feColorMatrix"==c.type&&(c.values=c.values.replace(/\r\n/g,""));c.attributeName&&c.attributeName.match(/(stop-color|fill|stroke|flood-color|d)/)||
    46 !c.values||(c.values=c.values.replace(/([a-zA-Z%])/g,",$1"));null!=c.keyPoints&&(c.values=c.keyPoints,thepathid=f.select("mpath").attr("xlink:href"),pathd=k[r].select(thepathid),a.vprint("scrl",vv?"":"aniOnScroll aniMo pathid:"+thepathid+" found it?"+pathd),null!=pathd&&(c.pathd=pathd.attr("d"),c.zlen=Snap.path.getTotalLength(c.pathd),c.attributeName="transform",c.type="translate",c.kind="path"));c=xa(c);c.durm=Q/parseFloat(c.dur);x&&(c.durm=1,q.transO&&q.transO.music&&q.transO.music.enable&&("slide"==
    47 w&&q.transO.music.drivemode.match(/(freqbar|waveform)/)&&"group mode"==q.transO.music.keyoff&&(c.skipPause=!0,junk=c.timsA.shift(),junk=c.valsA.shift(),1<c.timsA.length&&(junk=c.timsA.pop(),junk=c.valsA.pop()),c.timsA[0]=0,c.timsA[c.timsA.length-1]=1,a.vprint("scrl",vv?"":" drivemode freqbarmod valsA  now:"+c.valsA+" timsA:"+c.timsA)),a.vprint("scrl",vv?"":" drivemode:"+G+","+q.transO.music.drivemode),q.transO.music.drivemode.match(/^beat/)&&(ka=!0),"group mode"==q.transO.music.keyoff&&F[mydivid].num_group_mode++,
    48 null==m[mydivid].slot[c.slot].started?(k[r].tlmusic?a.vprint("scrl",vv?"":"scrollSetup  have tlmusic SKIP paramO file ["+c.sound.snd+"]!!!!!"):(a.vprint("scrl",vv?"":"scrollSetup  START paramO music["+c.sound.snd+"]  !!!!!"),gnlvSound.start(c.sound)),a.vprint("scrl",vv?"":"scrollSetup  TODO  beat or headless per sound"),m[mydivid].slot[c.slot].started=!0):a.vprint("scrl",vv?"":"scrollSetup  sound["+c.sound.snd+"] already started")));a.vprint("scrl",vv?"":"scrollSetup paramO [ "+U+" ]  : "+a.dumpvar(c));
    49 a.vprint("scrl",vv?"":"scrollSetup paramO------------------------------");c.mytarget=c["xlink:href"]?k[r].select(c["xlink:href"]):"video"==c.kind?f:A;w=c.mytargetid=c.mytarget.attr("id");null==w&&(w=c.mytargetid="temp"+Math.floor(1E4*Math.random()),a.vprint("scrl",vv?"":"scrollSetup no id for animate target! setting now:"+w),c.mytarget.attr?c.mytarget.attr("id",w):a.vprint("warn","scrollSetup failed to set id"));"transform"==c.attributeName&&(c.mytarget&&"function"==typeof c.mytarget.transform&&"symbol"!=
    50 A.node.localName?c.lmatrix=c.mytarget.transform().localMatrix:(a.vprint("scrl",vv?"":"scrollSetup X X X no transform off["+c.id+"]:target:"+c.mytarget+" fake it"),c.lmatrix=new Snap.Matrix),null!=c.keyPoints&&"matrix(1,0,0,1,0,0)"!=c.lmatrix.toString()&&(a.vprint("scrl",vv?"":"scrollSetup X X X aniMo initial transform NOT OK:"+c.lmatrix.toString()),c.mytarget.transform("matrix(1,0,0,1,0,0)")),m[mydivid].numAbyTarget[w]=null==m[mydivid].numAbyTarget[w]?1:m[mydivid].numAbyTarget[w]+1);"patternTransform"==
    51 c.attributeName&&(g=c.mytarget.attr("patternTransform"),a.vprint("scrl",vv?"":"scrollSetup patternTransform attr:"+c.mytarget.attr("patternTransform")+" parentid:"+y+" lmat:"+g+" type:"+c.type),c.realtarget=c.mytarget,A=k[r].selectAll("g[id=hiddenslotdefssubnode]"),1>A.length?a.vprint("error","X X X X scrollSetup patternTransform did not find hiddenslotdefssubnode"):(c.mytarget=A[0],c.mytarget.transform(g),c.lmatrix=c.mytarget.transform().localMatrix.clone(),a.vprint("scrl",vv?"":"scrollSetup patternTransform proxy setup with transform:"+
    52 c.lmatrix),c.realattributeName=c.attributeName,c.attributeName="transform",w=y,m[mydivid].numAbyTarget[w]=null==m[mydivid].numAbyTarget[w]?1:m[mydivid].numAbyTarget[w]+1));null==n[w]&&(n[w]={});y=c.realattributeName?c.realattributeName:c.attributeName;"currentTime"!=y&&(n[w][y]=1,f.node.setAttribute("fill","remove"),"idle2play"==M?(f.attr("repeatDur","indefinite"),f.node.setAttribute("fill","remove")):f.attr("repeatDur",1E-6),c.lmatrix&&c.mytarget&&(c.origtransform=c.lmatrix.toString()+"",c.mytarget.attr("data-transform",
    53 c.origtransform)));c.myself=f;m[mydivid].gnlvaniA.push(c)}}}}1==l&&(a.vprint("scrl",vv?"":"scrollSetup SPECIAL SORT!"),m[mydivid].gnlvaniA.sort(function(p,S){return parseFloat(p.order)-parseFloat(S.order)}));a.vprint("scrl",vv?"":"scrollSetup ======== vv =============["+r+"]================ vv");a.vprint("scrl",vv?"":"scrollSetup ======== setup scroll for num animations:"+m[mydivid].gnlvaniA.length+" ID:"+mydivid);a.vprint("scrl",vv?"":"scrollSetup ======== last drivemode:"+G+" found_beat?"+ka);a.vprint("scrl",
    54 vv?"":"scrollSetup ======== willchange list:"+a.dumpvar(n));myvol=k[r].select("#vol_on_off");k[r].tlmusic&&0==k[r].started?(gnlvSound.doplots=!1,G.match(/^beat/)||ka?gnlvSound.ana("onbeat"):gnlvSound.ana("headless"),l={enable:!0,snd:"tlmusic",pl:mydivid,playmode:"continuous",do3d:!1,file:k[r].tlmusic,usemode:M},a.vprint("scrl",vv?"":"scrollSetup =======   M U S I C  ======= PRELOAD top level music usemode:"+M+"  vol["+typeof myvol+"] file:"+a.dumpvar(l)+" ======== !!!!!"),myvol&&myvol.attr&&(volver=
    55 myvol.attr("data-ver"),myvol.attr("data-target",mydivid),l.volel=myvol,myvol.parent()&&myvol.parent().select("#timekeeperani")&&myvol.parent().select("#timekeeperani").attr("data-target",mydivid)),"idle2play"==M?gnlvSound.preload(l):gnlvSound.start(l),k[r].started=!0,gnlvSound.muteTrans=L.resetTransforms):a.vprint("scrl",vv?"":"scrollSetup ======== NO top level music defined");for(K in n)if(l=Object.keys(n[K]).join(","),x=k[r].select("#"+K))x.node.style.willChange=l;"scroll"==P?(a.vprint("scrl",vv?
    56 "":"scrollSetup | | | | | | | | |  watching SCROLL | | | | | | | | | "+mydivid+" vol?"+typeof myvol+" music?"+D.music),myvol&&myvol.attr&&D.music&&D.music.mp3&&myvol.removeClass("gnlv-gone"),z[mydivid]="scroll",$(window).off("scroll.genolve"),$(window).on("scroll.genolve",{value:mydivid},sa),a.vprint("scrl",vv?"":"scrollSetup | | now")):"mouse"==P?a.getBrowser("isMobile")?(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching TILT | | | | | | | | | "+mydivid),z[mydivid]="tilt",e=mydivid,
    57 window.addEventListener("devicemotion",ra,!1)):(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MOUSE | | | | | | | | | "+mydivid),z[mydivid]="mouse",$(window).off("mousemove.genolve"),$(window).on("mousemove.genolve",{value:mydivid},qa)):"music"==P?(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MUSIC | | | | | | | | | ID:"+mydivid+" interval->20"),z[mydivid]="music",e=mydivid,"idle2play"==M&&(gnlvSound.muteExtra&&a.vprint("warn",vv?"":"scrollSetup setting muteExtra toggleMuzPause but not null:"+
    58 gnlvSound.muteExtra),gnlvSound.muteExtra=L.toggleMuzPause,gnlvSound.playExtra&&a.vprint("warn",vv?"":"scrollSetup setting playExtra toggleMuzPlay but not null:"+gnlvSound.playExtra),gnlvSound.playExtra=L.toggleMuzPlay),document.gnlv_ana_interval=window.setInterval(ta,20),$(window).off("beat"),$(window).on("beat",va)):a.vprint("scrl",vv?"":"scrollSetup NO ANITYPE no scroll flages detected");W[mydivid]=k[r]}a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | | setup done");a.vprint("scrl",vv?"":"scrollSetup | | | | |");
    59 "undefined"!=typeof eloop&&eloop.mkVidtimer&&"edit"==M&&(a.vprint("scrl",vv?"":"scrollSetup | | mkVidtimer"),eloop.mkVidtimer())};J&&"minimal"==J.usemode||L.doSetup();"stub"==eloop.version&&null==eloop.anielapsed&&(eloop.anielapsed=this.anielapsed)};
     28var b=window.gnlv_start_time&&null!=window.gnlv_start_time[l]?window.gnlv_start_time[l]:L.ani_start_timestamp,n=(Date.now()-b)/1E3;if("absolute"==d)return n;d=a.setVal(n,0,0,Q,a.setValMode.LOOP);a.vprint("scrl",vv?"":"anielapsed["+l+"] atime:"+Q+" starttimestamp:"+b+" delta:"+n+" return:"+d);return d};this.resetTransforms=function(d){var l=0;null!=d&&L.changeDiv(d);a.vprint("scrl",vv?"":"resetTransforms start on["+e+"] "+(null!=m[e]));if(null==m[e])console.warn("scroll.resetTransforms start NO["+
     29e+"] of available:"+Object.keys(m));else{for(d=0;d<m[e].gnlvaniA.length;d++){var b=m[e].gnlvaniA[d];a.vprint("scrl",vv?"":"resetTransforms ["+d+"] id:"+b.id+" type:"+b.type+" have orig tran?"+b.origtransform+" target?"+(null!=b.mytarget));b.origtransform&&b.mytarget&&(l++,b.mytarget.transform(b.origtransform))}a.vprint("scrl",vv?"":"resetTransforms checking reset "+l+" of "+m[e].gnlvaniA.length)}};var ca=function(d,l){for(var b,n,k,g=d.split(l),t=0;t<g.length;t++)b=g[t].match(/(,\s*|\s+)/),n=g[t].match(/[a-zA-Z%]/),
     30k=g[t].match(/#/),b?g[t]=ca(g[t],b[0]):k?(diskula=g[t].replace(/#/,""),g[t]=[parseInt(diskula.substr(0,2),16),parseInt(diskula.substr(2,2),16),parseInt(diskula.substr(4,2),16)]):n||(g[t]=a.d4(g[t]));return g},xa=function(d){a.vprint("scrl",vv?"":"parseSplines starting on:"+a.dumpvar(d));d.valsA=ca(d.values,/\s*;\s*/);var l=d.valsA.length;if(null!=d.keyTimes)var b=ca(d.keyTimes,/\s*;\s*/);else{var n=[0];for(b=1;b<l;b++)n[b]=Math.min(1,n[b-1]+1/(l-1));b=n}d.timsA=b;if(null!=d.keySplines)l=ca(d.keySplines,
     31/\s*;\s*/);else{n=[];var k=[0,0,1,1];for(b=1;b<l;b++)n.push(k);l=n}d.splsA=l;return d};this.doSetup=function(d){var l="FROMDIV .gnlv-scroll, FROMDIV .gnlv-mouse, FROMDIV .gnlv-music",b="id attributeName values type dur xlink:href calcMode repeatDur keyTimes keySplines keyPoints rotate additive".split(" "),n={};null==d&&(d={},z={},V={},m={},F={});M=d.usemode?d.usemode:M;l=null==d.fromdiv?l.replace(/FROMDIV/g,""):l.replace(/FROMDIV/g,"#"+d.fromdiv);var k=Snap.selectAll(l);var g;a.vprint("scrl",vv?"":
     32"scrollSetup - - - -doSetup - - - -");a.vprint("scrl",vv?"":"scrollSetup - - - -doSetup - - - - START usemode:"+M+" - - -fromdiv?"+d.fromdiv+" on num:"+k.length);for(r=0;r<k.length;r++){var t={};l=!1;var D,H;if("edit"==M)mydivid="default";else if(mydivid=k[r].attr("id"),null==mydivid||null!=W[mydivid])mydivid=null==d.fromdiv?"svg"+r:d.fromdiv+"_svg",a.vprint("scrl",vv?"":"scrollSetup - - - -id missing or not unique, newid >   "+mydivid+" <"),k[r].attr("id",mydivid);m[mydivid]={};m[mydivid].slot={};
     33m[mydivid].gnlvaniA=[];m[mydivid].numAbyTarget={};k[r].started=!1;k[r].hasClass("gnlv-scroll")?P="scroll":k[r].hasClass("gnlv-mouse")?P="mouse":k[r].hasClass("gnlv-music")&&(P="music");a.vprint("scrl",vv?"":"scrollSetup - - - -doSetup - - - - START svgA["+r+"] divid[ "+mydivid+" ] ,anitype:"+P);null==F[mydivid]&&(F[mydivid]={lastime:(new Date).getTime(),tiltG:0,tiltB:0,gpa:.5});F[mydivid].num_group_mode=0;var E=k[r].select(".gnlv-slot-template");if(E&&E.attr){var A=E.attr("gnlv-data");a.vprint("scrl",
     34vv?"":"TEMPLATE DATA:"+A);A=a.parsejson(A);A.music&&A.music.mp3?k[r].tlmusic=A.music.mp3:a.vprint("warn","scrollSetup found no mp3!");k[r].volume=A.music&&A.music.volume?A.music.volume:10;Q!=A.atime&&(a.vprint("warn","scrollSetup found atime missmatch!"+Q+"< going with:>"+A.atime+" if defined"),Q=A.atime?A.atime:Q)}var x=!1;k[r].hasClass("gnlv-music")&&(x=!0,"undefined"==typeof eloop&&(eloop={}),eloop.templatediv=k[r].parent().attr("id"),eloop.templatediv||(eloop.templatediv="tempid"+Math.floor(1E4*
     35Math.random()),a.vprint("scrl",vv?"":"scrollSetup no id on templatediv, setting now"),k[r].parent().attr("id",eloop.templatediv)),a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MUSIC | | | | | | | | |divid: "+mydivid+" templatediv:"+eloop.templatediv+" tlmusic:"+k[r].tlmusic),"undefined"==typeof gnlvSound&&"undefined"!=typeof GenolveSound?(a.vprint("scrl",vv?"":"scrollSetup X X X NO snd gnlvSound but had CLAS, instantiate now"),gnlvSound=new GenolveSound({vpr:a}),document.gnlvSound=
     36gnlvSound,volControl=document.gnlvSound.addVol(E)):J&&J.volel&&(a.vprint("scrl",vv?"":"scrollSetup registro vol:"+J.volel),volControl=gnlvSound.registerVol(J.volel)),z[mydivid]="music",eloop.autoResize=eloop.autoResizeSnd?eloop.autoResizeSnd:function(){console.log("gnlvScroll X  X  X  non eloop autoResizeSnd ")},eloop.autoResize());a.vprint("scrl",vv?"":"scrollSetup START with num SVG["+r+"] tag >"+mydivid+"< of "+k.length+" -------------------------------------------------vv--------------------");
     37var B=k[r].selectAll("g[id=hiddenslotsubnode]");1>B.length?a.vprint("warn","scrollSetup  did not find hiddenslotsubnode for:"+mydivid):ja=B[0];k[r].selectAll(".gnlv-slot-eloop").forEach(function(p,S){var I=p.attr("id");A=p.attr("gnlv-data");if(I.match(/.*hidden.*/)||null==A)a.vprint("scrl",vv?"":"scrollSetup skip datagnlv for slot["+I+"] ");else{a.vprint("scrl",vv?"":"SLOT [ "+I+" ]  DATA:"+A);q=a.parsejson(A);if(null!=q.usetagID)for(K in q.usetagID){var T=q.usetagID[K];t[T]=I;T.match(/\d$/)&&(t[T.replace(/\d+$/,
     38"N")]=I);("imgcorner"==K||"imgmask"==K)&&(D=k[r].select("#"+T))&&D.parent()&&D.parent().parent()&&(H="imgcorner"==K?D.parent().parent().attr("id"):D.parent().attr("id"),a.vprint("scrl",vv?"":"["+K+"] tagged:"+H),t[H]=I)}null==m[mydivid].slot[I]?m[mydivid].slot[I]=q:a.vprint("warn","scrollSetup slot["+I+"] not empty! mydata already logged??????")}});var f=k[r].select("#theoverlayVid");"undefined"!=typeof eloop&&eloop.rmVidTimer?eloop.rmVidTimer(E):f&&f.remove();E=k[r].selectAll("animate,animateTransform,animateMotion");
     39a.vprint("scrl",vv?"":"scrollSetup START looping animations["+mydivid+"]  -- - - -- "+E.length);for(var R in m[mydivid].slot){var q=m[mydivid].slot[R];if(q.transO&&q.transO.music&&q.transO.music.enable&&"video"==q.transO.music.whichani)for(videlA=k[r].selectAll("#"+R+" video"),a.vprint("scrl",vv?"":"scrollSetup    > videojog <     for slot["+R+"] numel:"+videlA.length),g=0;g<videlA.length;g++)videlA[g].attr("id","anivid"+Math.floor(1E4*Math.random())),E.push(videlA[g])}for(U=0;U<E.length;U++){f=E[U];
     40var c={};B=f.parent();g=f.attr("id");null==g&&(g="anmttemp"+Math.floor(1E4*Math.random()),f.attr("id",g));var w=g.match(/^aniusr/)?"slide":g.match(/^anipth/)?"path":g.match(/^anmt/)?"intrinsic":g.match(/^anifal/)?"fallingeffect":g.match(/^anivid/)?"video":"unknown";a.vprint("scrl",vv?"":"scrollSetup ======== start["+U+"]["+g+"]"+w);var y=B.attr("id")?B.attr("id"):"none",C=h,h=B,u=h.attr?h.attr("id"):"nada";if("vidtimer"!=g&&"marqSOani"!=g&&"timekeeperani"!=g){for(;h.parent()&&h.parent().attr&&!h.hasClass("gnlv-slot-eloop")&&
     41!h.hasClass("gnlv-svg");)C=h,h=h.parent(),u=h.attr("id")?h.attr("id"):"nada";if("hiddenslot"==u||h.hasClass("gnlv-svg"))a.vprint("scrl",vv?"":"scrollSetup found hidden, SKIP:"+g+":");else{if("hiddenslotdefs"==u){C=C.attr("id");if(t[C])u=t[C];else if(t[C.replace(/\d+$/,"N")])u=t[C.replace(/\d+$/,"N")];else{a.vprint("scrl",vv?"":"X SKIP X  hiddenslot lookup fail on key:"+C+" for hsd2slot hash:"+a.dumpvar(t));continue}q=m[mydivid].slot[u];a.vprint("scrl",vv?"":"scrollSetup hiddenslotdefs translate for["+
     42C+"]->"+u)}else m[mydivid].slot[u]?q=m[mydivid].slot[u]:a.vprint("scrl",vv?"":"scrollSetup X X X X X X no slot data/mydata for "+u);C=q&&q.transO&&q.transO.music&&q.transO.music.whichani?q.transO.music.whichani:"all";var v=q&&q.transO&&q.transO.music&&q.transO.music.enable?q.transO.music.enable:!1;a.vprint("scrl",vv?"":"scrollSetup ======== start["+U+"]["+g+"]["+u+"] enabled?"+v+"  have parent?"+(null!=B)+" id:"+y+" type:"+B.node.localName+" > "+f.node.tagName);if(null!=f.attr("begin")&&!f.attr("begin").match(/theoverlayVid/))a.vprint("warn",
     43"scrollSetup skip element with begin, id:"+f.attr("id")+" attr:"+f.attr("attributeName"));else if(null!=f.attr("from")&&null==f.attr("values"))a.vprint("warn","scrollSetup skip element with from to, id:"+f.attr("id")+" attr:"+f.attr("attributeName"));else if("handwave"!=y&&"helpinghand"!=y)if(B.attr("xlink:href")&&B.attr("xlink:href").match(/^#bird/))a.vprint("scrl",vv?"":"scrollSetup SKIP this xlink:"+B.attr("xlink:href"));else if(x&&("slide"==C&&"slide"!=w||"path"==C&&"path"!=w||"intrinsic"==C&&
     44"intrinsic"!=w||"fallingeffect"==C&&"fallingeffect"!=w||"video"==C&&"video"!=w))a.vprint("scrl",vv?"":"scrollSetup SKIP, bad match with whichani:"+C+" me:"+w);else if(x&&!v)a.vprint("scrl",vv?"":"scrollSetup SKIP, music not enabled");else if(!x&&q.transO&&q.transO.sound&&0==q.transO.sound.enable&&"scroll"!=P)a.vprint("scrl",vv?"":"scrollSetup SKIP, sound not enabled");else if(x&&v&&"slide"==w&&q.transO.music.drivemode.match(/(freqbar|waveform)/)&&"group mode"==q.transO.music.keyoff&&"opacity"==f.attr("attributeName"))a.vprint("scrl",
     45vv?"":"scrollSetup SKIP, opacity for slide freqbar group mode");else{c.slot=u;c.kind=w;x&&q.transO&&q.transO.music&&(c.music=$.extend({},q.transO.music),c.sound=$.extend({},q.transO.sound),c.gpa=0,c.twa=0,c.gpb=0,c.threshold=.5,c.mpPulse=0,c.order=-1);q.transO&&q.transO.group&&(c.apply2group=q.transO.group.apply2group);for(g=0;g<b.length;g++)c[b[g]]=f.attr(b[g]);"video"==c.kind&&(c.values=f.attr("data-vbeg")+";"+f.attr("data-vend"),c.dur=f.attr("data-vend")-f.attr("data-vbeg"),c.repeatDur="indefinite",
     46c.kind="video",c.attributeName="currentTime",la&&(f.attr("data-vres","never"),f.node.pause()),a.vprint("scrl",vv?"":"scrollSetup videojog params now:"+a.dumpvar(c)));if(f.attr("origid")||B.attr("origid"))l=!0,c.order=f.attr("origid")||B.attr("origid");"feColorMatrix"==B.node.localName&&(c.type="feColorMatrix");if("rotate"==c.type||"d"==c.attributeName||"feColorMatrix"==c.type)c.values=c.values.replace(/\s*;\s*/g,";").replace(/\s+$/,"").replace(/([a-yA-Y])/g,"$1 ").replace(/\s+/g,",").replace(/,,/g,
     47",").replace(/[,;]$/,""),a.vprint("scrl",vv?"":"scrollSetup CLEANED UP rotate/d values:"+c.values);"feColorMatrix"==c.type&&(c.values=c.values.replace(/\r\n/g,""));c.attributeName&&c.attributeName.match(/(stop-color|fill|stroke|flood-color|d)/)||!c.values||(c.values=c.values.replace(/([a-zA-Z%])/g,",$1"));null!=c.keyPoints&&(c.values=c.keyPoints,thepathid=f.select("mpath").attr("xlink:href"),pathd=k[r].select(thepathid),a.vprint("scrl",vv?"":"aniOnScroll aniMo pathid:"+thepathid+" found it?"+pathd),
     48null!=pathd&&(c.pathd=pathd.attr("d"),c.zlen=Snap.path.getTotalLength(c.pathd),c.attributeName="transform",c.type="translate",c.kind="path"));c=xa(c);c.durm=Q/parseFloat(c.dur);x&&(c.durm=1,q.transO&&q.transO.music&&q.transO.music.enable&&("slide"==w&&q.transO.music.drivemode.match(/(freqbar|waveform)/)&&"group mode"==q.transO.music.keyoff&&(c.skipPause=!0,junk=c.timsA.shift(),junk=c.valsA.shift(),1<c.timsA.length&&(junk=c.timsA.pop(),junk=c.valsA.pop()),c.timsA[0]=0,c.timsA[c.timsA.length-1]=1,a.vprint("scrl",
     49vv?"":" drivemode freqbarmod valsA  now:"+c.valsA+" timsA:"+c.timsA)),a.vprint("scrl",vv?"":" drivemode:"+G+","+q.transO.music.drivemode),q.transO.music.drivemode.match(/^beat/)&&(ka=!0),"group mode"==q.transO.music.keyoff&&F[mydivid].num_group_mode++,null==m[mydivid].slot[c.slot].started?(k[r].tlmusic?a.vprint("scrl",vv?"":"scrollSetup  have tlmusic SKIP paramO file ["+c.sound.snd+"]!!!!!"):(a.vprint("scrl",vv?"":"scrollSetup  START paramO music["+c.sound.snd+"]  !!!!!"),gnlvSound.start(c.sound)),
     50a.vprint("scrl",vv?"":"scrollSetup  TODO  beat or headless per sound"),m[mydivid].slot[c.slot].started=!0):a.vprint("scrl",vv?"":"scrollSetup  sound["+c.sound.snd+"] already started")));a.vprint("scrl",vv?"":"scrollSetup paramO [ "+U+" ]  : "+a.dumpvar(c));a.vprint("scrl",vv?"":"scrollSetup paramO------------------------------");c.mytarget=c["xlink:href"]?k[r].select(c["xlink:href"]):"video"==c.kind?f:B;w=c.mytargetid=c.mytarget.attr("id");null==w&&(w=c.mytargetid="temp"+Math.floor(1E4*Math.random()),
     51a.vprint("scrl",vv?"":"scrollSetup no id for animate target! setting now:"+w),c.mytarget.attr?c.mytarget.attr("id",w):a.vprint("warn","scrollSetup failed to set id"));"transform"==c.attributeName&&(c.mytarget&&"function"==typeof c.mytarget.transform&&"symbol"!=B.node.localName?c.lmatrix=c.mytarget.transform().localMatrix:(a.vprint("scrl",vv?"":"scrollSetup X X X no transform off["+c.id+"]:target:"+c.mytarget+" fake it"),c.lmatrix=new Snap.Matrix),null!=c.keyPoints&&"matrix(1,0,0,1,0,0)"!=c.lmatrix.toString()&&
     52(a.vprint("scrl",vv?"":"scrollSetup X X X aniMo initial transform NOT OK:"+c.lmatrix.toString()),c.mytarget.transform("matrix(1,0,0,1,0,0)")),m[mydivid].numAbyTarget[w]=null==m[mydivid].numAbyTarget[w]?1:m[mydivid].numAbyTarget[w]+1);"patternTransform"==c.attributeName&&(g=c.mytarget.attr("patternTransform"),a.vprint("scrl",vv?"":"scrollSetup patternTransform attr:"+c.mytarget.attr("patternTransform")+" parentid:"+y+" lmat:"+g+" type:"+c.type),c.realtarget=c.mytarget,B=k[r].selectAll("g[id=hiddenslotdefssubnode]"),
     531>B.length?a.vprint("error","X X X X scrollSetup patternTransform did not find hiddenslotdefssubnode"):(c.mytarget=B[0],c.mytarget.transform(g),c.lmatrix=c.mytarget.transform().localMatrix.clone(),a.vprint("scrl",vv?"":"scrollSetup patternTransform proxy setup with transform:"+c.lmatrix),c.realattributeName=c.attributeName,c.attributeName="transform",w=y,m[mydivid].numAbyTarget[w]=null==m[mydivid].numAbyTarget[w]?1:m[mydivid].numAbyTarget[w]+1));null==n[w]&&(n[w]={});y=c.realattributeName?c.realattributeName:
     54c.attributeName;"currentTime"!=y&&(n[w][y]=1,f.node.setAttribute("fill","remove"),"idle2play"==M?(f.attr("repeatDur","indefinite"),f.node.setAttribute("fill","remove")):f.attr("repeatDur",1E-6),c.lmatrix&&c.mytarget&&(c.origtransform=c.lmatrix.toString()+"",c.mytarget.attr("data-transform",c.origtransform)));c.myself=f;m[mydivid].gnlvaniA.push(c)}}}}1==l&&(a.vprint("scrl",vv?"":"scrollSetup SPECIAL SORT!"),m[mydivid].gnlvaniA.sort(function(p,S){return parseFloat(p.order)-parseFloat(S.order)}));a.vprint("scrl",
     55vv?"":"scrollSetup ======== vv =============["+r+"]================ vv");a.vprint("scrl",vv?"":"scrollSetup ======== setup scroll for num animations:"+m[mydivid].gnlvaniA.length+" ID:"+mydivid);a.vprint("scrl",vv?"":"scrollSetup ======== last drivemode:"+G+" found_beat?"+ka);a.vprint("scrl",vv?"":"scrollSetup ======== willchange list:"+a.dumpvar(n));myvol=k[r].select("#vol_on_off");k[r].tlmusic&&0==k[r].started?(gnlvSound.doplots=!1,G.match(/^beat/)||ka?gnlvSound.ana("onbeat"):gnlvSound.ana("headless"),
     56l={enable:!0,snd:"tlmusic",pl:mydivid,playmode:"continuous",do3d:!1,file:k[r].tlmusic,volume:k[r].volume,usemode:M},a.vprint("scrl",vv?"":"scrollSetup =======   M U S I C  ======= PRELOAD top level music usemode:"+M+"  vol["+typeof myvol+"] file:"+a.dumpvar(l)+" ======== !!!!!"),myvol&&myvol.attr&&(volver=myvol.attr("data-ver"),myvol.attr("data-target",mydivid),l.volel=myvol,myvol.parent()&&myvol.parent().select("#timekeeperani")&&myvol.parent().select("#timekeeperani").attr("data-target",mydivid)),
     57"idle2play"==M?gnlvSound.preload(l):gnlvSound.start(l),k[r].started=!0,gnlvSound.muteTrans=L.resetTransforms):a.vprint("scrl",vv?"":"scrollSetup ======== NO top level music defined");for(K in n)if(l=Object.keys(n[K]).join(","),x=k[r].select("#"+K))x.node.style.willChange=l;"scroll"==P?(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching SCROLL | | | | | | | | | "+mydivid+" vol?"+typeof myvol+" music?"+A.music),myvol&&myvol.attr&&A.music&&A.music.mp3&&myvol.removeClass("gnlv-gone"),z[mydivid]=
     58"scroll",$(window).off("scroll.genolve"),$(window).on("scroll.genolve",{value:mydivid},sa),a.vprint("scrl",vv?"":"scrollSetup | | now")):"mouse"==P?a.getBrowser("isMobile")?(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching TILT | | | | | | | | | "+mydivid),z[mydivid]="tilt",e=mydivid,window.addEventListener("devicemotion",ra,!1)):(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MOUSE | | | | | | | | | "+mydivid),z[mydivid]="mouse",$(window).off("mousemove.genolve"),$(window).on("mousemove.genolve",
     59{value:mydivid},qa)):"music"==P?(a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | |  watching MUSIC | | | | | | | | | ID:"+mydivid+" interval->20"),z[mydivid]="music",e=mydivid,"idle2play"==M&&(gnlvSound.muteExtra&&a.vprint("warn",vv?"":"scrollSetup setting muteExtra toggleMuzPause but not null:"+gnlvSound.muteExtra),gnlvSound.muteExtra=L.toggleMuzPause,gnlvSound.playExtra&&a.vprint("warn",vv?"":"scrollSetup setting playExtra toggleMuzPlay but not null:"+gnlvSound.playExtra),gnlvSound.playExtra=
     60L.toggleMuzPlay),document.gnlv_ana_interval=window.setInterval(ta,20),$(window).off("beat"),$(window).on("beat",va)):a.vprint("scrl",vv?"":"scrollSetup NO ANITYPE no scroll flages detected");W[mydivid]=k[r]}a.vprint("scrl",vv?"":"scrollSetup | | | | | | | | | setup done");a.vprint("scrl",vv?"":"scrollSetup | | | | |");"undefined"!=typeof eloop&&eloop.mkVidtimer&&"edit"==M&&(a.vprint("scrl",vv?"":"scrollSetup | | mkVidtimer"),eloop.mkVidtimer())};J&&"minimal"==J.usemode||L.doSetup();"stub"==eloop.version&&
     61null==eloop.anielapsed&&(eloop.anielapsed=this.anielapsed)};
  • genolve-toolkit/trunk/js/genolve-sound.js

    r2921815 r3001892  
    1 var GenolveSound=function(q){var b=this;null==q&&(q={});this.ver="2.0.0";this.fov=90;this.muted=!0;this.numfreqbins=256;var X=0,Y=0,t=484,P=0,J=57,G=null,Z=3,Q=!1,K=!0,v={},C=0,R=70,aa,S,e=q.vpr;null==q.actionhost&&"https://www.genolve.com"==q.actionhost;var r,w="off",L,T,B,M,U,V=!0,D,m={},n=[];this.trueh=200;this.plO={};var d="notset";this.playExtra=this.muteExtra=this.muteTrans=null;this.doplots=!0;this.needSetup=!1;var u=0,N=0,E=document.getElementById("oscilloscope");if(null!=E){var p=E.getContext("2d");
    2 var y=E.width;var z=E.height}var x=document.getElementById("plot");if(null!=x){var l=x.getContext("2d");l.font="28px serif";l.lineWidth=1;l.strokeStyle="green";l.rect(0,0,x.width,x.height);l.stroke()}null==e&&(e={name:"snd-stub",vprint:function(a,c){vv||console.log(c)},dumpvar:function(a){return JSON.stringify(a)},setValMode:{LOOP:"LOOP",LOOPz:"LOOPz",LOOPtoBOUND:"LOOPtoBOUND",LIMIT:"LIMIT",RANDOM:"RANDOM",MIDNORM:"MIDNORM",LOWNORM:"LOWNORM",HINORM:"HINORM"},setVal:function(a,c,f,h,g){f=parseFloat(f);
    3 h=parseFloat(h);if(f>h){var k=h;h=f;f=k}k=h-f;k=g==this.setValMode.LOOPz?k+1:k;a=isNaN(a)?0:parseFloat(a);c=isNaN(c)?1:parseFloat(c);a+=c;if(a>h)if(g==this.setValMode.LIMIT)a=h;else if(g==this.setValMode.LOOPtoBOUND)a=f;else if(g==this.setValMode.LOOP||g==this.setValMode.LOOPz)for(;a>h;)a-=k;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+g+" must be LOOP/LIMIT/RANDOM");else if(a<f)if(g==this.setValMode.LIMIT)a=f;else if(g==this.setValMode.LOOPtoBOUND)a=h;else if(g==this.setValMode.LOOP||
    4 g==this.setValMode.LOOPz)for(;a<f;)a+=k;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+g+" must be LOOP/LIMIT/RANDOM");return a}});this.volsprite='<g id="vol_on_off" class="gnlv-clickable gnlv-vol-control" data-ver="1.1" data-target="default" onclick="document.gnlvSound.toggleVol(this)" transform="scale(.2)"><circle  cx="100" cy="100" r="100" fill="#DDDDDD"/><g id="vol_on" transform="scale(0.2)" class="vol_on"><path d="M156,379 v247 h140 l210,173 l0,-592 l-210,173 H156 z  M588,351 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 v0 c27,27 44,64 44,105 c0,41 -17,78 -44,105 c-12,12 -12,32 0,44 c6,6 14,9 22,9 c8,0 16,-3 22,-9 c38,-38 62,-91 62,-149 C650,442 626,389 588,351 z  M659,279 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 c45,45 73,108 73,177 c0,69 -28,131 -73,177 c-12,12 -12,32 0,44 c6,6 14,9 22,9 c8,0 16,-3 22,-9 c57,-57 92,-135 91,-221 C751,414 716,335 659,279 z  M728,211 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 h0 c63,63 102,149 102,245 c0,96 -39,182 -101,245 c-12,12 -12,32 0,44 c6,6 14,9 22,9 s16,-3 22,-9 c74,-74 120,-176 120,-289 C847,387 801,285 728,211 z  "></path></g><g id="vol_off" transform="scale(0.2)" class="vol_off" style="display:none"><path d="M156,379 v247 h140 l210,173 l0,-592 l-210,173 H156 z  M920,652 788,520 920,384 852,320 720,452 588,320 520,384 652,520 520,652 588,716 720,584 852,716 920,652 788,520  "></path> </g></g>';
     1var GenolveSound=function(q){var b=this;null==q&&(q={});this.ver="2.0.0";this.fov=90;this.muted=!0;this.numfreqbins=256;var ca=0,da=0,t=484,U=0,N=57,H=null,ea=3,V=!1,O=!0,v={},E=0,W=70,fa,X,f=q.vpr;null==q.actionhost&&"https://www.genolve.com"==q.actionhost;var r,w="off",P,Y,D,Q,Z,aa=!0,F,m={},n=[];this.trueh=200;this.plO={};var d="notset";this.playExtra=this.muteExtra=this.muteTrans=null;this.doplots=!0;this.needSetup=!1;var u=0,R=0,G=document.getElementById("oscilloscope");if(null!=G){var p=G.getContext("2d");
     2var z=G.width;var A=G.height}var x=document.getElementById("plot");if(null!=x){var l=x.getContext("2d");l.font="28px serif";l.lineWidth=1;l.strokeStyle="green";l.rect(0,0,x.width,x.height);l.stroke()}null==f&&(f={name:"snd-stub",vprint:function(a,c){vv||console.log(c)},dumpvar:function(a){return JSON.stringify(a)},setValMode:{LOOP:"LOOP",LOOPz:"LOOPz",LOOPtoBOUND:"LOOPtoBOUND",LIMIT:"LIMIT",RANDOM:"RANDOM",MIDNORM:"MIDNORM",LOWNORM:"LOWNORM",HINORM:"HINORM"},setVal:function(a,c,e,h,g){e=parseFloat(e);
     3h=parseFloat(h);if(e>h){var k=h;h=e;e=k}k=h-e;k=g==this.setValMode.LOOPz?k+1:k;a=isNaN(a)?0:parseFloat(a);c=isNaN(c)?1:parseFloat(c);a+=c;if(a>h)if(g==this.setValMode.LIMIT)a=h;else if(g==this.setValMode.LOOPtoBOUND)a=e;else if(g==this.setValMode.LOOP||g==this.setValMode.LOOPz)for(;a>h;)a-=k;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+g+" must be LOOP/LIMIT/RANDOM");else if(a<e)if(g==this.setValMode.LIMIT)a=e;else if(g==this.setValMode.LOOPtoBOUND)a=h;else if(g==this.setValMode.LOOP||
     4g==this.setValMode.LOOPz)for(;a<e;)a+=k;else console.warn("GNLV_UTILS.setVal invalid setValMode:"+g+" must be LOOP/LIMIT/RANDOM");return a},d0:function(a){a=String(a).replace(/[^0-9\-\.]/g,"");return Math.round(parseFloat(a))},dd:function(a){return Math.round(100*parseFloat(a))/100},ddd:function(a){return Math.round(1E3*parseFloat(a))/1E3},d4:function(a){return Math.round(1E4*parseFloat(a))/1E4},parsejson:function(a){var c={};if(a.match(/^\{'/)||a.match(/^\[\{'/))a=a.replace(/'/g,'"');try{c=JSON.parse(a)}catch(e){console.warn("JSON parse error on["+
     5a+"]:"+e)}return c}});this.volsprite='<g id="vol_on_off" class="gnlv-clickable gnlv-vol-control" data-ver="1.1" data-target="default" onclick="document.gnlvSound.toggleVol(this)" transform="scale(.2)"><circle  cx="100" cy="100" r="100" fill="#DDDDDD"/><g id="vol_on" transform="scale(0.2)" class="vol_on"><path d="M156,379 v247 h140 l210,173 l0,-592 l-210,173 H156 z  M588,351 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 v0 c27,27 44,64 44,105 c0,41 -17,78 -44,105 c-12,12 -12,32 0,44 c6,6 14,9 22,9 c8,0 16,-3 22,-9 c38,-38 62,-91 62,-149 C650,442 626,389 588,351 z  M659,279 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 c45,45 73,108 73,177 c0,69 -28,131 -73,177 c-12,12 -12,32 0,44 c6,6 14,9 22,9 c8,0 16,-3 22,-9 c57,-57 92,-135 91,-221 C751,414 716,335 659,279 z  M728,211 c-12,-12 -32,-12 -44,0 c-12,12 -12,32 0,44 h0 c63,63 102,149 102,245 c0,96 -39,182 -101,245 c-12,12 -12,32 0,44 c6,6 14,9 22,9 s16,-3 22,-9 c74,-74 120,-176 120,-289 C847,387 801,285 728,211 z  "></path></g><g id="vol_off" transform="scale(0.2)" class="vol_off" style="display:none"><path d="M156,379 v247 h140 l210,173 l0,-592 l-210,173 H156 z  M920,652 788,520 920,384 852,320 720,452 588,320 520,384 652,520 520,652 588,716 720,584 852,716 920,652 788,520  "></path> </g></g>';
    56this.sndLibO={none:"none",drone:"https://www.genolve.com/svg/snd/drone-flying.mp3",train:"https://www.genolve.com/svg/snd/train-wheels.mp3",tick:"https://www.genolve.com/svg/snd/Tick.mp3",bells:"https://www.genolve.com/svg/snd/sleigh-bells-2ring.mp3","80svibe":"https://www.genolve.com/svg/snd/80s_vibe.mp3",rave:"https://www.genolve.com/svg/snd/rave_digger.mp3"};this.eventMapO={onmousemove:"mousemove",onfocusin:"focusin",onclick:"click",onmousedown:"mousedown",onmouseup:"mouseup",onbegin:"beginEvent",
    6 onend:"endEvent",onrepeat:"repeatEvent"};this.panningInterval=null;e.vprint("snd","   - =   gnlvSound loading   = - vpr:"+e.name);"function"!=typeof Howl&&(e.vprint("warn","= = = =missing Howler! loading now"),jQuery.getScript(q.actionhost+"/js/howler.js/dist/howler.min.js",function(){e.vprint("snd","3 3 3 3 3 3 3 3 3 3 3 3  howler loaded DONE  3 3 3 3 3 3 3 3 3 3 3 3")}));"function"!=typeof window.jsmediatags&&(e.vprint("warn","= = = =missing window.jsmediatags! loading now"),jQuery.getScript(q.actionhost+
    7 "/js/jsmediatags/dist/jsmediatags.min.js",function(){e.vprint("snd","3 3 3 3 3 3 3 3 3 3 3 3  jsmediatags loaded DONE  3 3 3 3 3 3 3 3 3 3 3 3")}));this.init=function(){q.volel&&b.registerVol(q.volel);if(q.preload){e.vprint("snd","PRELOAD["+d+"]:"+q.preload);var a={enable:!0,snd:"tlmusic",pl:d,playmode:"continuous",do3d:!1,file:q.preload,usemode:"record"};"none"==q.preload?window.setTimeout(function(){jQuery.event.trigger({type:"readyplayerone",message:"NO music to load, ready now",time:new Date})},
    8 500):b.preload(a)}};this.getMediaTags=function(a){"undefined"!=typeof eloop&&eloop.music&&window.jsmediatags?window.jsmediatags.read(a,{onSuccess:function(c){"none"==eloop.music.exturl;if(c&&c.tags&&c.tags.comment&&c.tags.comment.text){var f=c.tags.comment.text.split(/\r\n/,1);1==f.length&&(eloop.music.exturl=f[0].replace(/URL:\s*/,""))}f={artist:"unknown",album:"unknown",track:0,title:"unknown",fileLength:eloop.mp3length,genre:"unknown"};e.vprint("snd","getMediaTags returned:"+e.dumpvar(c));for(key in f)eloop.music[key]=
    9 c&&c.tags&&c.tags[key]?c.tags[key]:f[key];"undefined"==typeof SpotifyApi?e.vprint("warn","getMediaTags no spotify api!"):(SpotifyApi.thmb=eloop.thmb,SpotifyApi.updateCurTrack("normal",eloop.music))},onError:function(c){console.log(c)}}):e.vprint("warn","getMediaTags missing "+typeof window.jsmediatags+" or eloop missing!"+typeof eloop)};var H=function(a){return a?a-S:(new Date).getTime()-S},ba=function(a,c){e.vprint("error","ERROR X X sound["+a+"]:"+c)};this.resize=function(a){a?(b.winw=a.winw||1200,
    10 b.winh=a.winh||630,a.coordA&&b.plO[d]&&b.plO[d].volel&&b.plO[d].volel.transform("matrix(0.2 0 0 0.2 "+coordA.join(" ")+")")):(b.winw=b.winw||1200,b.winh=b.winh||630);b.aratio=b.winw/b.winh;b.camxshift=b.winw/2;b.camx=0;b.camy=b.winh/2;b.camz=-20;e.vprint("snd","sound resize= = = = = win w h:"+b.winw+","+b.winh+" aratio:"+b.aratio)};b.resize(q);this.panO={};this.mute=function(){e.vprint("snd","= = = = = global MUTE Sound["+d+"] muteTrans?"+(null!=b.muteTrans)+" extra?"+(null!=b.muteExtra));Howler.mute(!0);
    11 for(var a in b.plO[d].sndO)b.plO[d].sndO[a].pause();b.muted=!0;b.metronomeID&&(window.clearInterval(b.metronomeID),b.metronomeID=null);b.beatWorkerID&&(window.clearInterval(b.beatWorkerID),b.beatWorkerID=null);null!=b.muteTrans&&b.muteTrans(d);null!=b.muteExtra&&b.muteExtra()};this.play=function(){e.vprint("snd","= = = = = global PLAY Sound["+d+"] extra?"+(null!=b.playExtra));b.muted=!1;Howler.mute(!1);for(var a in b.plO[d].sndO)b.plO[d].sndO[a].play();this.ana();null!=b.playExtra&&b.playExtra()};
    12 this.volume=function(a){Howler.volume(a)};this.addVol=function(a){if(null==a)e.vprint("snd","sound addVol["+d+"] abort, missing parent obj!");else{var c=a.select("#vol_on_off"),f=!0;I(d);c&&(oldver=c.attr("data-ver"),oldver=null==oldver?0:parseFloat(oldver),e.vprint("snd","addVol["+d+"] sound  found existing vol el! ver:"+oldver),1.1>oldver?c.remove():f=!1);f&&(e.vprint("snd","addVol["+d+"] sound new volsprite and hide!"),a.append(Snap.parse(b.volsprite)),c=a.select("#vol_on_off"),c.hasClass("gnlv-gone")||
    13 c.addClass("gnlv-gone"),b.plO[d].volState="vol_hidden");b.plO[d].volel=c;b.plO[d].voldomel=c.node;return c}};this.showVol=function(a){b.plO[d].volel&&b.plO[d].volel.attr&&"function"==typeof b.plO[d].volel.removeClass?(e.vprint("snd","showVol["+d+"] "+a+" have func?"+typeof b.plO[d].volel.removeClass),null==a||1==a?b.plO[d].volel.removeClass("gnlv-gone"):b.plO[d].volel.addClass("gnlv-gone")):e.vprint("warn","showVol["+d+"] = = = found no vol element at:"+b.plO[d].volel)};this.registerVol=function(a){a=
    14 a?a:q.volel;null==a&&(a="#vol_on_off");var c=Snap.select(a);e.vprint("snd","registerVol["+d+"]found ["+a+"]?"+typeof c);I(d);c&&c.attr?(e.vprint("snd","registerVol["+d+"] found it:"+c.attr("id")+", have removeClass?"+typeof c.removeClass),b.plO[d].volel=c,b.plO[d].voldomel=c.node):e.vprint("warn","registerVol["+d+"] X X X found no vol element at:"+a)};this.toggleVol=function(a){var c;"string"==typeof a?b.plO[d].volState="vol_on"==a?"vol_off":"vol_on":"object"==typeof a&&(e.vprint("snd","toggleVol[ event:"+
    15 a+"]  nodeType?:"+a.nodeType+" id?"+a.id),newapl=a.getAttribute("data-target"),e.vprint("snd","toggleVol[ event:"+a+"]  playlist:"+newapl),I(newapl));b.plO[d].voldomel?c=b.plO[d].voldomel.getAttribute("id"):e.vprint("snd","toggleVol[ event:"+a+"] NO voldomel");"vol_on"==b.plO[d].volState?(b.plO[d].volState="vol_off",b.plO[d].voldomel.querySelector(".vol_on").style.display="none",b.plO[d].voldomel.querySelector(".vol_off").style.display="block",b.mute()):(b.needSetup&&(b.needSetup=!1,"undefined"!=
    16 typeof gnlvScroll&&1==q.doScroll?(gnlvScroll.doSetup(),"undefined"!=typeof eloop&&"running"==eloop.ani_state&&eloop.mkVidtimer()):e.vprint("warn","toggleVol X X X sound had flag for doSetup but no gnlvScroll defined!"+typeof gnlvScroll+" or flagged to skip:"+q.doScroll)),b.plO[d].volState="vol_on",b.plO[d].voldomel.querySelector(".vol_on").style.display="block",b.plO[d].voldomel.querySelector(".vol_off").style.display="none","undefined"!=typeof eloop&&eloop.music&&1==eloop.music.muzvidlink&&b.restart(eloop.anielapsed()),
    17 b.play());"undefined"!=typeof gnlvScroll&&gnlvScroll.changeDiv(d,b.plO[d].volState);e.vprint("snd","toggleVol[cur:"+d+"]["+c+"]:"+b.plO[d].volState)};this.getVolState=function(){I(d);return b.plO[d].volState};this.volColor=function(){var a=Q?"#FFFFFF":"#000000";Q=!Q;b.plO[d].volel.attr({fill:a})};this.volMarquee=function(a,c,f){zmq=b.plO[d].volel.select("#track_marquee");"auto"!=c?null!=zmq&&zmq.remove():(e.vprint("snd","= = = = = = = volMarquee marquee mode:"+c+" volel:"+b.plO[d].volel.attr("id")+
    18 " marquee el?"+zmq+" track info:"+f),null==zmq?(e.vprint("snd","= = = = = = = volMarquee inserted marquee"),b.plO[d].volel.append(Snap.parse(a.replace(/CONTENT/,f))),zmq=b.plO[d].volel.select("#track_marquee"),mycirc=b.plO[d].volel.select("circle"),mycirc.before(zmq)):zmq.select("textPath").node.innerHTML=f)};var I=function(a,c){"notset"==a&&(a="default");e.vprint("snd","changeapl mode:"+c+" playlist "+d+" -> "+a);a==d&&"create"!=c?e.vprint("snd","changeapl playlist  same!"+a):null==a||null==b.plO[a]||
    19 "create"==c?(e.vprint("snd","changeapl X X X X playlist missing!  >"+a+"<  or mode create?"+c),d=a,b.plO[d]={},b.plO[d].sndO={},b.plO[d].volState="vol_hidden"):("vol_on"==b.plO[d].volState&&b.toggleVol("vol_off"),d=a,"undefined"!=typeof gnlvScroll&&gnlvScroll.changeDiv(d,b.plO[d].volState))};this.radio=function(a){b.start({enable:!0,snd:"myradio",file:a,format:["mp3","aac"],do3d:!1,playmode:"normal"})};this.ana=function(a){if(null!=a&&(w=a,e.vprint("snd","ana MODE CHANGE:"+w+" muted?"+b.muted+" save for later"),
    20 b.muted))return;"off"==w?p&&(p.clearRect(0,0,y,z),p.fillStyle="red",p.fillRect(0,0,y,z)):null==r&&(e.vprint("snd","ana -------------------------------------------------- CREATE --------------------------------------------------Analyser:"+w+" bins:"+b.numfreqbins),r=Howler.ctx.createAnalyser(),r.maxDecibels=-20,r.fftSize=2*b.numfreqbins,"onbeat"===w?(a=Howler.ctx.createBiquadFilter(),a.type="lowpass",Howler.masterGain.connect(a),a.connect(r),e.vprint("snd","ana   LOWPASS FILTER ADDED")):Howler.masterGain.connect(r),
    21 E&&(y=E.width,z=E.height),aa=S=(new Date).getTime());"headless"===w?(this.bufferLength=B=r.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.timeArray=new Uint8Array(this.bufferLength)):"onbeat"===w?(this.bufferLength=B=r.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.timeArray=new Uint8Array(this.bufferLength),e.vprint("snd","start beatWorker at interval:10"),b.beatWorkerID&&window.clearInterval(b.beatWorkerID),b.beatWorkerID=window.setInterval(ha,10),
    22 e.vprint("snd","start metronome at period - - - - - - - - - - - :"+t),b.metronomeID&&window.clearInterval(b.metronomeID),b.metronomeID=window.setTimeout(ca,t)):"sinewave"===w?(B=r.frequencyBinCount,L=new Uint8Array(B),r.getByteTimeDomainData(L),da()):"frequencybars"==w&&(B=M=r.frequencyBinCount,T=new Uint8Array(M),p.clearRect(0,0,y,z),ea());e.vprint("snd","ana DONE anaMode [ "+w+" ]  num bins:"+B+" - - - - - - - - - - - -  - - - - - --  - - - - - --  -- - ");e.vprint("snd","ana DONE  - - - - - - - - - - - -  - - - - - --  - - - - - --  -- - ")};
    23 this.getAna=function(){if(null==r||"off"==w||b.muted)return null;r.getByteFrequencyData(this.dataArray);r.getByteTimeDomainData(this.timeArray);return{data:{freq:this.dataArray,time:this.timeArray,metro:(H()-C)/t,size:this.bufferLength}}};var ha=function(){r.getByteFrequencyData(b.dataArray);var a=b.dataArray,c=b.bufferLength;Y++;X=((new Date).getTime()-aa)/Y;var f=[],h,g=0,k=0,A=0,F=0,W=0;for(h=0;h<c;h++)f[h]=e.setVal(a[h]/255,0,0,1,e.setValMode.LIMIT),W=Math.max(W,f[h]),g+=f[h],3>h?F+=f[h]:6>h?
    24 A+=f[h]:k+=f[h];m.ave=g/c;m.max=W;m.bass=F/3;m.mid=A/3;m.treb=k/3;U=!1;m.prevh2&&m.bass<m.prevh&&m.prevh<m.prevh2&&1==V&&(V=!1,U=!0,D=100*m.prevh2,a={bar:D,ts:m.prevt2},D<J?O(a,"cyan"):(n.push(a),J=(3*J+(D-10))/4));m.bass>m.prevh&&m.prevh>m.prevh2&&(V=!0);m.prevh2=m.prevh;m.prevt2=m.prevt;m.prevh=m.bass;m.prevt=H()},ca=function(){C=H();O({ts:C,bar:R},"black");e.vprint("snd",vv?"":"metronome - - - - - - - - - - - TICK at["+C+"] period:"+t+" beat:"+n.length);$.event.trigger({type:"beat",keyoff:"bass",
    25 time:new Date});if(0>Z--){Z=3;var a=(new Date).getTime();e.vprint("snd",vv?"":"metronome evalBeats - START -  period:"+t+" num beats:"+n.length);0==n.length&&(J*=.5);var c=99999999999999;b.doplots&&(u=P/10-N,plotw=(H(a)-P)/10,l.fillStyle=K?"yellow":"orange",l.fillRect(u,0,plotw,5+5*K));P=H(a);K=!K;if(0<n.length){for(var f=0;f<n.length;f++){var h=R-n[f].bar;h=0>h?0:h*h;var g=C-n[f].ts;g*=g;h=g+h;0<f&&(g=n[f].ts-n[f-1].ts,g=10*Math.round(g/10),v[g]=null==v[g]?1:v[g]+1);1<f&&(g=n[f].ts-n[f-2].ts,g=10*
    26 Math.round(g/10),v[g]=null==v[g]?1:v[g]+1);2<f&&(g=n[f].ts-n[f-3].ts,g=10*Math.round(g/10),v[g]=null==v[g]?1:v[g]+1);if(h<c){var k=f;c=h}O(n[f],"sand")}O(n[k],"red");R=n[k].bar;e.vprint("snd",vv?"":"metronome evalBeats histO:"+e.dumpvar(v));g=ia(v);k="nada";e.vprint("snd",vv?"":"metronome evalBeats gotback:"+e.dumpvar(g));g&&1<g.length&&(g=g.sort(ja),t=Math.round(60/g[0].tempo*1E3),k=g[0].tempo);c=t-(C-n[n.length-1].ts);G=t;t=c;e.vprint("snd",vv?"":"metronome evalBeats best:"+k+"->[ "+G+" ] THIS delay:"+
    27 t+" DUMP tempos:"+e.dumpvar(g));b.doplots&&(u=n[n.length-1].ts/10-N,plotw=G/10,l.fillStyle="green",l.fillRect(u,16,plotw,2));n.length=0;e.vprint("snd",vv?"":"metronome evalBeats DONE for["+C+"]: took:"+((new Date).getTime()-a))}}b.metronomeID&&window.clearInterval(b.metronomeID);b.metronomeID=window.setTimeout(ca,t);null!=G&&(t=G,G=null)},ja=function(a,c){var f=0;a.count<c.count?f=1:a.count>c.count&&(f=-1);return f},ia=function(a){var c,f=[];for(c in a){var h=a[c];var g=60/(c/1E3);g=Math.round(g);
    28 if(0===g)return;for(;90>g;)g*=2;for(;180<g;)g/=2;g=Math.round(g);f.some(function(k){if(k.tempo===g)return k.count+=h})||f.push({tempo:g,count:h})}return f},O=function(a,c){b.doplots&&(u=a.ts/10-N,ploty="black"==c?0:15,ploth="black"==c?a.bar:a.bar-15,l.fillStyle=c,l.fillRect(u,ploty,1,ploth),u>x.width&&(N+=x.width,l.fillStyle="white",l.fillRect(1,1,x.width-2,x.height-2)))},ea=function(){b.muted||(drawVisual=requestAnimationFrame(ea));r.getByteFrequencyData(T);p.fillStyle="rgb(0, 0, 0)";p.fillRect(0,
    29 0,y,z);for(var a=y/M,c,f=0,h=0;h<M;h++)c=T[h],p.fillStyle="rgb("+(c+100)+",50,50)",p.fillRect(f,z-c,a,c),f+=a+1;U?(pnbpix=333/17,l.fillStyle="rgb(200,200,0)",l.fillRect(u,D-1,pnbpix,1),l.fillStyle=beatStyle):(D=10,l.fillStyle="rgb(50,50,50)");l.fillRect(u,0,1,D);l.fillStyle="rgb(200, 200, 200)";l.fillRect(10,25,250,35);l.fillStyle="rgb(0,0,0)";l.fillText("cps:"+Math.round(X)+" pbp:333",10,50);u+=1;u>x.width&&(u=0,l.fillStyle="white",l.fillRect(1,1,x.width-2,x.height-2))},da=function(){b.muted||requestAnimationFrame(da);
    30 r.getByteTimeDomainData(L);p.fillStyle="rgb(200, 200, 200)";p.fillRect(0,0,y,z);p.lineWidth=2;p.strokeStyle="rgb(0, 0, 0)";p.beginPath();for(var a=1*y/B,c=0,f=0;f<B;f++){var h=L[f]/128*z/2;0===f?p.moveTo(c,h):p.lineTo(c,h);c+=a}p.lineTo(y,z/2);p.stroke()};this.restart=function(a,c){e.vprint("snd","= = restart");if(null!=b.plO[d])if(null==a&&(a=0),null!=c)b.plO[d].sndO[c].seek(a);else for(c in b.plO[d].sndO)b.plO[d].sndO[c].seek(a)};this.preload=function(a){e.vprint("snd","=preload("+a.file+","+a.snd+
    31 ","+a.pl+"):");a.preloading=!0;b.start(a)};this.start=function(a){d=null==a.pl?"default":a.pl;I(d,"create");e.vprint("snd","= = = = = gnvlSound.START["+d+"],  eloop?"+typeof eloop+":");null==b.plO[d]?e.vprint("snd","= = = = = X X X playlist[ "+d+" ] mia"):e.vprint("snd","= = = = =  cur volel?"+typeof b.plO[d].volel+", param vol?"+typeof a.volel+" sndO:"+e.dumpvar(b.plO[d].sndO));null==a.snd&&(a.snd="tlmusic");a.volel&&(b.plO[d].volel=a.volel,b.plO[d].voldomel=a.volel.node,delete a.volel);e.vprint("snd",
    32 "= = = = =  final volel?"+typeof b.plO[d].volel+":");"undefined"==typeof b.plO[d].volel&&b.registerVol();"vol_hidden"==b.plO[d].volState&&("idle2play"==a.usemode?b.plO[d].volel.removeClass("gnlv-gone"):("undefined"==typeof eloop||"stub"!=eloop.version)&&b.plO[d].volel.removeClass("gnlv-gone"),a.preloading&&"idle2play"!=a.usemode||b.toggleVol("vol_off"));if(a.enable){e.vprint("snd","= = = = = CREATE Sound["+a.snd+"] params:"+e.dumpvar(a));var c="continuous"==a.playmode?!0:!1;if(null!=this.plO[d].sndO[a.snd]){var f=
    33 this.plO[d].sndO[a.snd].src==a.file;e.vprint("snd","= old sound existed same? "+f+" :old:"+this.plO[d].sndO[a.snd].src+" new:"+a.file);if(f)return;this.plO[d].sndO[a.snd].unload()}c={src:[a.file],loop:c,autoplay:!1,preload:!0,onloaderror:ba,onplayerror:ba};a.format&&(c.format=a.format);a.html5&&(c.html5=a.html5,e.vprint("snd","X X looks like html5? "+a.html5+" NO ANALYZER"));a.file.match(/\.[a-zA-Z0-9]{3}$/)||(e.vprint("snd","no extension guess = AUTOFORMAT mp3"),c.format=["mp3"]);this.plO[d].sndO[a.snd]=
    34 new Howl(c);this.plO[d].sndO[a.snd].src=a.file;this.plO[d].sndO[a.snd].once("load",function(h,g){e.vprint("snd","LOAD DONE:sound tag:"+a.snd+" arg1"+h+" arg2:"+g);"tlmusic"==a.snd&&a.preloading&&jQuery.event.trigger({type:"readyplayerone",message:"tlmusic is ready for action",time:new Date})});e.vprint("snd","have audiocontext:"+Howler.ctx);if(a.do3d)b.panO[a.ani]=b.setupPan(a.snd,0,0),null==b.panningInterval&&(e.vprint("snd","= = = = = START Panner Interval= = = = = "),Howler.pos(this.camx,this.camy,
    35 this.camz),b.panningInterval=window.setInterval(ka,100));else if(a.playmode.match(/^on/))for(playmodeA=a.playmode.split(/,/),e.vprint("snd",vv?"":"= = = = = EVENT: "+a.playmode+" : split:"+playmodeA.length+" for "+a.ani),ii=0;ii<playmodeA.length;ii++)myp=fa(a.ani),anelA=myp.el.querySelectorAll("animateTransform"),anmtA=myp.el.querySelectorAll("*[id^=anmt_]"),e.vprint("snd",vv?"":"on-event= = = = = found num animateTransform:"+anelA.length+" num id anmt:"+anmtA.length),0<anelA.length?anel=anelA[0]:
    36 0<anmtA.length&&(anel=anmtA[0]),anel.addEventListener(b.eventMapO[playmodeA[ii]],function(h){console.log("i repeated:"+h.detail);b.plO[d].sndO[a.snd].play()});else e.vprint("snd","= = = = = non-3d sound autoplay skip")}};var fa=function(a){var c=200,f=0,h=200;var g=document.getElementById(a);if(null==g)e.vprint("warn","gnlvPosById["+a+"] not found!");else{var k=g.getBoundingClientRect();var A=b.fov*Math.PI/180;var F=k.height;F=A*F/b.winh;c=b.trueh/Math.tan(F);A*=b.aratio;curx=k.x+k.width/2-b.camxshift;
    37 A=A*curx/b.winw;f=c*Math.tan(A);h=k.y;e.vprint("snd",vv?"":"gnlvPosById["+a+"] hasPan?"+b.panO[a]+" found el?"+typeof g+" x:"+parseInt(k.x)+" truex:"+f+" theta:"+F+" phi:"+A+" dist:"+parseInt(c))}return{x:f,y:h,z:c,el:g}},ka=function(){for(key in b.panO)myp=fa(key),0<b.panO[key].indexOf(".")?b.plO[d].sndO[b.panO[key.split(".")[0]]].pos(myp.x+.5,myp.y+.5,myp.z,key.split(".")[1]):b.plO[d].sndO[b.panO[key]].pos(myp.x+.5,myp.y+.5,myp.z)};this.setupPan=function(a,c,f,h){sound=b.plO[d].sndO[a];var g=null==
    38 h?sound.play():sound.play(h);sound.once("play",function(){sound.pos(c+.5,f+.5,-.5,g);sound.volume(1,g);sound.pannerAttr({panningModel:"HRTF",refDistance:100,rolloffFactor:2.5,distanceModel:"linear"},g)}.bind(this),g);return null==h?a:a+"."+h};this.init()};
     7onend:"endEvent",onrepeat:"repeatEvent"};this.panningInterval=null;f.vprint("snd","   - =   gnlvSound loading   = - vpr:"+f.name);"function"!=typeof Howl&&(f.vprint("warn","= = = =missing Howler! loading now"),jQuery.getScript(q.actionhost+"/js/howler.js/dist/howler.min.js",function(){f.vprint("snd","3 3 3 3 3 3 3 3 3 3 3 3  howler loaded DONE  3 3 3 3 3 3 3 3 3 3 3 3")}).done(function(){}));"function"!=typeof window.jsmediatags&&(f.vprint("warn","= = = =missing window.jsmediatags! loading now"),
     8jQuery.getScript(q.actionhost+"/js/jsmediatags/dist/jsmediatags.min.js",function(){f.vprint("snd","3 3 3 3 3 3 3 3 3 3 3 3  jsmediatags loaded DONE  3 3 3 3 3 3 3 3 3 3 3 3")}));this.init=function(){f.vprint("snd","init sound");q.volel&&b.registerVol(q.volel);if(q.preload){f.vprint("snd","init - PRELOAD["+d+"]:"+q.preload);var a={enable:!0,snd:"tlmusic",pl:d,playmode:"continuous",do3d:!1,file:q.preload,usemode:"record"};"none"==q.preload?window.setTimeout(function(){jQuery.event.trigger({type:"readyplayerone",
     9message:"NO music to load, ready now",time:new Date})},500):b.preload(a)}};this.getMediaTags=function(a){"undefined"!=typeof eloop&&eloop.music&&window.jsmediatags?window.jsmediatags.read(a,{onSuccess:function(c){"none"==eloop.music.exturl;if(c&&c.tags&&c.tags.comment&&c.tags.comment.text){var e=c.tags.comment.text.split(/\r\n/,1);1==e.length&&(eloop.music.exturl=e[0].replace(/URL:\s*/,""))}e={artist:"unknown",album:"unknown",track:0,title:"unknown",fileLength:eloop.mp3length,genre:"unknown"};f.vprint("snd",
     10"getMediaTags returned:"+f.dumpvar(c));for(key in e)eloop.music[key]=c&&c.tags&&c.tags[key]?c.tags[key]:e[key];"undefined"==typeof SpotifyApi?f.vprint("warn","getMediaTags no spotify api!"):(SpotifyApi.thmb=eloop.thmb,SpotifyApi.updateCurTrack("normal",eloop.music))},onError:function(c){console.log(c)}}):f.vprint("warn","getMediaTags missing "+typeof window.jsmediatags+" or eloop missing!"+typeof eloop)};var J=function(a){return a?a-X:(new Date).getTime()-X},ha=function(a,c){f.vprint("error","ERROR X X sound["+
     11a+"]:"+c)};this.resize=function(a){a?(b.winw=a.winw||1200,b.winh=a.winh||630,a.coordA&&b.plO[d]&&b.plO[d].volel&&b.plO[d].volel.transform("matrix(0.2 0 0 0.2 "+coordA.join(" ")+")")):(b.winw=b.winw||1200,b.winh=b.winh||630);b.aratio=b.winw/b.winh;b.camxshift=b.winw/2;b.camx=0;b.camy=b.winh/2;b.camz=-20;f.vprint("snd","sound resize= = = = = win w h:"+b.winw+","+b.winh+" aratio:"+b.aratio)};b.resize(q);this.panO={};this.mute=function(){f.vprint("snd","= = = = = global MUTE Sound["+d+"] muteTrans?"+
     12(null!=b.muteTrans)+" extra?"+(null!=b.muteExtra));Howler.mute(!0);for(var a in b.plO[d].sndO)b.plO[d].sndO[a].pause();b.muted=!0;b.metronomeID&&(window.clearInterval(b.metronomeID),b.metronomeID=null);b.beatWorkerID&&(window.clearInterval(b.beatWorkerID),b.beatWorkerID=null);null!=b.muteTrans&&b.muteTrans(d);null!=b.muteExtra&&b.muteExtra()};this.play=function(){f.vprint("snd","= = = = = global PLAY Sound["+d+"] extra?"+(null!=b.playExtra));b.muted=!1;Howler.mute(!1);for(var a in b.plO[d].sndO)f.vprint("snd",
     13"= = = = =  PLAY["+d+"]["+a+"]"),"none"!=b.plO[d].sndO[a].playmode&&"continuous"==b.plO[d].sndO[a].playmode&&b.plO[d].sndO[a].play();this.ana();null!=b.playExtra&&b.playExtra()};this.volume=function(a,c){f.vprint("snd","= = = = = volume Sound["+a+"] found?"+(b.plO[d]&&b.plO[d].sndO[a])+" vol:"+c);b.plO[d]&&b.plO[d].sndO[a]&&b.plO[d].sndO[a].volume(parseFloat(c)/10)};this.global_vol=function(a){Howler.volume(a)};this.addVol=function(a){if(null==a)f.vprint("snd","sound addVol["+d+"] abort, missing parent obj!");
     14else{var c=a.select("#vol_on_off"),e=!0;K(d);c&&(oldver=c.attr("data-ver"),oldver=null==oldver?0:parseFloat(oldver),f.vprint("snd","addVol["+d+"] sound  found existing vol el! ver:"+oldver),1.1>oldver?c.remove():e=!1);e&&(f.vprint("snd","addVol["+d+"] sound new volsprite and hide!"),a.append(Snap.parse(b.volsprite)),c=a.select("#vol_on_off"),c.hasClass("gnlv-gone")||c.addClass("gnlv-gone"),b.plO[d].volState="vol_hidden");b.plO[d].volel=c;b.plO[d].voldomel=c.node;return c}};this.showVol=function(a){b.plO[d].volel&&
     15b.plO[d].volel.attr&&"function"==typeof b.plO[d].volel.removeClass?(f.vprint("snd","showVol["+d+"] "+a+" have func?"+typeof b.plO[d].volel.removeClass),null==a||1==a?b.plO[d].volel.removeClass("gnlv-gone"):b.plO[d].volel.addClass("gnlv-gone")):f.vprint("warn","showVol["+d+"] = = = found no vol element at:"+b.plO[d].volel)};this.registerVol=function(a){a=a?a:q.volel;null==a&&(a="#vol_on_off");var c=Snap.select(a);f.vprint("snd","registerVol["+d+"]found ["+a+"]?"+typeof c);K(d);c&&c.attr?(f.vprint("snd",
     16"registerVol["+d+"] found it:"+c.attr("id")+", have removeClass?"+typeof c.removeClass),b.plO[d].volel=c,b.plO[d].voldomel=c.node):f.vprint("warn","registerVol["+d+"] X X X found no vol element at:"+a)};this.toggleVol=function(a){var c;"string"==typeof a?b.plO[d].volState="vol_on"==a?"vol_off":"vol_on":"object"==typeof a&&(f.vprint("snd","toggleVol[ event:"+a+"]  nodeType?:"+a.nodeType+" id?"+a.id),newapl=a.getAttribute("data-target"),f.vprint("snd","toggleVol[ event:"+a+"]  playlist:"+newapl),K(newapl));
     17b.plO[d].voldomel?c=b.plO[d].voldomel.getAttribute("id"):f.vprint("snd","toggleVol[ event:"+a+"] NO voldomel");"vol_on"==b.plO[d].volState?(b.plO[d].volState="vol_off",b.plO[d].voldomel.querySelector(".vol_on").style.display="none",b.plO[d].voldomel.querySelector(".vol_off").style.display="block",b.mute()):(b.needSetup&&(b.needSetup=!1,"undefined"!=typeof gnlvScroll&&1==q.doScroll?(gnlvScroll.doSetup(),"undefined"!=typeof eloop&&"running"==eloop.ani_state&&eloop.mkVidtimer()):f.vprint("warn","toggleVol X X X sound had flag for doSetup but no gnlvScroll defined!"+
     18typeof gnlvScroll+" or flagged to skip:"+q.doScroll)),b.plO[d].volState="vol_on",b.plO[d].voldomel.querySelector(".vol_on").style.display="block",b.plO[d].voldomel.querySelector(".vol_off").style.display="none","undefined"!=typeof eloop&&eloop.music&&1==eloop.music.muzvidlink&&b.restart(eloop.anielapsed()),b.play());"undefined"!=typeof gnlvScroll&&gnlvScroll.changeDiv(d,b.plO[d].volState);f.vprint("snd","toggleVol[cur:"+d+"]["+c+"]:"+b.plO[d].volState)};this.getVolState=function(){K(d);return b.plO[d].volState};
     19this.volColor=function(){var a=V?"#FFFFFF":"#000000";V=!V;b.plO[d].volel.attr({fill:a})};this.volMarquee=function(a,c,e){zmq=b.plO[d].volel.select("#track_marquee");"auto"!=c?null!=zmq&&zmq.remove():(f.vprint("snd","= = = = = = = volMarquee marquee mode:"+c+" volel:"+b.plO[d].volel.attr("id")+" marquee el?"+zmq+" track info:"+e),null==zmq?(f.vprint("snd","= = = = = = = volMarquee inserted marquee"),b.plO[d].volel.append(Snap.parse(a.replace(/CONTENT/,e))),zmq=b.plO[d].volel.select("#track_marquee"),
     20mycirc=b.plO[d].volel.select("circle"),mycirc.before(zmq)):zmq.select("textPath").node.innerHTML=e)};var K=function(a,c){"notset"==a&&(a="default");f.vprint("snd","changeapl mode:"+c+" playlist "+d+" -> "+a);a==d&&"create"!=c&&null!=b.plO[a]?f.vprint("snd","changeapl noop, playlist  same! "+a):null==a||null==b.plO[a]||"create"==c?(f.vprint("snd","changeapl X X X X INIT X X X X   apl["+a+"]  not initialised? >"+b.plO[a]+"< or  mode create?"+c),d=a,b.plO[d]={},b.plO[d].sndO={},b.plO[d].volState="vol_hidden"):
     21(f.vprint("snd","changeapl, new playlist! ["+d+"]volState"+b.plO[d].volState),"vol_on"==b.plO[d].volState&&b.toggleVol("vol_off"),d=a,"undefined"!=typeof gnlvScroll&&gnlvScroll.changeDiv(d,b.plO[d].volState))};this.radio=function(a){b.start({enable:!0,snd:"myradio",file:a,format:["mp3","aac"],do3d:!1,playmode:"normal"})};this.ana=function(a){if(null!=a&&(w=a,f.vprint("snd","ana MODE CHANGE:"+w+" muted?"+b.muted+" save for later"),b.muted))return;"off"==w?p&&(p.clearRect(0,0,z,A),p.fillStyle="red",
     22p.fillRect(0,0,z,A)):null==r&&(f.vprint("snd","ana -------------------------------------------------- CREATE --------------------------------------------------Analyser:"+w+" bins:"+b.numfreqbins),r=Howler.ctx.createAnalyser(),r.maxDecibels=-20,r.fftSize=2*b.numfreqbins,"onbeat"===w?(a=Howler.ctx.createBiquadFilter(),a.type="lowpass",Howler.masterGain.connect(a),a.connect(r),f.vprint("snd","ana   LOWPASS FILTER ADDED")):Howler.masterGain.connect(r),G&&(z=G.width,A=G.height),fa=X=(new Date).getTime());
     23"headless"===w?(this.bufferLength=D=r.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.timeArray=new Uint8Array(this.bufferLength)):"onbeat"===w?(this.bufferLength=D=r.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.timeArray=new Uint8Array(this.bufferLength),f.vprint("snd","start beatWorker at interval:10"),b.beatWorkerID&&window.clearInterval(b.beatWorkerID),b.beatWorkerID=window.setInterval(pa,10),f.vprint("snd","start metronome at period - - - - - - - - - - - :"+
     24t),b.metronomeID&&window.clearInterval(b.metronomeID),b.metronomeID=window.setTimeout(ia,t)):"sinewave"===w?(D=r.frequencyBinCount,P=new Uint8Array(D),r.getByteTimeDomainData(P),ja()):"frequencybars"==w&&(D=Q=r.frequencyBinCount,Y=new Uint8Array(Q),p.clearRect(0,0,z,A),ka());f.vprint("snd","ana DONE anaMode [ "+w+" ]  num bins:"+D+" - - - - - - - - - - - -  - - - - - --  - - - - - --  -- - ");f.vprint("snd","ana DONE  - - - - - - - - - - - -  - - - - - --  - - - - - --  -- - ")};this.getAna=function(){if(null==
     25r||"off"==w||b.muted)return null;r.getByteFrequencyData(this.dataArray);r.getByteTimeDomainData(this.timeArray);return{data:{freq:this.dataArray,time:this.timeArray,metro:(J()-E)/t,size:this.bufferLength}}};var pa=function(){r.getByteFrequencyData(b.dataArray);var a=b.dataArray,c=b.bufferLength;da++;ca=((new Date).getTime()-fa)/da;var e=[],h,g=0,k=0,y=0,B=0,C=0;for(h=0;h<c;h++)e[h]=f.setVal(a[h]/255,0,0,1,f.setValMode.LIMIT),C=Math.max(C,e[h]),g+=e[h],3>h?B+=e[h]:6>h?y+=e[h]:k+=e[h];m.ave=g/c;m.max=
     26C;m.bass=B/3;m.mid=y/3;m.treb=k/3;Z=!1;m.prevh2&&m.bass<m.prevh&&m.prevh<m.prevh2&&1==aa&&(aa=!1,Z=!0,F=100*m.prevh2,a={bar:F,ts:m.prevt2},F<N?S(a,"cyan"):(n.push(a),N=(3*N+(F-10))/4));m.bass>m.prevh&&m.prevh>m.prevh2&&(aa=!0);m.prevh2=m.prevh;m.prevt2=m.prevt;m.prevh=m.bass;m.prevt=J()},ia=function(){E=J();S({ts:E,bar:W},"black");f.vprint("snd",vv?"":"metronome - - - - - - - - - - - TICK at["+E+"] period:"+t+" beat:"+n.length);$.event.trigger({type:"beat",keyoff:"bass",time:new Date});if(0>ea--){ea=
     273;var a=(new Date).getTime();f.vprint("snd",vv?"":"metronome evalBeats - START -  period:"+t+" num beats:"+n.length);0==n.length&&(N*=.5);var c=99999999999999;b.doplots&&(u=U/10-R,plotw=(J(a)-U)/10,l.fillStyle=O?"yellow":"orange",l.fillRect(u,0,plotw,5+5*O));U=J(a);O=!O;if(0<n.length){for(var e=0;e<n.length;e++){var h=W-n[e].bar;h=0>h?0:h*h;var g=E-n[e].ts;g*=g;h=g+h;0<e&&(g=n[e].ts-n[e-1].ts,g=10*Math.round(g/10),v[g]=null==v[g]?1:v[g]+1);1<e&&(g=n[e].ts-n[e-2].ts,g=10*Math.round(g/10),v[g]=null==
     28v[g]?1:v[g]+1);2<e&&(g=n[e].ts-n[e-3].ts,g=10*Math.round(g/10),v[g]=null==v[g]?1:v[g]+1);if(h<c){var k=e;c=h}S(n[e],"sand")}S(n[k],"red");W=n[k].bar;f.vprint("snd",vv?"":"metronome evalBeats histO:"+f.dumpvar(v));g=qa(v);k="nada";f.vprint("snd",vv?"":"metronome evalBeats gotback:"+f.dumpvar(g));g&&1<g.length&&(g=g.sort(ra),t=Math.round(60/g[0].tempo*1E3),k=g[0].tempo);c=t-(E-n[n.length-1].ts);H=t;t=c;f.vprint("snd",vv?"":"metronome evalBeats best:"+k+"->[ "+H+" ] THIS delay:"+t+" DUMP tempos:"+g);
     29b.doplots&&(u=n[n.length-1].ts/10-R,plotw=H/10,l.fillStyle="green",l.fillRect(u,16,plotw,2));n.length=0;f.vprint("snd",vv?"":"metronome evalBeats DONE for["+E+"]: took:"+((new Date).getTime()-a))}}b.metronomeID&&window.clearInterval(b.metronomeID);b.metronomeID=window.setTimeout(ia,t);null!=H&&(t=H,H=null)},ra=function(a,c){var e=0;a.count<c.count?e=1:a.count>c.count&&(e=-1);return e},qa=function(a){var c,e=[];for(c in a){var h=a[c];var g=60/(c/1E3);g=Math.round(g);if(0===g)return;for(;90>g;)g*=2;
     30for(;180<g;)g/=2;g=Math.round(g);e.some(function(k){if(k.tempo===g)return k.count+=h})||e.push({tempo:g,count:h})}return e},S=function(a,c){b.doplots&&(u=a.ts/10-R,ploty="black"==c?0:15,ploth="black"==c?a.bar:a.bar-15,l.fillStyle=c,l.fillRect(u,ploty,1,ploth),u>x.width&&(R+=x.width,l.fillStyle="white",l.fillRect(1,1,x.width-2,x.height-2)))},ka=function(){b.muted||(drawVisual=requestAnimationFrame(ka));r.getByteFrequencyData(Y);p.fillStyle="rgb(0, 0, 0)";p.fillRect(0,0,z,A);for(var a=z/Q,c,e=0,h=0;h<
     31Q;h++)c=Y[h],p.fillStyle="rgb("+(c+100)+",50,50)",p.fillRect(e,A-c,a,c),e+=a+1;Z?(pnbpix=333/17,l.fillStyle="rgb(200,200,0)",l.fillRect(u,F-1,pnbpix,1),l.fillStyle=beatStyle):(F=10,l.fillStyle="rgb(50,50,50)");l.fillRect(u,0,1,F);l.fillStyle="rgb(200, 200, 200)";l.fillRect(10,25,250,35);l.fillStyle="rgb(0,0,0)";l.fillText("cps:"+Math.round(ca)+" pbp:333",10,50);u+=1;u>x.width&&(u=0,l.fillStyle="white",l.fillRect(1,1,x.width-2,x.height-2))},ja=function(){b.muted||requestAnimationFrame(ja);r.getByteTimeDomainData(P);
     32p.fillStyle="rgb(200, 200, 200)";p.fillRect(0,0,z,A);p.lineWidth=2;p.strokeStyle="rgb(0, 0, 0)";p.beginPath();for(var a=1*z/D,c=0,e=0;e<D;e++){var h=P[e]/128*A/2;0===e?p.moveTo(c,h):p.lineTo(c,h);c+=a}p.lineTo(z,A/2);p.stroke()};this.restart=function(a,c){f.vprint("snd","= = restart all or key?"+c);if(null!=b.plO[d])if(null==a&&(a=0),null!=c)b.plO[d].sndO[c].seek(a);else for(c in b.plO[d].sndO)b.plO[d].sndO[c].seek(a)};var la=function(a,c){var e=0;for(null==a||null==a.attr("id")||a.attr("id");null!=
     33a&&null!=a.parent()&&!a.hasClass(c);){a=a.parent();var h=null==a?"nada":null==a.attr("id")?"nada":a.attr("id");f.vprint("snd",">>>>> findParent bubble["+e+"]:fromhere id:"+h+":");if(a.hasClass(c))return a;e++}return null};this.preload=function(a){f.vprint("snd","=preload("+a.file+","+a.snd+","+a.pl+"):");a.preloading=!0;b.start(a)};this.start=function(a){d=null==a.pl?"default":a.pl;K(d);f.vprint("snd","= = = = = gnvlSound.START["+d+"],  eloop?"+typeof eloop+":");null==b.plO[d]?f.vprint("snd","= = = = = X X X playlist[ "+
     34d+" ] mia"):f.vprint("snd","= = = = =  cur volel?"+typeof b.plO[d].volel+", param vol?"+typeof a.volel+" sndO:"+b.plO[d].sndO);null==a.snd&&(a.snd="tlmusic");a.volel&&(b.plO[d].volel=a.volel,b.plO[d].voldomel=a.volel.node,delete a.volel);f.vprint("snd","= = = = =  final ["+d+"]volel?"+typeof b.plO[d].volel+":");"undefined"==typeof b.plO[d].volel&&b.registerVol();"vol_hidden"==b.plO[d].volState&&("idle2play"==a.usemode?b.plO[d].volel.removeClass("gnlv-gone"):("undefined"==typeof eloop||"stub"!=eloop.version)&&
     35b.plO[d].volel.removeClass("gnlv-gone"),a.preloading&&"idle2play"!=a.usemode||b.toggleVol("vol_off"));if(a.enable){null==a.file?a.file=b.sndLibO[a.snd]:b.sndLibO[a.snd]&&a.file!=b.sndLibO[a.snd]&&(f.vprint("snd","= detect sound file change:"+a.file+"->"+b.sndLibO[a.snd]),a.file=b.sndLibO[a.snd]);f.vprint("snd","= = = = = CREATE Sound["+a.snd+"] params:"+a);var c="continuous"==a.playmode?!0:!1;null!=this.plO[d].sndO[a.snd]&&(f.vprint("snd","= old sound existed same? false :old:"+this.plO[d].sndO[a.snd].src+
     36" new:"+a.file),f.vprint("snd","= unload old sound:"+a.snd),this.plO[d].sndO[a.snd].unload());c={src:[a.file],loop:c,autoplay:!1,preload:!0,onloaderror:ha,onplayerror:ha};a.volume&&(c.volume=parseFloat(a.volume)/10);a.format&&(c.format=a.format);a.do3d&&(c.do3d=a.do3d);a.html5&&(c.html5=a.html5,f.vprint("snd","X X looks like html5? "+a.html5+" NO ANALYZER"));a.file.match(/\.[a-zA-Z0-9]{3}$/)||(f.vprint("snd","no extension guess = AUTOFORMAT mp3"),c.format=["mp3"]);f.vprint("snd","MADE snd["+d+"]["+
     37a.snd+"]="+a.file);this.plO[d].sndO[a.snd]=new Howl(c);a.do3d&&(this.plO[d].sndO[a.snd].do3d=a.do3d);a.playmode&&(this.plO[d].sndO[a.snd].playmode=a.playmode);this.plO[d].sndO[a.snd].src=a.file;this.plO[d].sndO[a.snd].once("load",function(e,h){f.vprint("snd","LOAD DONE:sound tag:"+a.snd+" arg1"+e+" arg2:"+h);"tlmusic"==a.snd&&a.preloading&&jQuery.event.trigger({type:"readyplayerone",message:"tlmusic is ready for action",time:new Date})});f.vprint("snd","have audiocontext:"+Howler.ctx);if(a.do3d)b.panO[a.ani]=
     38b.setupPan(a.snd,0,0),null==b.panningInterval&&"autoset"!=a.ani?(f.vprint("snd","= = = = = START Panner Interval= = = = = CAMERA["+a.ani+"]              C  A  M  E  R  A           xyz: "+this.camx+","+this.camy+","+this.camz),Howler.pos(this.camx,this.camy,this.camz),b.panningInterval=window.setInterval(sa,100)):f.vprint("snd","= = = X X skip Panner Interval, already there,  panO:"+Object.keys(b.panO)+" or bad id:"+a.ani);else if(a.playmode.match(/^on/))for(playmodeA=a.playmode.split(/,/),f.vprint("alert",
     39"= = = = = EVENT LISTENER MODE RETIRED  = = = : "+a.playmode+" : split:"+playmodeA.length+" for "+a.ani),ii=0;ii<playmodeA.length;ii++)myp=ma(a.ani),anelA=myp.el.querySelectorAll("animateTransform"),anmtA=myp.el.querySelectorAll("*[id^=anmt_]"),f.vprint("snd",vv?"":"on-event= = = = = found num animateTransform       A N I    T R A N S         :"+anelA.length+" num id anmt:"+anmtA.length),0<anelA.length?anel=anelA[0]:0<anmtA.length&&(anel=anmtA[0]),playmodeA[ii].match(/(mouse|click|focus)/)&&(anel=
     40myp.el),anel.removeEventListener(b.eventMapO[playmodeA[ii]],na),anel.addEventListener(b.eventMapO[playmodeA[ii]],na.bind({mysound:b.plO[d].sndO[a.snd]}));else f.vprint("snd","= = = = = non-3d sound autoplay skip")}};var na=function(a){console.log("i repeated:"+a.detail+" mysound:"+typeof this.mysound);this.mysound.play()};this.stdplay=function(a,c,e,h,g,k,y,B){var C;if(a&&a.getAttribute){var ba=a.getAttribute("ddd");a.getAttribute("ppp");var I=a.getAttribute("apl");var oa=parseFloat(a.getAttribute("vol"))/
     4110}else f.vprint("warn","stdplay["+e+"]["+c+"] X X X have no el?"+typeof a);if(null==e||"null"==e)e=null!=I?I:d;f.vprint("snd","stdplay[apl:"+d+" myapl:"+e+" aaa:"+I+"]["+c+"] Tfrom:"+g+" to:"+k+" have apl?"+typeof b.plO[e]+" have sound?"+typeof b.plO[e].sndO[c]);if(null==b.plO[e].sndO[c]&&(f.vprint("warn","stdplay["+e+"]["+c+"] X X X not initialized! have el?"+typeof a),I=Snap(a),C=la(I,"gnlv-slot-eloop"))&&(C=C.attr("gnlv-data"),mysvg=la(I,"gnlv-svg"),f.vprint("snd","snd["+c+"]  data:"+C),(jsonO=
     42f.parsejson(C))&&jsonO.transO&&jsonO.transO.sound)){mysvg&&mysvg.attr&&(e=mysvg.attr("id"),jsonO.transO.sound.pl=e,a.setAttribute("apl",e));if(null==b.plO[e].sndO[c]){f.vprint("snd","snd["+e+"]["+c+"] NEW DATA,    -=> starting <=- ");b.start(jsonO.transO.sound);g-=.25;0>g&&(g=0);setTimeout(b.stdplay,250,a,c,e,h,g,k,y,B);return}f.vprint("snd","snd["+e+"]["+c+"] is OK ")}"loaded"!=b.plO[e].sndO[c].state()&&0==g?f.vprint("warn","stdplay["+e+"]["+c+"] X X X not loaded!"):b.plO[e].sndO[c].do3d?f.vprint("snd",
     43"stdplay["+e+"]["+c+"] is 3d, no action!"):(b.plO[e].sndO[c].stop(),window.setTimeout(function(T,L,M){f.vprint("snd","stdplay["+e+"]["+c+"]PLAY, fadein?"+T.match(/(FadeIn)/)+" playmode:"+T+" ddd:"+L+" cur vol:"+M);d==e&&(b.plO[e].sndO[c].play(),T.match(/(FadeIn)/)&&b.plO[e].sndO[c].fade(0,M,1E3*L))},1E3*g,h,ba,oa),0<k&&(window.setTimeout(function(){f.vprint("snd","stdplay["+e+"]["+c+"]STOP");b.plO[e].sndO[c].stop()},1E3*k),h.match(/(FadeInOut)/)&&window.setTimeout(function(T,L,M){f.vprint("snd","stdplay["+
     44e+"]["+c+"]FADE "+M+" dur:"+L);d==e&&b.plO[e].sndO[c].fade(M,0,1E3*L)},1E3*(k-ba),h,ba,oa)))};var ma=function(a){var c=200,e=0,h=200;var g=document.getElementById(a);if(null==g)f.vprint("warn","gnlvPosById["+a+"] not found!");else{var k=g.getBoundingClientRect();var y=b.fov*Math.PI/180;var B=k.height;B=y*B/b.winh;c=b.trueh/Math.tan(B);isNaN(c)&&(c=-1E3);y*=b.aratio;curx=k.x+k.width/2-b.camxshift;y=f.d4(y*curx/b.winw);e=f.d4(c*Math.tan(y));h=f.d4(k.y);f.vprint("snd",vv?"":"gnlvPosById key["+a+"] hasPan?"+
     45b.panO[a]+" found el?"+typeof g+" x:"+parseInt(k.x)+" truex,y:"+e+","+h+" theta:"+B+" phi:"+y+" dist(z):"+parseInt(c))}return{x:e,y:h,z:c,el:g}},sa=function(){for(key in b.panO)myp=ma(key),0<b.panO[key].indexOf(".")?b.plO[d].sndO[b.panO[key.split(".")[0]]].pos(myp.x+.5,myp.y+.5,myp.z,key.split(".")[1]):b.plO[d].sndO[b.panO[key]].pos(myp.x+.5,myp.y+.5,myp.z),f.vprint("snd","gnlvPanner["+d+"]: ["+key+"] xy:"+myp.x+","+myp.y)};this.setupPan=function(a,c,e,h){sound=b.plO[d].sndO[a];var g=null==h?sound.play():
     46sound.play(h);f.vprint("snd","===setupPan=== set up panner on sound   -=["+a+"]=-   soundId   -=["+g+"]=- x:"+c+",y:"+e+" sprite?"+h);sound.once("play",function(){sound.pos(c+.5,e+.5,-.5,g);sound.volume(1,g);sound.pannerAttr({panningModel:"HRTF",refDistance:100,rolloffFactor:.5,distanceModel:"exponential"},g)}.bind(this),g);return null==h?a:a+"."+h};this.init()};
  • genolve-toolkit/trunk/readme.txt

    r2973369 r3001892  
    44Tags: AI image, DALLE, Stable Diffusion, Midjourney, ChatGPT, music video, royalty-free photos
    55Requires at least: 5.0
    6 Tested up to: 6.3
    7 Stable tag: 4.0.5
     6Tested up to: 6.4.1
     7Stable tag: 4.0.6
    88Requires PHP: 5.2.4
    99License: GPLv2 or later
     
    1616 
    1717### All Your Favorite AI Models 
    18 Use Dalle3, Stable Diffusion via Stability.ai, Midjourney and ChatGPT from one simple interface. Compare output from the different models side by side. Start out with free AI image credits and refill credits at the same rate the vendor charges. Genolve's single interface saves registering and paying on multiple AI image sites and having to learn different interfaces.  Your images are only seen by you instead of posting on a public interface. Several beta testers commented that they greatly prefer our interface over Midjourney's own interface. Note that Dalle2 will change to Dalle3 as soon as OpenAI offers API access.
     18Use Dalle3, Stable Diffusion via Stability.ai, Midjourney and ChatGPT from one simple interface. Compare output from the different models side by side. Start out with free AI image credits and refill credits at the same rate the vendor charges. Genolve's single interface saves registering and paying on multiple AI image sites and having to learn different interfaces.  Your images are only seen by you instead of posting on a public interface. Several beta testers commented that they greatly prefer our interface over Midjourney's own interface. Note that Dalle3 only runs for generations while Dalle2 handles variations and inpainting.
    1919
    2020= AI Features =
     
    2424* **Variations** - Get further variations on any AI generated image.
    2525* **GhatGPT** - At your fingertips to help create ads, product descriptions, proofread text or generate quotes.
    26 * **Current models** - As soon as a new version is released it's added in the toolbox.
     26* **Gutenberg Image** - Generate AI pictures right from the image block.
     27* **Current models** - As soon as a new version is released it's added in.
    2728* **Free Credits** - Start out with FREE AI IMAGE CREDITS.
    2829* **At Cost** - You pay the posted rates as if you used the models directly from the AI model creator.
    2930
    30 = Bonus Features =
     31= Image Features =
    3132* **Image Filters** - Hundreds of filters to enhance your AI photos; blur, tint, posterize, background stripping, etc.
    3233* **Image Masks** - Hundreds of masks to shape your AI pics into animals, plants, polygons or text.
     
    3435* **Image Background remover** - Remove backgrounds from AI images or your own photos.
    3536* **Royalty free photos** - Grab stock images from Wikimedia's vast collection or stock photos from Pixabay's sublime collection.
     37
     38= Bonus Features =
    3639* **Templates** - Speed up the design process with hundreds of pre-designed templates.
    37 * **Animations** - Add slide-in, fade-in, zoom-in  and many more effects including path animations.
    38 * **Gutenberg Separator** - Ornate Separator divides paragraphs with pizaz.
    39 * **Gutenberg Image** - Generate AI pictures right from the image block.
     40* **Animations** - Add slide-in, fade-in, zoom-in  and many more effects including path animations.
    4041* **Quotes** - Seamlessly pull quotes from Wikiquote the largest accurate quote collection on the internet.
    4142* **Fonts** - Use our suggested fonts or set your own Google font.
    4243* **Featured Image** - When making a slideshow you can also make a featured image for social media posts.
    4344* **Video Recording** - When making a slideshow you get a video that can be used in emails or posted on YouTube.
     45* **Text to Speech** - AI text2speech with several voice styles.
     46* **Sound Effects** - Add sound effects to object animations (including a 3d effect in beta testing).
    4447* **Easy Resizing** - After making a music video for YouTube, quickly resize, do some touchups and make a music video for TikTok, Instagram, etc.
     48* **Gutenberg Separator** - Ornate Separator divides paragraphs with pizaz.
    4549* **Falling Snow** - Add falling snow, confetti, etc. that people see on their first visit to your site.
    4650
     
    99103== Changelog ==
    100104
     105= 4.0.6 =
     106* DALL-E 3 activated.
     107* Sound effects for object animations and AI text2voice.
     108
    101109= 4.0.5 =
    102110* Image background remove tool.
Note: See TracChangeset for help on using the changeset viewer.