-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ported source.php to plain html. Port hostapps to clientside-rendered…
… javascript. Add titles for both, encoded with zopflipng. Minor cleanup
- Loading branch information
1 parent
ef6e042
commit b4b55c1
Showing
10 changed files
with
379 additions
and
639 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,284 @@ | ||
<!doctype html> | ||
<head> | ||
<title>Destroy FX : Music plugin host softwares</title> | ||
<link rel="stylesheet" type="text/css" href="dfx.css" /> | ||
<style> | ||
tr.odd { | ||
background-color: #F0FFF0; | ||
} | ||
tr.even { | ||
background-color: #FFFFF0; | ||
} | ||
tr.header { | ||
font-weight: bold; | ||
} | ||
|
||
td.colh { | ||
cursor: pointer; | ||
text-decoration: underline; | ||
color: #3A3; | ||
} | ||
|
||
td.colh.enabled { | ||
color: #000; | ||
background-color: #FF0; | ||
} | ||
|
||
a { | ||
color: #77F; | ||
} | ||
|
||
div.above { | ||
font-size: 16px; | ||
font-weight: bold; | ||
margin: 4px auto; | ||
width: 300px; | ||
text-align: center; | ||
color: #AAA; | ||
} | ||
|
||
div.reset { | ||
color: #A33; | ||
cursor: pointer; | ||
text-decoration: underline; | ||
} | ||
|
||
body { | ||
background: #000; | ||
} | ||
|
||
table { | ||
background-color: white; | ||
border-width: 2px; | ||
border-style: solid; | ||
border-color: #424242; | ||
border-collapse: collapse; | ||
margin-left: auto; | ||
margin-right: auto; | ||
} | ||
td, tr { | ||
border-width: 1px; | ||
border-color: #919599; | ||
border-style: solid; | ||
padding: 3px; | ||
} | ||
td { | ||
text-align: center; | ||
} | ||
|
||
div.legend { | ||
color: #AAA; | ||
text-align: center; | ||
width: 600px; | ||
margin: 6px auto; | ||
} | ||
|
||
</style> | ||
</head> | ||
|
||
<!-- old --> | ||
|
||
<style> | ||
</style> | ||
|
||
<script> | ||
const YES = '•'; | ||
const NO = ' '; | ||
const FREE = '◊'; | ||
const TEMPO = '*'; | ||
const FORTHCOMING = "☆"; | ||
const UNSURE = '?'; | ||
|
||
const hosts = [ | ||
{'name': 'Logic', 'url': 'http:https://www.apple.com/logic/', 'au': '5.4', 'vst': null, 'tempo': '4.7', 'midi': '5.0', 'inst': '4.2', 'osx': '5.3', 'win': null}, | ||
{'name': 'Digital Performer', 'url': 'http:https://www.motu.com/', 'au': '4.1', 'vst': '8.0', 'tempo': YES, 'midi': '4.5', 'inst': YES, 'osx': '4.0', 'win': '8.?'}, | ||
{'name': 'Ableton Live', 'url': 'http:https://www.ableton.com/', 'au': '4.0', 'vst': YES, 'tempo': '2.0', 'midi': '4.0', 'inst': '4.0', 'osx': YES, 'win': YES}, | ||
{'name': 'Max/MSP', 'url': 'http:https://www.cycling74.com/', 'au': null, 'vst': YES, 'tempo': null, 'midi': YES, 'inst': YES, 'osx': '4.2', 'win': '4.3'}, | ||
{'name': 'Plogue Bidule', 'url': 'http:https://www.plogue.com/', 'au': YES, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': YES}, | ||
{'name': 'Wave Editor', 'url': 'http:https://audiofile-engineering.com/', 'au': YES, 'vst': '1.4', 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Peak', 'url': 'http:https://www.bias-inc.com/', 'au': '4.0', 'vst': '2.5', 'tempo': '5.0', 'midi': '5.0', 'inst': '5.0', 'osx': '3.0', 'win': null}, | ||
{'name': 'Deck', 'url': 'http:https://www.bias-inc.com/', 'au': null, 'vst': '3.0', 'tempo': null, 'midi': null, 'inst': null, 'osx': '3.5', 'win': null}, | ||
{'name': 'Cubase', 'url': 'http:https://www.steinberg.net/', 'au': null, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': YES}, | ||
{'name': 'Nuendo', 'url': 'http:https://www.steinberg.net/', 'au': null, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': '2.0', 'win': YES}, | ||
{'name': 'WaveLab', 'url': 'http:https://www.steinberg.net/', 'au': null, 'vst': YES, 'tempo': null, 'midi': null, 'inst': null, 'osx': '7.0', 'win': YES}, | ||
{'name': 'Final Cut Pro', 'url': 'http:https://www.apple.com/finalcutpro/', 'au': '4.0', 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': '3.0', 'win': null}, | ||
{'name': 'Final Cut Express', 'url': 'http:https://www.apple.com/finalcutexpress/', 'au': '2.0', 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Soundtrack', 'url': 'http:https://www.apple.com/soundtrack/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'GarageBand', 'url': 'http:https://www.apple.com/ilife/garageband/', 'au': YES, 'vst': null, 'tempo': YES, 'midi': null, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'Ardour', 'url': 'http:https://ardour.org/', 'au': '2.2', 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': '2.2', 'win': null, 'free': YES}, | ||
{'name': 'Melodyne', 'url': 'http:https://www.celemony.com/', 'au': '2.0', 'vst': '2.0', 'tempo': null, 'midi': null, 'inst': YES, 'osx': YES, 'win': YES}, | ||
{'name': 'Metro', 'url': 'http:https://www.sagantech.biz/', 'au': '5.8', 'vst': '4.0', 'tempo': YES, 'midi': YES, 'inst': '6.0', 'osx': '5.8', 'win': null}, | ||
{'name': 'WaveBurner', 'url': 'http:https://www.apple.com/logicstudio/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Studio One', 'url': 'http:https://www.presonus.com/', 'au': YES, 'vst': YES, 'tempo': YES, 'midi': null, 'inst': YES, 'osx': YES, 'win': YES}, | ||
{'name': 'Impromptu', 'url': 'http:https://impromptu.moso.com.au/', 'au': YES, 'vst': null, 'tempo': UNSURE, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Sound Studio', 'url': 'http:https://felttip.com/ss/', 'au': '3.0', 'vst': null, 'tempo': UNSURE, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Intuem', 'url': 'http:https://www.intuem.com/', 'au': '2.0', 'vst': null, 'tempo': null, 'midi': null, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'SONASPHERE', 'url': 'http:https://www.sonasphere.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Numerology', 'url': 'http:https://www.five12.com/', 'au': '1.2', 'vst': null, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'DSP-Quattro', 'url': 'http:https://www.dsp-quattro.com/', 'au': '1.2', 'vst': '3.1', 'tempo': null, 'midi': null, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'Amadeus Pro', 'url': 'http:https://www.hairersoft.com/', 'au': YES, 'vst': YES, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Amadeus II', 'url': 'http:https://www.hairersoft.com/', 'au': '3.7.2', 'vst': '3.2', 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'Audacity', 'url': 'http:https://audacity.sourceforge.net/', 'au': '1.3', 'vst': YES, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': YES, 'free': YES}, | ||
{'name': 'Toast', 'url': 'http:https://www.roxio.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'TwistedWave', 'url': 'http:https://twistedwave.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'soundBlade', 'url': 'http:https://www.sonicstudio.com/', 'au': YES, 'vst': YES, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'XO Wave', 'url': 'http:https://www.xowave.com/', 'au': YES, 'vst': null, 'tempo': UNSURE, 'midi': UNSURE, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'AU Lab', 'url': 'http:https://developer.apple.com/audio/', 'au': YES, 'vst': null, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'SonicBirth', 'url': 'http:https://sonicbirth.sourceforge.net/', 'au': YES, 'vst': null, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Sample Manager', 'url': 'http:https://audiofile-engineering.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'WireTap Studio', 'url': 'http:https://www.ambrosiasw.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'CPS', 'url': 'http:https://cps.bonneville.nl/', 'au': FORTHCOMING, 'vst': '1.3 (Windows)', 'tempo': null, 'midi': YES, 'inst': YES, 'osx': '1.4', 'win': YES, 'free': YES}, | ||
{'name': 'Critters', 'url': 'http:https://www.grain-brain.com/critters.html', 'au': '2.0', 'vst': null, 'tempo': YES, 'midi': null, 'inst': YES, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'djay', 'url': 'http:https://www.algoriddim.net/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Neutrino', 'url': 'http:https://machinecodex.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null}, | ||
{'name': 'AudioMulch', 'url': 'http:https://audiomulch.com/', 'au': '2.1', 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': '2.0', 'win': YES}, | ||
{'name': 'Audiohive', 'url': 'http:https://openstudionetworks.com/', 'au': YES, 'vst': null, 'tempo': UNSURE, 'midi': UNSURE, 'inst': UNSURE, 'osx': YES, 'win': null}, | ||
{'name': 'Rax', 'url': 'http:https://audiofile-engineering.com/rax/', 'au': YES, 'vst': null, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'SynthTest', 'url': 'http:https://www.manyetas.com/creed/synthtest.html', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': YES, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Audio Hijack Pro', 'url': 'http:https://www.rogueamoeba.com/audiohijack/', 'au': YES, 'vst': YES, 'tempo': null, 'midi': YES, 'inst': YES, 'osx': YES, 'win': null}, | ||
{'name': 'AudioXplorer', 'url': 'http:https://www.arizona-software.ch/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Ouroboros', 'url': 'http:https://illposed.com/', 'au': YES, 'vst': null, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null, 'free': YES}, | ||
{'name': 'Sound Forge', 'url': 'http:https://www.sonycreativesoftware.com/', 'au': null, 'vst': '8.0', 'tempo': UNSURE, 'midi': null, 'inst': null, 'osx': null, 'win': YES}, | ||
{'name': 'ACID Pro', 'url': 'http:https://www.sonycreativesoftware.com/', 'au': null, 'vst': YES, 'tempo': YES, 'midi': UNSURE, 'inst': '4.0', 'osx': null, 'win': YES}, | ||
{'name': 'Vegas', 'url': 'http:https://www.sonycreativesoftware.com/', 'au': null, 'vst': '6.0', 'tempo': UNSURE, 'midi': null, 'inst': null, 'osx': null, 'win': YES}, | ||
{'name': 'Reaper', 'url': 'http:https://reaper.fm/', 'au': YES, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': YES, 'win': YES}, | ||
{'name': 'BUZZ', 'url': 'http:https://www.buzzmachines.com/', 'au': null, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': null, 'win': YES, 'free': YES}, | ||
{'name': 'FL Studio', 'url': 'http:https://www.flstudio.com/', 'au': null, 'vst': '3.0', 'tempo': null, 'midi': YES, 'inst': YES, 'osx': null, 'win': YES}, | ||
{'name': 'Tracktion', 'url': 'http:https://www.rawmaterialsoftware.com/', 'au': null, 'vst': YES, 'tempo': YES, 'midi': YES, 'inst': YES, 'osx': '1.4', 'win': YES}, | ||
{'name': 'SynthEdit', 'url': 'http:https://www.synthedit.com/', 'au': null, 'vst': YES, 'tempo': null, 'midi': YES, 'inst': YES, 'osx': null, 'win': YES}, | ||
{'name': 'Orion', 'url': 'http:https://www.synapse-audio.com/', 'au': null, 'vst': YES, 'tempo': '2.7', 'midi': '2.7', 'inst': YES, 'osx': null, 'win': YES}, | ||
{'name': 'Spark', 'url': 'http:https://www.tcelectronic.com/', 'au': '2.8', 'vst': YES, 'tempo': '2.8', 'midi': '2.0', 'inst': '2.0', 'osx': '2.1', 'win': null}, | ||
{'name': 'Spark ME', 'url': 'http:https://www.tcelectronic.com/', 'au': '2.8', 'vst': YES, 'tempo': null, 'midi': null, 'inst': null, 'osx': YES, 'win': null, 'free': YES}, | ||
]; | ||
|
||
function makeElement(what, cssclass, elt) { | ||
var e = document.createElement(what); | ||
if (cssclass) | ||
e.setAttribute('class', cssclass); | ||
if (elt) | ||
elt.appendChild(e); | ||
return e; | ||
} | ||
function IMG(cssclass, elt) { return makeElement('IMG', cssclass, elt); } | ||
function DIV(cssclass, elt) { return makeElement('DIV', cssclass, elt); } | ||
function SPAN(cssclass, elt) { return makeElement('SPAN', cssclass, elt); } | ||
function A(cssclass, elt) { return makeElement('A', cssclass, elt); } | ||
function TABLE(cssclass, elt) { return makeElement('TABLE', cssclass, elt); } | ||
function TR(cssclass, elt) { return makeElement('TR', cssclass, elt); } | ||
function TD(cssclass, elt) { return makeElement('TD', cssclass, elt); } | ||
function TEXT(contents, elt) { | ||
var e = document.createTextNode(contents); | ||
if (elt) | ||
elt.appendChild(e); | ||
return e; | ||
} | ||
|
||
function redraw() { | ||
// As column names, e.g. ['midi', 'mac'] | ||
let url_hash = window.location.hash; | ||
let keys = url_hash.length > 0 ? url_hash.substr(1).split(',') : []; | ||
let hasKey = (k) => { | ||
for (let kk of keys) { | ||
console.log(kk); | ||
if (k == kk) return true; | ||
} | ||
return false; | ||
}; | ||
|
||
let elt = document.getElementById('hosts'); | ||
elt.innerHTML = ''; | ||
|
||
|
||
let reset = DIV('above', elt); | ||
if (keys.length == 0) { | ||
TEXT('Click column headers to filter', reset); | ||
} else { | ||
reset.classList.add('reset'); | ||
TEXT('Clear filters', reset); | ||
reset.onclick = () => { | ||
window.location.hash = ''; | ||
redraw(); | ||
}; | ||
} | ||
|
||
let table = TABLE('hosts', elt); | ||
|
||
const cols = {'au': 'AU support', | ||
'vst': 'VST support', | ||
'tempo': 'Tempo sync', | ||
'midi': 'MIDI for effects †', | ||
'inst': 'Instruments §', | ||
'osx': 'Mac OS X', | ||
'win': 'Windows'}; | ||
|
||
// Header | ||
let hdr = TR('header', table); | ||
TEXT('host name', TD('header', hdr)); | ||
|
||
for (let c in cols) { | ||
let colh = TD('colh', hdr); | ||
if (hasKey(c)) colh.classList.add('enabled'); | ||
colh.innerHTML = cols[c]; | ||
colh.onclick = () => { | ||
// Toggle its presence in the list. | ||
if (hasKey(c)) { | ||
keys = keys.filter(k => k !== c); | ||
} else { | ||
keys.push(c); | ||
} | ||
console.log(keys); | ||
window.location.hash = keys.join(','); | ||
redraw(); | ||
}; | ||
} | ||
|
||
// Now host data, filtered. | ||
const included = (h) => { | ||
for (let k of keys) { | ||
if (h[k] === null) return false; | ||
} | ||
return true; | ||
}; | ||
|
||
let even = true; | ||
for (let host of hosts) { | ||
if (included(host)) { | ||
let name = host.name; | ||
if (host.free != null) name += ' ' + FREE; | ||
let row = TR(even ? 'even' : 'odd', table); | ||
let hosttd = TD('', row); | ||
let a = A('host', hosttd); | ||
a.href = host.url; | ||
TEXT(host.name, a); | ||
if (host.free != null) TEXT(' ◊', hosttd); | ||
|
||
for (let c in cols) { | ||
if (host[c] == null) { | ||
TD('', row).innerHTML = ' ' | ||
} else { | ||
TD('', row).innerHTML = host[c]; | ||
} | ||
} | ||
even = !even; | ||
} | ||
} | ||
} | ||
|
||
</script> | ||
|
||
<body onload="redraw()"> | ||
<a href="index.html"><img class="centered" src="hostapps-title.png" alt="Destroy FX: Host App Information"></a> | ||
<div id="hosts"> | ||
Please enable javascript or read the source code! | ||
</div> | ||
|
||
<div class="legend"> | ||
<br>* Buffer Override, EQ Sync, Scrubby, and Skidder have tempo sync features | ||
<br>† Buffer Override, Geometer, MIDI Gater, Rez Synth, Scrubby, Skidder, and Transverb are effects that process audio and MIDI | ||
<br>§ Turntablist is an "instrument" plugin | ||
<br>◊ = free | ||
<br>☆ forthcoming version (not available yet) | ||
</div> | ||
</body> | ||
|
||
</html> |
Oops, something went wrong.