a||0<
25 | a&&1!=d-this.ddiscode.count[0])throw A;return this.codes(this.dlencode,this.ddiscode)}}});c.initialize();return Object.seal(c)}function B(){return Object.create(null,{name:{value:"",writable:!0},extra:{value:null,writable:!0},version:{value:0,writable:!0},flag:{value:0,writable:!0},method:{value:0,writable:!0},time:{value:0,writable:!0},crc:{value:0,writable:!0},compressed:{value:0,writable:!0},size:{value:0,writable:!0},offset:{value:0,writable:!0},date:{get:function(){return new Date((this.time>>
26 | 25&127)+1980,(this.time>>21&15)-1,this.time>>16&31,this.time>>11&31,this.time>>5&63,(this.time&31)<<1)}},isDirectory:{get:function(){return"/"==this.name.charAt(this.name.length-1)}}})}if(!e)return null;var o="Invalid block type.",j="Available inflate data did not terminate.",t="Distance is too far back.",u="Stored block length did not match one's complement.",v="Too many length or distance codes.",w="Code lengths codes incomplete.",x="Repeat lengths with no first length.",y="Repeat more than specified lengths.",
27 | z="Invalid literal/length code lengths.",A="Invalid distance code lengths.",p=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],q=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],m=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=Object.create(null,{endian:{value:1,
28 | writable:!0},entries:{value:null,writable:!0},stream:{value:null,writable:!0},uncompress:{value:function(c){var b=this.stream,a;a=!1;var e,g,d;if(!c)return null;if("string"==typeof c){d=this.entries.length;for(e=0;ea&&(a=0);do if(80==c.readAt(b)&&(c.position=b,101010256==c.readUint()))break;while(--b>
31 | a);if(b==a)throw"The archive is either in unknown format or damaged.";c.position=b+10;this.entries=[];this.entries.length=c.readUshort();c.position=b+16;c.position=c.readUint();this.parseCentral()}}});e.view||(e=ByteArray(e));e.endian=1;e.position=0;l.stream=e;l.parseEnd();return Object.seal(l)}window.neoart.Unzip=1;
--------------------------------------------------------------------------------
/Flod JS 2.0/readme.txt:
--------------------------------------------------------------------------------
1 | Flod version 4.0
2 | Flod JS version 2.0
3 | Flip version 1.1
4 |
5 | 2012/04/01
6 | Christian Corti
7 | Neoart Costa Rica
8 |
9 | E-Mail: flod@neoartcr.com
10 |
11 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
12 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
13 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
14 |
15 | Flod is free for non commercial user, to use it in any commercial production I'll ask you to
16 | mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.
17 |
18 | Special thanks to Richard Davey, Mathew Nolan and Andreas Argirakis :)
19 |
20 | What's new:
21 | 4.0/2.0:
22 | - new David Whittaker player
23 | - new FredEd player
24 | - new Jochen Hippel player (regular and COSO formats, 4 voices only)
25 | - new Rob Hubbard player
26 | - added DigiBooster Pro 2.18 detection to the XM player
27 | - Delta Music 1.0, fixed wrong sustain value
28 | - Delta Music 2.0, fixed Warfalcons-Intromusik 2 crash
29 | - Delta Music 2.0, fixed wrong restart pointer
30 | - Digital Mugician, fixed sample loop pointer (fixes Hoi Level 4)
31 | - Future Composer (Flod only), 1.0/1.3 was using the wrong waves
32 | - SoundFX, fixed effect 7/8 [step down/up] (fixes Forever Tonight)
33 | - SidMON 2, fixed effect C/F [volume and speed] (fixes Cool Module)
34 | - SidMON 2 was processing effects at tick 0, it shouldn't :)
35 | - SidMON 2, fixed adsr sustain volume
36 | - SoundMon, fixed buffer restore, most modules didn't play at all
37 | - ProTracker/NoiseTracker fixed vibrato depth value not set at the beginning
38 | - Fixed and updated Flip/Unzip
39 | 3.0/1.0:
40 | - Flod XM is now part of Flod base code
41 | - Lots of bugs fixed
42 | - Flod JS source code released
43 |
44 | Supported Formats:
45 | - Brian Postma's SoundMon 1.0/2.0/3.0
46 | - David Whittaker
47 | - Delta Music 1.0
48 | - Delta Music 2.0/2.2
49 | - Digital Mugician
50 | - Digital Mugician 7 voices
51 | - D.O.C. Soundtracker 9/2.0
52 | - FastTracker II XM (PC)
53 | - FredEd
54 | - Future Composer 1.0/1.3
55 | - Future Composer 1.4
56 | - His Master's NoiseTracker
57 | - Jochen Hippel
58 | - Jochen Hippel COSO
59 | - NoiseTracker 1.0/1.1/2.0
60 | - ProTracker 1.0/1.1/1.2
61 | - Rob Hubbard
62 | - SidMON
63 | - SidMON II
64 | - SoundFX 1.0/1.8/1.9/2.0
65 | - Soundtracker 2.3/2.5
66 | - Ultimate Soundtracker, The (Karsten Obarski)
--------------------------------------------------------------------------------
/Flod JS 2.1/Flod.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Flod JS 2.1/index.htm:
--------------------------------------------------------------------------------
1 |
18 |
19 |
20 |
21 | Flod JS 2.1 | Christian Corti
22 |
26 |
27 |
28 |
29 | Flod JS 2.1 | © 2012 Christian Corti
30 |
31 |
32 |
FileLoader
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
118 |
119 |
--------------------------------------------------------------------------------
/Flod JS 2.1/license.txt:
--------------------------------------------------------------------------------
1 | Flod version 4.1
2 | Flod JS version 2.1
3 | Flip version 1.2
4 |
5 | 2012/04/30
6 | Christian Corti
7 | Neoart Costa Rica
8 |
9 | E-Mail: flod@neoartcr.com
10 |
11 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
12 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
13 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
14 |
15 | Flod is free for non commercial user, to use it in any commercial production I'll ask you to
16 | mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.
17 |
18 | Special thanks to Richard Davey, Mathew Nolan and Andreas Argirakis :)
--------------------------------------------------------------------------------
/Flod JS 2.1/minified/Amiga.js:
--------------------------------------------------------------------------------
1 | /*
2 | Flod JS 2.1
3 | 2012/04/30
4 | Christian Corti
5 | Neoart Costa Rica
6 |
7 | Last Update: Flod JS 2.1 - 2012/04/09
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
11 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
12 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 |
14 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
15 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
16 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
17 | */
18 | function AmigaChannel(c){var b=Object.create(null,{next:{value:null,writable:!0},mute:{value:0,writable:!0},panning:{value:0,writable:!0},delay:{value:0,writable:!0},pointer:{value:0,writable:!0},length:{value:0,writable:!0},audena:{value:0,writable:!0},audcnt:{value:0,writable:!0},audloc:{value:0,writable:!0},audper:{value:0,writable:!0},audvol:{value:0,writable:!0},timer:{value:0,writable:!0},level:{value:0,writable:!0},ldata:{value:0,writable:!0},rdata:{value:0,writable:!0},enabled:{get:function(){return this.audena},
19 | set:function(a){a!=this.audena&&(this.audena=a,this.audloc=this.pointer,this.audcnt=this.pointer+this.length,this.timer=1,a&&(this.delay+=2))}},period:{set:function(a){0>a?a=0:65535a?a=0:64b.l&&(b.l=-1);1b.r&&(b.r=-1)}}})}function AmigaRow(){return Object.create(null,{note:{value:0,writable:!0},sample:{value:0,writable:!0},effect:{value:0,writable:!0},param:{value:0,writable:!0}})}
23 | function AmigaSample(){return Object.create(null,{name:{value:"",writable:!0},length:{value:0,writable:!0},loop:{value:0,writable:!0},repeat:{value:0,writable:!0},volume:{value:0,writable:!0},pointer:{value:0,writable:!0},loopPtr:{value:0,writable:!0}})}function AmigaStep(){return Object.create(null,{pattern:{value:0,writable:!0},transpose:{value:0,writable:!0}})}
24 | function Amiga(){var c=CoreMixer();Object.defineProperties(c,{filter:{value:null,writable:!0},model:{value:1,writable:!0},memory:{value:[],writable:!0},loopPtr:{value:0,writable:!0},loopLen:{value:4,writable:!0},clock:{value:0,writable:!0},master:{value:0,writable:!0},ready:{value:0,writable:!0},volume:{set:function(b){0=b.length&&(c=e-b.length,a=b.length-b.position);e=h;for(a+=h;ethis.bufferSize&&(this.remains=f-this.bufferSize,f=this.bufferSize)));j=this.samplesLeft;g+j>=f&&(j=f-g);h=k+j;for(a=this.channels[0];a;){d=this.buffer[k];if(a.audena&&60--a.timer&&(a.mute||(i=0.0078125*m[a.audloc],a.ldata=
27 | i*e,a.rdata=i*n),a.audloc++,a.timer+=o,a.audloc>=a.audcnt))a.audloc=a.pointer,a.audcnt=a.pointer+a.length;d.l+=a.ldata;d.r+=a.rdata;d=d.next}}else for(c=k;ca?a=0:1a?a=0:1a?a=0:a>this.length&&(a=this.length);this.index=a}},clear:{value:function(){this.buffer=new ArrayBuffer;this.view=null;this.index=this.length=0}},readAt:{value:function(a){return this.view.getUint8(a)}},
19 | readByte:{value:function(){return this.view.getInt8(this.index++)}},readShort:{value:function(){var a=this.view.getInt16(this.index,this.endian);this.index+=2;return a}},readInt:{value:function(){var a=this.view.getInt32(this.index,this.endian);this.index+=4;return a}},readUbyte:{value:function(){return this.view.getUint8(this.index++)}},readUshort:{value:function(){var a=this.view.getUint16(this.index,this.endian);this.index+=2;return a}},readUint:{value:function(){var a=this.view.getUint32(this.index,
20 | this.endian);this.index+=4;return a}},readBytes:{value:function(a,b,d){var a=a.view,c=this.index,e=this.view;if((d+=c)>this.length)d=this.length;for(;cthis.length)a=this.length;for(;bb))if(this.buffer.length=b,b>a){this.buffer[a]=Sample();for(a=++a;a>0}}});window.neoart.audioContext||(window.neoart.audioContext=new webkitAudioContext);b.context=window.neoart.audioContext;b.sampleRate=b.context.sampleRate;return b};
--------------------------------------------------------------------------------
/Flod JS 2.1/minified/FXPlayer.js:
--------------------------------------------------------------------------------
1 | /*
2 | Flod JS 2.1
3 | 2012/04/30
4 | Christian Corti
5 | Neoart Costa Rica
6 |
7 | Last Update: Flod JS 2.1 - 2012/04/14
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
11 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
12 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 |
14 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
15 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
16 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
17 | */
18 | (function(){function i(g){return Object.create(null,{index:{value:g,writable:!0},next:{value:null,writable:!0},channel:{value:null,writable:!0},sample:{value:null,writable:!0},enabled:{value:0,writable:!0},period:{value:0,writable:!0},effect:{value:0,writable:!0},param:{value:0,writable:!0},volume:{value:0,writable:!0},last:{value:0,writable:!0},slideCtr:{value:0,writable:!0},slideDir:{value:0,writable:!0},slideParam:{value:0,writable:!0},slidePeriod:{value:0,writable:!0},slideSpeed:{value:0,writable:!0},
19 | stepPeriod:{value:0,writable:!0},stepSpeed:{value:0,writable:!0},stepWanted:{value:0,writable:!0},initialize:{value:function(){this.sample=this.channel=null;this.stepWanted=this.stepSpeed=this.stepPeriod=this.slideSpeed=this.slidePeriod=this.slideParam=this.slideDir=this.slideCtr=this.last=this.volume=this.param=this.effect=this.period=this.enabled=0}}})}var j=[1076,1016,960,906,856,808,762,720,678,640,604,570,538,508,480,453,428,404,381,360,339,320,302,285,269,254,240,226,214,202,190,180,170,160,
20 | 151,143,135,127,120,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,-1];window.neoart.FXPlayer=function(g){g=AmigaPlayer(g);Object.defineProperties(g,{id:{value:"FXPlayer"},standard:{value:0,writable:!0},track:{value:null,writable:!0},patterns:{value:[],writable:!0},samples:{value:[],writable:!0},length:{value:0,writable:!0},voices:{value:[],writable:!0},trackPos:{value:0,writable:!0},patternPos:{value:0,writable:!0},jumpFlag:{value:0,writable:!0},
21 | delphine:{value:0,writable:!0},force:{set:function(b){1>b?b=1:4>0}},initialize:{value:function(){var b=this.voices[0];this.reset();this.ntsc=this.standard;this.speed=6;for(this.jumpFlag=this.patternPos=this.trackPos=0;b;)b.initialize(),b.channel=this.mixer.channels[b.index],b.sample=this.samples[0],b=b.next}},loader:{value:function(b){var d=
22 | 0,c,a,e,f,g=0,h;if(!(1686>b.length)){b.position=60;c=b.readString(4);if("SONG"!=c){b.position=124;c=b.readString(4);if("SO31"!=c||2350>b.length)return;e=544;this.samples.length=a=32;this.version=4}else e=0,this.samples.length=a=16,this.version=1;this.tempo=b.readUshort();b.position=0;for(c=1;cd&&(d=h);e&&(e+=4);b.position=660+e;d+=256;this.patterns.length=d;a=this.samples.length;for(c=0;c>4;this.patterns[c]=e;if(4==this.version)e.note&4096&&(e.sample+=16,0e.note&&(this.version=3)}if(e.sample>=a||null==this.samples[e.sample])e.sample=0}this.mixer.store(b,g);for(c=1;cc;++c)d+=b.readUshort();switch(d){case 172662:case 1391423:case 1458300:case 1706977:case 1920077:case 1920694:case 1677853:case 1931956:case 1926836:case 1385071:case 1720635:case 1714491:case 1731874:case 1437490:this.delphine=
25 | 1}}}},process:{value:function(){var b,d,c,a=this.voices[0];if(this.tick)for(;a;){b=a.channel;if(!(2==this.version&&-3==a.period))if(a.stepSpeed)a.stepPeriod+=a.stepSpeed,0>a.stepSpeed?a.stepPerioda.stepWanted&&(a.stepPeriod=a.stepWanted,2>4;a.last!=j[d];)d++;b.period=j[d+c];break;case 2:c=a.param>>4;a.period=c?a.period+c:a.period-(a.param&15);b.period=a.period;break;case 3:this.mixer.filter.active=
27 | 1;break;case 4:this.mixer.filter.active=0;break;case 8:c=-1;case 7:a.stepSpeed=a.param&15;a.stepPeriod=2c&&(a.stepSpeed=-a.stepSpeed);for(d=0;;){b=j[d];if(b==a.stepPeriod)break;if(0>b){d=-1;break}else d++}-1>4,-1d&&(d=0),a.stepWanted=j[d]):a.stepWanted=a.period;break;case 9:a.slideSpeed=a.slidePeriod=a.period,a.slideParam=a.param,a.slideDir=0,a.slideCtr=0}}a=a.next}else for(c=this.track[this.trackPos]+this.patternPos;a;){b=a.channel;
28 | a.enabled=0;d=this.patterns[c+a.index];a.period=d.note;a.effect=d.effect;a.param=d.param;if(-3==d.note)a.effect=0;else if(d.sample?(d=a.sample=this.samples[d.sample],a.volume=d.volume,5==a.effect?a.volume+=a.param:6==a.effect&&(a.volume-=a.param),b.volume=a.volume):d=a.sample,a.period){a.last=a.period;a.slideSpeed=0;a.stepSpeed=0;a.enabled=1;b.enabled=0;switch(a.period){case -2:b.volume=0;break;case -4:this.jumpFlag=1;break;case -5:break;default:b.pointer=d.pointer,b.length=d.length,b.period=this.delphine?
29 | a.period<<1:a.period}a.enabled&&(b.enabled=1);b.pointer=d.loopPtr;b.length=d.repeat}a=a.next}if(++this.tick==this.speed&&(this.tick=0,this.patternPos+=4,256==this.patternPos||this.jumpFlag))this.patternPos=this.jumpFlag=0,++this.trackPos==this.length&&(this.trackPos=0,this.mixer.complete=1)}}});g.voices[0]=i(0);g.voices[0].next=g.voices[1]=i(1);g.voices[1].next=g.voices[2]=i(2);g.voices[2].next=g.voices[3]=i(3);g.track=new Uint16Array(128);return Object.seal(g)}})();
--------------------------------------------------------------------------------
/Flod JS 2.1/minified/FileLoader.js:
--------------------------------------------------------------------------------
1 | /*
2 | Flod JS 2.1
3 | 2012/04/30
4 | Christian Corti
5 | Neoart Costa Rica
6 |
7 | Last Update: Flod JS 2.1 - 2012/04/16
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
11 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
12 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 |
14 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
15 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
16 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
17 | */
18 | (function(){var d="Unknown Format,Ultimate SoundTracker,D.O.C. SoundTracker 9,Master SoundTracker,D.O.C. SoundTracker 2.0/2.2,SoundTracker 2.3,SoundTracker 2.4,NoiseTracker 1.0,NoiseTracker 1.1,NoiseTracker 2.0,ProTracker 1.0,ProTracker 1.1/2.1,ProTracker 1.2/2.0,His Master's NoiseTracker,SoundFX 1.0/1.7,SoundFX 1.8,SoundFX 1.945,SoundFX 1.994/2.0,BP SoundMon V1,BP SoundMon V2,BP SoundMon V3,Delta Music 1.0,Delta Music 2.0,Digital Mugician,Digital Mugician 7 Voices,Future Composer 1.0/1.3,Future Composer 1.4,SidMon 1.0,SidMon 2.0,David Whittaker,FredEd,Jochen Hippel,Jochen Hippel COSO,Rob Hubbard,FastTracker II,Sk@leTracker,MadTracker 2.0,MilkyTracker,DigiBooster Pro 2.18,OpenMPT".split(",");
19 | window.neoart.FileLoader=function(){var e=Object.create(null,{player:{value:null,writable:!0},index:{value:0,writable:!0},amiga:{value:null,writable:!0},mixer:{value:null,writable:!0},tracker:{get:function(){return this.player?d[this.index+this.player.version]:d[0]}},load:{value:function(a){var b,c;a.view||(a=ByteArray(a));a.endian=1;a.position=0;if(67324752==a.readUint())if(window.neoart.Unzip)a=ZipFile(a),a=a.uncompress(a.entries[0]);else throw"Unzip support is not available.";if(!a)return null;
20 | if(this.player&&"STPlayer"!=this.player.id&&(this.player.load(a),this.player.version))return player;if(336b?b=1:5b.length)&&(b.position=1080,e=b.readString(4),!("M.K."!=e&&"FLT4"!=e))){b.position=0;this.title=b.readString(20);this.version=1;b.position+=22;for(e=
22 | 1;32>e;++e)(g=b.readUshort())?(c=AmigaSample(),b.position-=24,c.name=b.readString(22),c.length=g<<1,b.position+=3,c.volume=b.readUbyte(),c.loop=b.readUshort()<<1,c.repeat=b.readUshort()<<1,b.position+=22,c.pointer=d,d+=c.length,this.samples[e]=c,32768e;++e)g=b.readUbyte()<<8,this.track[e]=g,g>f&&(f=g);b.position=1084;f+=256;this.patterns.length=
23 | f;for(e=0;e>16&4095;c.effect=g>>8&15;c.sample=g>>24&240|g>>12&15;c.param=g&255;this.patterns[e]=c;if(31c.effect){this.version=0;return}}this.mixer.store(b,d);for(e=1;32>e;++e)if(c=this.samples[e]){-1this.version&&this.restart&&(this.version=4)}}},process:{value:function(){var b,f,e,c,d,g,a=this.voices[0];if(this.tick)for(;a;){b=a.channel;if(!a.effect&&!a.param)b.period=a.period;else{switch(a.effect){case 0:d=this.tick%3;if(!d){b.period=a.period;a=a.next;continue}d=1==d?a.param>>4:a.param&15;c=a.period&
25 | 4095;e=37-d;for(f=0;f=i[f]){b.period=i[f+d];break}break;case 1:a.period-=a.param;113>a.period&&(a.period=113);b.period=a.period;break;case 2:a.period+=a.param;856=a.portaPeriod&&(a.period=a.portaPeriod,a.portaPeriod=
26 | 0)));b.period=a.period;break;case 4:case 6:6==a.effect?g=1:a.param&&(a.vibratoSpeed=a.param);d=a.vibratoPos>>2&31;d=(a.vibratoSpeed&15)*j[d]>>this.vibratoDepth;b.period=127>2&60;a.vibratoPos=a.vibratoPos+d&255;break;case 10:g=1}g&&(d=a.param>>4,g=0,a.volume=d?a.volume+d:a.volume-(a.param&15),0>a.volume?a.volume=0:64a.period?(a.portaDir=0,a.portaPeriod=d.note):a.portaPeriod=0:(a.enabled=1,a.vibratoPos=0,b.enabled=0,b.pointer=e.pointer,b.length=e.length,b.period=a.period=d.note));switch(a.effect){case 11:this.trackPos=a.param-1;this.jumpFlag^=1;break;case 12:b.volume=a.param;
28 | 5==this.version&&(a.volume=a.param);break;case 13:this.jumpFlag^=1;break;case 14:this.mixer.filter.active=a.param^1;break;case 15:d=a.param,1>d?d=1:31a.position;)if(c=a.readUshort(),
22 | 32272==c||32288==c)c=a.readUshort(),16890==c&&(f=a.position+a.readUshort(),c=a.readUshort(),53756==c?(g=f+a.readUint(),this.mixer.loopLen=64,a.position+=2):(g=f,this.mixer.loopLen=512),e=a.position+a.readUshort(),c=a.readUbyte(),114==c&&(d=a.readUbyte()));else if(20937==c){if(a.position+=2,c=a.readUshort(),17914==c){h=a.position+a.readUshort();for(a.position+=2;;)if(c=a.readUshort(),19450==c){b=a.position+a.readUshort();break}}}else if(49404==c)a.position+=2,c=a.readUshort(),16875==c&&(i=a.readUshort());
23 | else if(13421==c)a.position+=2,c=a.readUshort(),18938==c&&(this.vibrato=a.position+a.readUshort());else if(16960==c&&(c=a.readUshort(),17914==c)){this.periods=a.position+a.readUshort();break}if(e&&g&&d&&i){a.position=g;this.samples=[];d++;for(f=0;f>5;e=f+3;this.variant=1;if(f>=d)for(;df;++f)d=a.readUint(),dc-a.position)break}this.lastSong=this.songs.length-1;a.length=g;for(a.position=352;512>a.position;)c=
26 | a.readUshort(),45116==c&&(c=a.readUshort(),133==c?this.variant=2:134==c?this.variant=4:135==c&&(this.variant=3));this.stream=a;this.version=1}}},process:{value:function(){for(var a,f,d,e,b=this.voices[3];b;){a=b.channel;this.stream.position=b.patternPos;d=b.sample;b.busy||(b.busy=1,0==d.loopPtr?(a.pointer=this.mixer.loopPtr,a.length=this.mixer.loopLen):0e)switch(e){case -121:3==
27 | this.variant&&(b.volume=this.stream.readUbyte());break;case -122:4==this.variant&&(b.volume=this.stream.readUbyte());break;case -123:1e&&(e=0),b.sample=d=this.samples[e],b.vibratoPtr=this.vibrato+d.vibrato,b.vibratoPos=b.vibratoPtr}else b.tick=this.song.speed*e,b.note=this.stream.readByte(),b.patternPos=this.stream.position,b.synthPos=d.loPos,b.vibratoPos=b.vibratoPtr,a.pointer=
29 | d.pointer,a.length=d.length,a.volume=b.volume?b.volume:d.volume,this.stream.position=this.periods+(b.note<<1),e=this.stream.readUshort()*d.relative,a.period=b.period=e>>10,a.enabled=1,b.busy=f=0}else{if(1==b.tick&&(4!=this.variant||!(b.flags&4)))a.enabled=0;b.flags&1&&(a.period=b.period+=b.portaSpeed);d.divider&&(this.stream.position=b.vibratoPos,e=this.stream.readByte(),-124==e&&(this.stream.position=b.vibratoPtr,e=this.stream.readByte()),b.vibratoPos=this.stream.position,e*=parseInt(b.period/d.divider),
30 | a.period=b.period+e)}d.hiPos&&(e=0,b.flags&2?(b.synthPos--,b.synthPos<=d.loPos&&(b.flags&=-3,e=60)):(b.synthPos++,b.synthPos>d.hiPos&&(b.flags|=2,e=60)),this.mixer.memory[d.pointer+b.synthPos]=e);b=b.next}}}});g.voices[3]=h(3,8);g.voices[3].next=g.voices[2]=h(2,4);g.voices[2].next=g.voices[1]=h(1,2);g.voices[1].next=g.voices[0]=h(0,1);return Object.seal(g)}})();
--------------------------------------------------------------------------------
/Flod JS 2.1/minified/STPlayer.js:
--------------------------------------------------------------------------------
1 | /*
2 | Flod JS 2.1
3 | 2012/04/30
4 | Christian Corti
5 | Neoart Costa Rica
6 |
7 | Last Update: Flod JS 2.1 - 2012/04/13
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
11 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
12 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 |
14 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
15 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
16 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
17 | */
18 | (function(){function h(e){return Object.create(null,{index:{value:e,writable:!0},next:{value:null,writable:!0},channel:{value:null,writable:!0},sample:{value:null,writable:!0},enabled:{value:0,writable:!0},period:{value:0,writable:!0},last:{value:0,writable:!0},effect:{value:0,writable:!0},param:{value:0,writable:!0},initialize:{value:function(){this.sample=this.channel=null;this.param=this.effect=this.last=this.period=this.enabled=0}}})}var i=[856,808,762,720,678,640,604,570,538,508,480,453,428,
19 | 404,381,360,339,320,302,285,269,254,240,226,214,202,190,180,170,160,151,143,135,127,120,113,0,0,0];window.neoart.STPlayer=function(e){e=AmigaPlayer(e);Object.defineProperties(e,{id:{value:"STPlayer"},standard:{value:0,writable:!0},track:{value:null,writable:!0},patterns:{value:[],writable:!0},samples:{value:[],writable:!0},length:{value:0,writable:!0},voices:{value:[],writable:!0},trackPos:{value:0,writable:!0},patternPos:{value:0,writable:!0},jumpFlag:{value:0,writable:!0},force:{set:function(b){1>
20 | b?b=1:4this.version&&(b=(b?20.44952532:20.637767904)*(this.sampleRate/1E3)/120,this.mixer.samplesTick=(240-this.tempo)*b>>0)}},initialize:{value:function(){var b=this.voices[0];this.reset();this.ntsc=this.standard;this.speed=6;for(this.jumpFlag=this.patternPos=this.trackPos=0;b;)b.initialize(),b.channel=this.mixer.channels[b.index],b.sample=this.samples[0],b=b.next}},loader:{value:function(b){var d=0,c,a,e=0,g=0,
21 | f;if(!(1626>b.length)){this.title=b.readString(20);e+=this.isLegal(this.title);this.version=1;b.position=42;for(c=1;16>c;++c)(f=b.readUshort())?(a=AmigaSample(),b.position-=24,a.name=b.readString(22),a.length=f<<1,b.position+=3,a.volume=b.readUbyte(),a.loop=b.readUshort(),a.repeat=b.readUshort()<<1,b.position+=22,a.pointer=g,g+=a.length,this.samples[c]=a,e+=this.isLegal(a.name),9999c;++c)f=b.readUbyte()<<8,16384d&&(d=f);b.position=600;d+=256;this.patterns.length=d;c=b.length-g-600>>2;d>c&&(d=c);for(c=0;c>4;this.patterns[c]=a;2a.effect&&e--;a.note&&(113>a.note||856c;++c)if(a=this.samples[c]){a.loop?(a.loopPtr=a.pointer+a.loop,a.pointer=a.loopPtr,a.length=a.repeat):(a.loopPtr=this.mixer.memory.length,a.repeat=2);g=a.pointer+4;for(b=a.pointer;be&&(this.version=0)}}},process:{value:function(){var b,d,c,a=this.voices[0];if(this.tick)for(;a;){if(a.param)if(b=
24 | a.channel,1==this.version)1==a.effect?this.arpeggio(a):2==a.effect&&(c=a.param>>4,a.period=c?a.period+c:a.period-(a.param&15),b.period=a.period);else{switch(a.effect){case 0:this.arpeggio(a);break;case 1:a.last-=a.param&15;113>a.last&&(a.last=113);b.period=a.last;break;case 2:a.last+=a.param&15,856this.version))switch(a.effect){case 11:this.trackPos=
26 | a.param-1;this.jumpFlag^=1;break;case 12:b.volume=a.param;break;case 13:this.jumpFlag^=1;break;case 14:this.mixer.filter.active=a.param^1;break;case 15:if(!a.param)break;this.speed=a.param&15;this.tick=0}a=a.next}if(++this.tick==this.speed&&(this.tick=0,this.patternPos+=4,256==this.patternPos||this.jumpFlag))this.patternPos=this.jumpFlag=0,++this.trackPos==this.length&&(this.trackPos=0,this.mixer.complete=1)}},arpeggio:{value:function(b){var d=b.channel,c=0,a=this.tick%3;if(a){for(a=1==a?b.param>>
27 | 4:b.param&15;b.last!=i[c];)c++;d.period=i[c+a]}else d.period=b.last}},isLegal:{value:function(b){var d,c=0,a=b.length;if(!a)return 0;for(;cd||127d.length&&(g=d.length-f);for(a=0;ab?b+=256:127d.length&&(g=d.length-f>>1);for(a=0;ab?b+=65536:32767this.bufferSize&&(this.remains=i-this.bufferSize,i=this.bufferSize)));h=this.samplesLeft;d+h>=i&&(h=i-d);k=m+h;for(a=this.channels[0];a;){if(a.enabled){l=a.sample;g=l.data;e=this.buffer[m];for(f=m;f=a.length)if(l.loopMode)a.pointer=l.loopStart+(a.index-a.length),a.length=l.length,2==l.loopMode&&(a.dir=a.dir?0:l.length+l.loopStart-1);else{a.enabled=0;break}else a.pointer=a.index;a.mute?(a.ldata=0,a.rdata=
25 | 0):(j=a.dir?g[a.dir-a.pointer]:g[a.pointer],a.ldata=j*a.lvol,a.rdata=j*a.rvol)}a.index=a.pointer+a.delta;if(1<=(a.fraction+=a.speed))a.index++,a.fraction--;e.l+=a.ldata;e.r+=a.rdata;e=e.next}}a=a.next}m=k;d+=h;this.samplesLeft-=h}e=this.buffer[0];a=b.outputBuffer.getChannelData(0);b=b.outputBuffer.getChannelData(1);for(f=0;fe.l&&(e.l=-1),1e.r&&(e.r=-1),a[f]=e.l,b[f]=e.r,e.l=e.r=0,e=e.next}},accurate:{value:function(b){var a,d,f,p,k,m=0,l,e=0,i,h,j,c,o=this.bufferSize,
26 | q,n;if(this.completed){if(!this.remains){this.player.stop();return}o=this.remains}for(;mthis.bufferSize&&(this.remains=o-this.bufferSize,o=this.bufferSize)));q=this.samplesLeft;m+q>=o&&(q=o-m);l=e+q;for(a=this.channels[0];a;){if(a.enabled){h=a.sample;d=h.data;if(j=a.oldSample)f=j.data;c=this.buffer[e];for(k=e;k>0,a.fraction-=p,0a.length&&(a.fraction+=a.pointer-a.length,a.pointer=a.length)):(a.pointer-=p,a.pointer>0,a.oldFraction-=p,0a.oldLength&&(a.oldFraction+=a.oldPointer-
28 | a.oldLength,a.oldPointer=a.oldLength)):(a.oldPointer-=p,a.oldPointerc.l&&(c.l=-1),1c.r&&(c.r=-1),a[k]=c.l,b[k]=c.r,c.l=c.r=0,c=c.next}}});d.bufferSize=8192;return Object.seal(d)}function SBPlayer(d){var b=CorePlayer();Object.defineProperties(b,{track:{value:null,writable:!0},length:{value:0,writable:!0},restart:{value:0,writable:!0},timer:{value:0,writable:!0},master:{value:0,writable:!0},volume:{set:function(a){0>a?a=0:1a;++a)b[a]=8;for(;256>a;++a)b[a]=9;for(;280>a;++a)b[a]=7;for(;288>a;++a)b[a]=8;this.construct(this.fdiscode,b,288);for(a=0;30>a;++a)b[a]=5;this.construct(this.fdiscode,b,30);this.dlencode=h(286);this.ddiscode=h(30)}},construct:{value:function(b,a,k){for(var c=0,d=1,i=new Uint16Array(16),f=0;16>c;++c)b.count[c]=0;for(;fc;++c)if(d<<=1,d-=b.count[c],0>d)return d;for(c=1;15>c;++c)i[c+1]=i[c]+b.count[c];for(f=
21 | 0;f>b;this.bitcnt-=b;return a&(1<d)return d;if(256>d)this.output.writeAt(this.outcnt++,d);else if(256d)return d;c=
22 | r[d]+this.bits(s[d]);if(c>this.outcnt)throw t;for(c=this.outcnt-c;g--;)this.output.writeAt(this.outcnt++,this.output.readAt(c++))}}while(256!=d);return 0}},decode:{value:function(b){for(var a=this.bitbuf,c=0,g,d=0,i=0,f=this.inpbuf.length,e=this.bitcnt,h=1;;){for(;e--;){c|=a&1;a>>=1;g=b.count[h];if(cb)throw j;a=this.inpbuf.readAt(this.inpcnt++);a|=this.inpbuf.readAt(this.inpcnt++)<<8;if(this.inpbuf.readAt(this.inpcnt++)!=(~a&255)||this.inpbuf.readAt(this.inpcnt++)!=(~a>>8&255))throw u;if(this.inpcnt+a>b)throw j;for(;a--;)this.output.writeAt(this.outcnt++,this.inpbuf.readAt(this.inpcnt++));return 0}},dynamic:{value:function(){var b=new Uint8Array(316),a;a=0;var c,g=this.bits(5)+257,d=this.bits(5)+1;
24 | c=this.bits(4)+4;var e=g+d,f;if(286a;++a)b[m[a]]=0;if(a=this.construct(this.dlencode,b,19))throw w;for(a=0;af)b[a++]=f;else{c=0;if(16==f){if(0==a)throw x;c=b[a-1];f=3+this.bits(2)}else f=17==f?3+this.bits(3):11+this.bits(7);if(a+f>e)throw y;for(;f--;)b[a++]=c}a=this.construct(this.dlencode,b,g);if(0>a||0a||0<
25 | a&&1!=d-this.ddiscode.count[0])throw A;return this.codes(this.dlencode,this.ddiscode)}}});c.initialize();return Object.seal(c)}function B(){return Object.create(null,{name:{value:"",writable:!0},extra:{value:null,writable:!0},version:{value:0,writable:!0},flag:{value:0,writable:!0},method:{value:0,writable:!0},time:{value:0,writable:!0},crc:{value:0,writable:!0},compressed:{value:0,writable:!0},size:{value:0,writable:!0},offset:{value:0,writable:!0},date:{get:function(){return new Date((this.time>>
26 | 25&127)+1980,(this.time>>21&15)-1,this.time>>16&31,this.time>>11&31,this.time>>5&63,(this.time&31)<<1)}},isDirectory:{get:function(){return"/"==this.name.charAt(this.name.length-1)}}})}if(!e)return null;var o="Invalid block type.",j="Available inflate data did not terminate.",t="Distance is too far back.",u="Stored block length did not match one's complement.",v="Too many length or distance codes.",w="Code lengths codes incomplete.",x="Repeat lengths with no first length.",y="Repeat more than specified lengths.",
27 | z="Invalid literal/length code lengths.",A="Invalid distance code lengths.",p=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],q=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],m=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=Object.create(null,{endian:{value:1,
28 | writable:!0},entries:{value:null,writable:!0},stream:{value:null,writable:!0},uncompress:{value:function(c){var b=this.stream,a;a=!1;var e,g,d;if(!c)return null;if("string"==typeof c){d=this.entries.length;for(e=0;ea&&(a=0);do if(80==c.readAt(b)&&(c.position=b,101010256==c.readUint()))break;while(--b>
31 | a);if(b==a)throw"The archive is either in unknown format or damaged.";c.position=b+10;this.entries=[];this.entries.length=c.readUshort();c.position=b+16;c.position=c.readUint();this.parseCentral()}}});e.view||(e=ByteArray(e));e.endian=1;e.position=0;l.stream=e;l.parseEnd();return Object.seal(l)}window.neoart.Unzip=1;
--------------------------------------------------------------------------------
/Flod JS 2.1/readme.txt:
--------------------------------------------------------------------------------
1 | Flod version 4.1
2 | Flod JS version 2.1
3 | Flip version 1.2
4 |
5 | 2012/04/30
6 | Christian Corti
7 | Neoart Costa Rica
8 |
9 | E-Mail: flod@neoartcr.com
10 |
11 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
12 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
13 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
14 |
15 | Flod is free for non commercial user, to use it in any commercial production I'll ask you to
16 | mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.
17 |
18 | Special thanks to Richard Davey, Mathew Nolan and Andreas Argirakis :)
19 |
20 | What's new:
21 | 4.1/2.1:
22 | - some small modules (less than 2150 bytes) were not recognized as valid
23 | - His Master's Noisetracker, fixed Peggy Go Home null sample pointer
24 | - His Master's Noisetracker, fixed Ikke Advanced wrong patterns pointers
25 | - SoundFX, fixed effect 9
26 | - SoundFX, added support for untouched Operation Stealth modules
27 | - Soundtrackers, fixed period overflow, portamento up/down
28 | - FastTracker II, fixed not working master volume
29 | 4.0/2.0:
30 | - new David Whittaker player
31 | - new FredEd player
32 | - new Jochen Hippel player (regular and COSO formats, 4 voices only)
33 | - new Rob Hubbard player
34 | - added DigiBooster Pro 2.18 detection to the XM player
35 | - Delta Music 1.0, fixed wrong sustain value
36 | - Delta Music 2.0, fixed Warfalcons-Intromusik 2 crash
37 | - Delta Music 2.0, fixed wrong restart pointer
38 | - Digital Mugician, fixed sample loop pointer (fixes Hoi Level 4)
39 | - Future Composer (Flod only), 1.0/1.3 was using the wrong waves
40 | - SoundFX, fixed effect 7/8 [step down/up] (fixes Forever Tonight)
41 | - SidMON 2, fixed effect C/F [volume and speed] (fixes Cool Module)
42 | - SidMON 2 was processing effects at tick 0, it shouldn't :)
43 | - SidMON 2, fixed adsr sustain volume
44 | - SoundMon, fixed buffer restore, most modules didn't play at all
45 | - ProTracker/NoiseTracker fixed vibrato depth value not set at the beginning
46 | - Fixed and updated Flip/Unzip
47 | 3.0/1.0:
48 | - Flod XM is now part of Flod base code
49 | - Lots of bugs fixed
50 | - Flod JS source code released
51 |
52 | Supported Formats:
53 | - Brian Postma's SoundMon 1.0/2.0/3.0
54 | - David Whittaker
55 | - Delta Music 1.0
56 | - Delta Music 2.0/2.2
57 | - Digital Mugician
58 | - Digital Mugician 7 voices
59 | - D.O.C. Soundtracker 9/2.0
60 | - FastTracker II XM (PC)
61 | - FredEd
62 | - Future Composer 1.0/1.3
63 | - Future Composer 1.4
64 | - His Master's NoiseTracker
65 | - Jochen Hippel
66 | - Jochen Hippel COSO
67 | - NoiseTracker 1.0/1.1/2.0
68 | - ProTracker 1.0/1.1/1.2
69 | - Rob Hubbard
70 | - SidMON
71 | - SidMON II
72 | - SoundFX 1.0/1.8/1.9/2.0
73 | - Soundtracker 2.3/2.5
74 | - Ultimate Soundtracker, The (Karsten Obarski)
--------------------------------------------------------------------------------
/Media/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Media/background.png
--------------------------------------------------------------------------------
/Media/glass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Media/glass.png
--------------------------------------------------------------------------------
/Media/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Media/logo.png
--------------------------------------------------------------------------------
/Sample Tunes/mod/MangaPart1.mod:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Sample Tunes/mod/MangaPart1.mod
--------------------------------------------------------------------------------
/Sample Tunes/mod/Monday.mod:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Sample Tunes/mod/Monday.mod
--------------------------------------------------------------------------------
/Sample Tunes/mod/StardustMemories.mod:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Sample Tunes/mod/StardustMemories.mod
--------------------------------------------------------------------------------
/Sample Tunes/mod/Tinytune.mod:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Sample Tunes/mod/Tinytune.mod
--------------------------------------------------------------------------------
/Sample Tunes/mod/sound-of-da-lunatic.mod:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/photonstorm/FlodJS/6a5814a415f6b1796cf2c80b0a5e3631d162a1a6/Sample Tunes/mod/sound-of-da-lunatic.mod
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | JavaScript Flod 1.0
2 | 2011/11/30/
3 | Christian Corti
4 | Neoart Costa Rica
5 |
6 | E-Mail: flod@neoartcr.com
7 |
8 | This is a JavaScript port of my AS3 Flod library, it currently works only in Chrome (I've used version
9 | 17.0.942.0 to develop it), hopefully in the future other browsers will add support for the Web Audio API.
10 |
11 | It took a lot of effort to reach this stage so if you want to use it in any commercial production I'll ask
12 | you to mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.
13 |
14 | You can include just the player(s) you need in your page just remember that all the Amiga players needs
15 | the Core.js and the Amiga.js files too and the PC player (FT2) needs the Core.js and the Soundblaster.js files.
16 |
17 | Example, including the ProTracker player:
18 | Core.js
19 | Amiga.js
20 | PTPlayer.js
21 |
22 | including the FastTracker II player:
23 | Core.js
24 | Soundblaster.js
25 | F2Player.js
26 |
27 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
28 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
29 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
30 |
31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
32 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
33 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
34 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | JavaScript / HTML5 Flod 2.1
2 | ===========================
3 |
4 | What's new in 2.1:
5 |
6 | * some small modules (less than 2150 bytes) were not recognized as valid
7 | * His Master's Noisetracker, fixed Peggy Go Home null sample pointer
8 | * His Master's Noisetracker, fixed Ikke Advanced wrong patterns pointers
9 | * SoundFX, fixed effect 9
10 | * SoundFX, added support for untouched Operation Stealth modules
11 | * Soundtrackers, fixed period overflow, portamento up/down
12 | * FastTracker II, fixed not working master volume
13 |
14 | What's new in 2.0:
15 |
16 | * new David Whittaker player
17 | * new FredEd player
18 | * new Jochen Hippel player (regular and COSO formats, 4 voices only)
19 | * new Rob Hubbard player
20 | * added DigiBooster Pro 2.18 detection to the XM player
21 | * Delta Music 1.0, fixed wrong sustain value
22 | * Delta Music 2.0, fixed Warfalcons-Intromusik 2 crash
23 | * Delta Music 2.0, fixed wrong restart pointer
24 | * Digital Mugician, fixed sample loop pointer (fixes Hoi Level 4)
25 | * Future Composer (Flod only), 1.0/1.3 was using the wrong waves
26 | * SoundFX, fixed effect 7/8 [step down/up] (fixes Forever Tonight)
27 | * SidMON 2, fixed effect C/F [volume and speed] (fixes Cool Module)
28 | * SidMON 2 was processing effects at tick 0, it shouldn't :)
29 | * SoundMon, fixed buffer restore, most modules didn't play at all
30 | * ProTracker/NoiseTracker fixed vibrato depth value not set at the beginning
31 | * Fixed and updated Flip/Unzip
32 |
33 | This is a JavaScript port of my AS3 Flod library, it currently works only in Chrome (I've used version
34 | 17.0.942.0 to develop it), hopefully in the future other browsers will add support for the Web Audio API.
35 |
36 | It took a lot of effort to reach this stage so if you want to use it in any commercial production I'll ask
37 | you to mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.
38 |
39 | Special thanks to Richard Davey, Mathew Nolan and Andreas Argirakis :)
40 |
41 | This version will replay the following music formats using the Web Audio API:
42 |
43 | * FastTracker II XM PC + DigiBooster Pro 2.18 detection
44 | * The Ultimate Soundtracker (Karsten Obarski)
45 | * DOC Soundtracker 9, DOC Soundtracker 2.0
46 | * Master Soundtracker
47 | * Soundtracker 2.3, Soundtracker 2.5
48 | * NoiseTracker 1.0, NoiseTracker 1.1, NoiseTracker 2.0
49 | * His Master’s NoiseTracker
50 | * ProTracker 1.0, ProTracker 1.1, ProTracker 1.2
51 | * SoundFX 1.0, SoundFX 1.8, SoundFX 1.9, SoundFX 2.0
52 | * FutureComposer 1.0, FutureComposer 1.2, FutureComposer 1.3, FutureComposer 1.4
53 | * SidMON
54 | * SidMON II
55 | * Brian Postma's SoundMon 1.0, 2.0 and 3.0
56 | * DeltaMusic 1.0
57 | * DeltaMusic 2.0, Delta Music 2.2
58 | * Digital Mugician
59 | * Digital Mugician 7 Voices
60 | * David Whittaker
61 | * FredEd
62 | * Jochen Hippel (regular and COSO formats, 4 voices only)
63 | * Rob Hubbard
64 |
65 | Author
66 | ------
67 |
68 | 30th April 2012, Christian Corti
69 | Neoart Costa Rica
70 | E-Mail: flod@neoartcr.com
71 |
72 | Live Demo
73 | ---------
74 |
75 | http://sandbox.photonstorm.com/FlodJS/
76 |
77 | Example
78 | -------
79 |
80 | You can include just the player(s) you need in your page just remember that all the Amiga players needs
81 | the Core.js and the Amiga.js files too and the PC player (FT2) needs the Core.js and the Soundblaster.js files.
82 |
83 | Example, including the ProTracker player:
84 |
85 | Core.js
86 | Amiga.js
87 | PTPlayer.js
88 |
89 | including the FastTracker II player:
90 |
91 | Core.js
92 | Soundblaster.js
93 | F2Player.js
94 |
95 | License
96 | -------
97 |
98 | This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
99 | To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
100 | Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
101 |
102 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
103 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
104 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
105 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------