Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# AE Modular Wiki


This is the Wiki for the AE Modular Synthesizer Format

[[getting-started.md | Get Started]]
[Getting Started](getting-started.md)

[Module Documentation](/modules/)

Expand Down
8 changes: 8 additions & 0 deletions docs/_404.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!-- DOCSIFY_404_MARKER -->

# 404 - Page Not Found

The page you requested doesn’t exist.
Trying alternative fallbacks...

<div id="fallback-log" style="font-family: monospace; margin-top: 1rem;"></div>
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
loadNavbar: true,
loadFooter: true,
auto2top: true,
notFoundPage: '_404.md',
};
</script>
<!-- Docsify v4 -->
Expand All @@ -47,7 +48,6 @@
src="//cdn.jsdelivr.net/npm/docsify-darklight-theme@3/dist/docsify-themeable/index.min.js"
type="text/javascript">
</script>

</body>

</html>
2 changes: 1 addition & 1 deletion docs/modules/cat_IMDI.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

IMDI is the name given to the use of the MIDI protocol within AE Modular, allowing MIDI signals to be patched between compatible modules as easily as CV or audio signals - using single patch cables! First introduced by Wonkystuff with the [mb/1](/modules/wonkystuff/mb1.md) module in 2023, it has since been incorporated into the mainstream Tangible Waves modules giving us a *very* powerful way of controlling our systems!

For an overview of MIDI integration, take a look here: [[IMDI]]
For an overview of MIDI integration, [take a look here](/IMDI.md)

## Modules

Expand Down
7 changes: 1 addition & 6 deletions docs/modules/wonkystuff/_navbar.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
<!-- Logo -->
<a href="#/" title="" class="active"><img src="logo.png" alt="AE Modular Logo"></a>

<!-- Title -->
AE Modular Wiki

* [<img src="logo.png" height="50"/>](/)
* [Modules](/modules/)
* [Getting Started](/getting-started.md)
1 change: 1 addition & 0 deletions docs/plugins/load_plugins.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ import './images.js'
import './pmmarkup.js'
import './toc.js'
import './wikilinks.js'
import './redirect.js'
71 changes: 71 additions & 0 deletions docs/plugins/redirect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
'use strict';
function plugin(hook, vm) {
const fallbacks = ['tangiblewaves', 'bfsynth', 'fauxcyrillic', 'kyaa', 'wonkystuff'];

hook.doneEach(function () {
const contentEl = document.querySelector('.content');

if (!contentEl) return;

// Detect 404 page by marker
if (!contentEl.innerHTML.includes('DOCSIFY_404_MARKER')) return;

const fallbackLog = document.getElementById('fallback-log');
if (!fallbackLog) return;

// Extract original slug from current hash
let hash = location.hash; // e.g. "#/modules/kick"
const match = hash.match(/^#\/modules\/([^\/]+)$/);
if (!match) return;

const slug = match[1];

// Track which fallback we are on
let index = parseInt(sessionStorage.getItem('fallbackIndex') || '0', 10);

function tryNextFallback() {
if (index >= fallbacks.length) {
sessionStorage.removeItem('fallbackIndex');
fallbackLog.textContent += "\nAll fallbacks tried. Showing 404.";
return; // no more fallbacks
}

const prefix = fallbacks[index];
const newHash = '#/modules/' + prefix + '/' + slug;
index++;
sessionStorage.setItem('fallbackIndex', index);

fallbackLog.textContent += `Trying fallback: ${prefix}...\n`;

// Update hash → Docsify will render new page
location.hash = newHash;

// Wait for Docsify to render the new route
setTimeout(() => {
const newContentEl = document.querySelector('.content');
if (!newContentEl) return;

// If still 404, try next fallback
if (newContentEl.innerHTML.includes('DOCSIFY_404_MARKER')) {
tryNextFallback();
} else {
// Success → reset
sessionStorage.removeItem('fallbackIndex');
fallbackLog.textContent += `Loaded fallback: ${prefix}\n`;
}
}, 300);
}

tryNextFallback();
});
}
if (typeof window !== "undefined") {
if (!window.$docsify) {
console.error('no docsify');
} else {
window.$docsify.plugins = [].concat(plugin, window.$docsify.plugins);
}
} else {
module.exports = {plugin}
}