176 lines
11 KiB
XML
176 lines
11 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 512 512" width="100%" height="100%" id="midi-harbor-icon">
|
|
<defs>
|
|
<!-- Background Gradient -->
|
|
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
<stop offset="0%" stop-color="#0a101d" />
|
|
<stop offset="50%" stop-color="#07172b" />
|
|
<stop offset="100%" stop-color="#020813" />
|
|
</linearGradient>
|
|
<!-- Ring Glow Gradient -->
|
|
<linearGradient id="ringGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#00f2fe" />
|
|
<stop offset="50%" stop-color="#0066ff" />
|
|
<stop offset="100%" stop-color="#7b2cbf" />
|
|
</linearGradient>
|
|
<!-- Anchor Metal Gradient -->
|
|
<linearGradient id="anchorGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#ffffff" />
|
|
<stop offset="40%" stop-color="#e0e8f5" />
|
|
<stop offset="70%" stop-color="#94a3b8" />
|
|
<stop offset="100%" stop-color="#475569" />
|
|
</linearGradient>
|
|
<!-- Cable Outer Glow -->
|
|
<radialGradient id="centerGlow" cx="50%" cy="50%" r="50%">
|
|
<stop offset="0%" stop-color="#00f2fe" stop-opacity="0.25" />
|
|
<stop offset="100%" stop-color="#00f2fe" stop-opacity="0" />
|
|
</radialGradient>
|
|
<!-- Drop Shadow Filters -->
|
|
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
<feGaussianBlur in="SourceAlpha" stdDeviation="12" result="blur" />
|
|
<feOffset in="blur" dx="0" dy="8" result="offset" />
|
|
<feFlood flood-color="#000000" flood-opacity="0.6" result="color" />
|
|
<feComposite in="color" in2="offset" operator="in" result="shadow" />
|
|
<feMerge>
|
|
<feMergeNode in="shadow" />
|
|
<feMergeNode in="SourceGraphic" />
|
|
</feMerge>
|
|
</filter>
|
|
<filter id="metalShadow" x="-30%" y="-30%" width="160%" height="160%">
|
|
<feGaussianBlur in="SourceAlpha" stdDeviation="15" result="blur" />
|
|
<feOffset in="blur" dx="0" dy="10" result="offset" />
|
|
<feFlood flood-color="#000000" flood-opacity="0.7" result="color" />
|
|
<feComposite in="color" in2="offset" operator="in" result="shadow" />
|
|
<feMerge>
|
|
<feMergeNode in="shadow" />
|
|
<feMergeNode in="SourceGraphic" />
|
|
</feMerge>
|
|
</filter>
|
|
<filter id="glow" filterUnits="userSpaceOnUse" x="0" y="0" width="512" height="512">
|
|
<feGaussianBlur stdDeviation="8" result="blur" />
|
|
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
|
</filter>
|
|
<filter id="anchorGlow" x="-20%" y="-20%" width="140%" height="140%">
|
|
<feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur" />
|
|
<feOffset in="blur" dx="0" dy="4" result="offset" />
|
|
<feFlood flood-color="#00f2fe" flood-opacity="0.4" result="color" />
|
|
<feComposite in="color" in2="offset" operator="in" result="shadow" />
|
|
<feMerge>
|
|
<feMergeNode in="shadow" />
|
|
<feMergeNode in="SourceGraphic" />
|
|
</feMerge>
|
|
</filter>
|
|
<style>
|
|
.bg-ring { fill: none; stroke: url(#ringGrad); stroke-width: 3; opacity: 0.3; }
|
|
.data-stream { fill: none; stroke: #00f2fe; stroke-width: 2.5; stroke-dasharray: 6 8; opacity: 0.8; }
|
|
.anchor-body { fill: url(#anchorGrad); }
|
|
.midi-pin { fill: #07172b; stroke: #00f2fe; stroke-width: 1.5; }
|
|
.connection-node { fill: #00f2fe; filter: url(#glow); }
|
|
.status-pulse { fill: #10b981; filter: url(#glow); }
|
|
</style>
|
|
</defs>
|
|
<g id="layer-background" inkscape:label="Background" inkscape:groupmode="layer">
|
|
<g id="background-tile" inkscape:label="Tile and border">
|
|
<!-- App Icon Background -->
|
|
<rect width="512" height="512" rx="112" fill="url(#bgGrad)" id="tile" />
|
|
<!-- Outer Border Highlight -->
|
|
<rect x="2" y="2" width="508" height="508" rx="110" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-opacity="0.1" id="border-highlight" />
|
|
</g>
|
|
<g id="ambient-glow" inkscape:label="Ambient glow">
|
|
<!-- Center Ambient Glow -->
|
|
<circle cx="256" cy="256" r="200" fill="url(#centerGlow)" id="center-glow" />
|
|
</g>
|
|
</g>
|
|
<g id="layer-topology" inkscape:label="Topology" inkscape:groupmode="layer">
|
|
<!-- Network & Hardware Topology Mesh (Harbor Node Web) -->
|
|
<g opacity="0.4" id="topology-mesh" inkscape:label="Harbor mesh">
|
|
<g id="orbital-rings" inkscape:label="Orbital rings">
|
|
<!-- Orbital Rings -->
|
|
<circle cx="256" cy="256" r="180" class="bg-ring" stroke-dasharray="12 12" id="outer-orbit" />
|
|
<circle cx="256" cy="256" r="130" class="bg-ring" id="inner-orbit" />
|
|
</g>
|
|
<g id="connection-lines" inkscape:label="Connection lines">
|
|
<!-- Connection Lines (USB, Network, BLE, Virtual) -->
|
|
<path d="M 100 180 L 170 210 M 412 180 L 342 210 M 120 340 L 180 310 M 392 340 L 332 310" stroke="#00f2fe" stroke-width="2" opacity="0.5" stroke-dasharray="4 4" id="diagonal-links" />
|
|
<path d="M 256 70 L 256 120 M 256 390 L 256 440" stroke="#00f2fe" stroke-width="2" opacity="0.5" stroke-dasharray="4 4" id="vertical-links" />
|
|
</g>
|
|
<g id="peripheral-ports" inkscape:label="Peripheral ports">
|
|
<!-- Peripheral Nodes -->
|
|
<!-- Hardware (USB) -->
|
|
<circle cx="100" cy="180" r="8" fill="#07172b" stroke="#00f2fe" stroke-width="2" id="hardware-port" />
|
|
<!-- Network (RTP) -->
|
|
<circle cx="412" cy="180" r="8" fill="#07172b" stroke="#00f2fe" stroke-width="2" id="network-port" />
|
|
<!-- Bluetooth LE -->
|
|
<circle cx="120" cy="340" r="8" fill="#07172b" stroke="#00f2fe" stroke-width="2" id="bluetooth-port" />
|
|
<!-- Virtual Port -->
|
|
<circle cx="392" cy="340" r="8" fill="#07172b" stroke="#00f2fe" stroke-width="2" id="virtual-port" />
|
|
</g>
|
|
</g>
|
|
</g>
|
|
<g id="layer-cables" inkscape:label="Connection cables" inkscape:groupmode="layer">
|
|
<!-- Auto-Repairing Connection Swirls (MIDI Cable + Harbor Anchor Motif) -->
|
|
<g filter="url(#shadow)" id="connection-cables" inkscape:label="Cable strands">
|
|
<g id="cyan-cable" inkscape:label="Hardware and virtual">
|
|
<!-- Left Cable Strand (Hardware/Virtual) -->
|
|
<path d="M 100 180 C 140 240, 180 340, 256 380" fill="none" stroke="#00f2fe" stroke-width="5" stroke-linecap="round" opacity="0.8" filter="url(#glow)" id="cyan-strand" />
|
|
</g>
|
|
<g id="violet-cable" inkscape:label="Network and RTP-MIDI">
|
|
<!-- Right Cable Strand (Network/RTP) -->
|
|
<path d="M 412 180 C 372 240, 332 340, 256 380" fill="none" stroke="#7b2cbf" stroke-width="5" stroke-linecap="round" opacity="0.8" id="violet-strand" />
|
|
</g>
|
|
</g>
|
|
</g>
|
|
<g id="layer-anchor" inkscape:label="MIDI anchor" inkscape:groupmode="layer">
|
|
<!-- CENTRAL ANCHOR & MIDI DIN CONNECTOR HYBRID -->
|
|
<g filter="url(#shadow)" id="anchor-assembly" inkscape:label="Anchor assembly">
|
|
<g id="metal-silhouette" inkscape:label="Single metal silhouette">
|
|
<!-- MIDI socket note head with one lower anchor-fluke flag. -->
|
|
<path d="M 141.000 310.000 L 181.000 310.000 L 168.000 322.000 C 172.000 350.000 198.000 363.000 242.000 365.000 L 242.000 202.000 L 165.000 202.000 C 163.874 202.000 162.836 201.628 162.000 201.000 L 162.000 203.000 C 162.000 204.657 160.657 206.000 159.000 206.000 L 153.000 206.000 C 151.343 206.000 150.000 204.657 150.000 203.000 L 150.000 179.000 C 150.000 177.343 151.343 176.000 153.000 176.000 L 159.000 176.000 C 160.657 176.000 162.000 177.343 162.000 179.000 L 162.000 181.000 C 162.836 180.372 163.874 180.000 165.000 180.000 L 242.000 180.000 L 242.000 170.926 C 222.320 164.935 208.000 146.640 208.000 125.000 C 208.000 98.490 229.490 77.000 256.000 77.000 C 282.510 77.000 304.000 98.490 304.000 125.000 C 304.000 146.640 289.680 164.935 270.000 170.926 L 270.000 180.000 L 347.000 180.000 C 348.126 180.000 349.164 180.372 350.000 181.000 L 350.000 179.000 C 350.000 177.343 351.343 176.000 353.000 176.000 L 359.000 176.000 C 360.657 176.000 362.000 177.343 362.000 179.000 L 362.000 203.000 C 362.000 204.657 360.657 206.000 359.000 206.000 L 353.000 206.000 C 351.343 206.000 350.000 204.657 350.000 203.000 L 350.000 201.000 C 349.164 201.628 348.126 202.000 347.000 202.000 L 270.000 202.000 L 270.000 404.000 C 270.000 407.314 267.314 410.000 264.000 410.000 L 248.000 410.000 C 247.127 410.000 246.298 409.814 245.550 409.479 C 198.464 404.741 150.000 379.287 150.000 320.000 Z M 292.000 125.000 C 292.000 105.118 275.882 89.000 256.000 89.000 C 236.118 89.000 220.000 105.118 220.000 125.000 C 220.000 144.882 236.118 161.000 256.000 161.000 C 275.882 161.000 292.000 144.882 292.000 125.000 Z" class="anchor-body" id="anchor-silhouette" filter="url(#metalShadow)" />
|
|
</g>
|
|
<g id="midi-socket" inkscape:label="MIDI socket">
|
|
<g id="socket-rim" inkscape:label="Socket interior and rim">
|
|
<!-- MIDI socket interior and rim. -->
|
|
<circle cx="256" cy="125" r="36" fill="#07172b" id="socket-interior" />
|
|
<circle cx="256" cy="125" r="35" fill="none" stroke="#00f2fe" stroke-width="2" opacity="0.6" id="socket-outline" />
|
|
</g>
|
|
<!-- MIDI 5-PIN Configuration Inside the Anchor Shackling Ring -->
|
|
<!-- 180-degree arc standard MIDI layout -->
|
|
<g filter="url(#anchorGlow)" id="midi-pins" inkscape:label="Five MIDI pins">
|
|
<!-- Pin 1 (Sound / Control) -->
|
|
<circle cx="230" cy="133" r="4.5" class="midi-pin" />
|
|
<!-- Pin 2 (Shield/Ground) -->
|
|
<circle cx="240" cy="113" r="4.5" class="midi-pin" />
|
|
<!-- Pin 3 (Master Center) -->
|
|
<circle cx="256" cy="105" r="5" fill="#00f2fe" filter="url(#glow)" />
|
|
<!-- Pin 4 (Data +) -->
|
|
<circle cx="272" cy="113" r="4.5" class="midi-pin" />
|
|
<!-- Pin 5 (Data -) -->
|
|
<circle cx="282" cy="133" r="4.5" class="midi-pin" />
|
|
</g>
|
|
</g>
|
|
<g id="heartbeat" inkscape:label="Heartbeat">
|
|
<!-- Center Daemon "Alive" Heartbeat Core -->
|
|
<circle cx="256" cy="191" r="6" fill="#10b981" filter="url(#glow)" id="heartbeat-light" />
|
|
</g>
|
|
</g>
|
|
</g>
|
|
<g id="layer-wireless" inkscape:label="Wireless signal" inkscape:groupmode="layer">
|
|
<g id="wireless-waves" inkscape:label="Signal arcs">
|
|
<!-- Bluetooth & Network Wireless Waves Overlaying the Anchor Stock -->
|
|
<path d="M 236 70 C 248 62, 264 62, 276 70" fill="none" stroke="#00f2fe" stroke-width="3" stroke-linecap="round" opacity="0.9" filter="url(#glow)" id="inner-wave" />
|
|
<path d="M 224 56 C 244 42, 268 42, 288 56" fill="none" stroke="#00f2fe" stroke-width="3" stroke-linecap="round" opacity="0.5" id="outer-wave" />
|
|
</g>
|
|
</g>
|
|
<g id="layer-indicators" inkscape:label="Status lights" inkscape:groupmode="layer">
|
|
<g id="link-status" inkscape:label="Active links">
|
|
<!-- Status / Health Indicators (Daemon Persistence Nodes) -->
|
|
<!-- Active Link (Green) -->
|
|
<circle cx="170" cy="210" r="4" class="status-pulse" id="left-link-status" />
|
|
<circle cx="342" cy="210" r="4" class="status-pulse" id="right-link-status" />
|
|
</g>
|
|
<g id="data-particles" inkscape:label="Data particles">
|
|
<!-- Subtle Data Flow Particles -->
|
|
<circle cx="256" cy="260" r="2.5" fill="#00f2fe" opacity="0.9" id="upper-particle" />
|
|
<circle cx="256" cy="310" r="2.5" fill="#00f2fe" opacity="0.9" id="lower-particle" />
|
|
</g>
|
|
</g>
|
|
</svg>
|