Skip to content
Merged
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
21 changes: 15 additions & 6 deletions assets/js/site-chrome.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,21 @@
icon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 10v4M8 7v10M12 4v16M16 7v10M20 10v4"/></svg>'
},
{
id: "audiocomponents",
name: "audiocomponents",
path: "/audiocomponents/",
url: ROOT + "/audiocomponents/",
tag: "Instruments & FX",
desc: "55 instruments and 45 effects on audiodsp",
id: "audioinstruments",
name: "audioinstruments",
path: "/audioinstruments/",
url: ROOT + "/audioinstruments/",
tag: "Instruments",
desc: "33 playable instruments on audiodsp",
icon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>'
},
{
id: "audioeffects",
name: "audioeffects",
path: "/audioeffects/",
url: ROOT + "/audioeffects/",
tag: "Effects",
desc: "45 studio and pedal effects on audiodsp",
icon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>'
},
{
Expand Down
106 changes: 89 additions & 17 deletions data/repos_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
},
"moved": {
"displayif": "now [`modules/displayif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/displayif) in micropython-pydevices. The old repository is archived.",
"audiocomponents": "split into [`audioinstruments`](https://github.com/PyDevices/audioinstruments) and [`audioeffects`](https://github.com/PyDevices/audioeffects). The old repository is archived.",
"audioif": "now [`modules/audioif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/audioif) in micropython-pydevices. The old repository is archived.",
"cameraif": "now [`modules/cameraif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/cameraif) in micropython-pydevices. The old repository is archived.",
"usbif": "the C module is now [`modules/usbhost`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/usbhost) in micropython-pydevices; the Python USB packages are in [pydevices](https://github.com/PyDevices/pydevices/blob/main/docs/guides/usb.md). The old repository is archived.",
Expand Down Expand Up @@ -120,7 +121,7 @@
"theme_color": "var(--tier-1-amber)",
"eyebrow": "audiodsp",
"headline": "audiodsp — CircuitPython-compatible audio for MicroPython and CPython.",
"description": "CircuitPython's audio system (audiocore, synthio, audiomixer, effects, audiomp3) ported to MicroPython and CPython, extending CircuitPython along the way: dynamics, routing, convolution, and offline rendering. On PyPI as pydevices-audiodsp; the instrument and effect libraries built on it ship from audiocomponents.",
"description": "CircuitPython's audio system (audiocore, synthio, audiomixer, effects, audiomp3) ported to MicroPython and CPython, extending CircuitPython along the way: dynamics, routing, convolution, and offline rendering. On PyPI as pydevices-audiodsp; the instrument and effect libraries built on it are audioinstruments and audioeffects.",
"hero_canvas": {
"app": "signal_gen",
"width": 480,
Expand All @@ -145,8 +146,8 @@
"tier_color": true
},
{
"label": "audiocomponents",
"href": "https://pydevices.github.io/audiocomponents/",
"label": "audioinstruments",
"href": "https://pydevices.github.io/audioinstruments/",
"tier_color": true
}
]
Expand Down Expand Up @@ -184,14 +185,14 @@
}
]
},
"audiocomponents": {
"audioinstruments": {
"tier": 1,
"page": "portal-subdir",
"tier_name": "Core Platform & Board Contract",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "audiocomponents",
"headline": "audiocomponents — 55 classic instruments and 45 effects, in pure Python, on audiodsp.",
"description": "The instrument and effect libraries for audiodsp: audioinstruments (55 modelled classics, from the TR-808 to the DX7) and audioeffects (45 effect classes and racks), pure Python on MicroPython and CPython. Ships as pydevices-audioinstruments and pydevices-audioeffects, each a standalone distribution on TestPyPI and a MIP package.",
"eyebrow": "audioinstruments",
"headline": "audioinstruments — 33 playable synthesizers, organs, electric pianos and drum machines, in pure Python.",
"description": "Playable synthesizers, organs, electric pianos and drum machines, each a patch of modules on a virtual rack, rendered a block at a time on audiodsp. Pure Python on CPython and MicroPython-compatible firmware. Install omnipython-audioinstruments from TestPyPI, or audioinstruments from the MIP index.",
"hero_canvas": {
"app": "audio_scope",
"width": 240,
Expand All @@ -202,22 +203,93 @@
"buttons": [
{
"label": "GitHub Repo",
"href": "https://github.com/PyDevices/audiocomponents",
"href": "https://github.com/PyDevices/audioinstruments",
"primary": true
},
{
"label": "Docs",
"href": "https://github.com/PyDevices/audioinstruments/blob/main/docs/overview.md",
"tier_color": true
},
{
"label": "Instruments",
"href": "https://github.com/PyDevices/audioinstruments/blob/main/docs/instruments.md",
"tier_color": true
},
{
"label": "TestPyPI",
"href": "https://test.pypi.org/project/omnipython-audioinstruments/",
"tier_color": true
}
]
},
"audioeffects": {
"tier": 1,
"page": "portal-subdir",
"tier_name": "Core Platform & Board Contract",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "audioeffects",
"headline": "audioeffects — 45 studio and guitar-pedal effects, in pure Python.",
"description": "Compressors, EQs, reverbs, delays, modulation, drive and amp simulation, pitch shifters and racks, pure Python on audiodsp's audio nodes, the same on MicroPython-compatible boards, CircuitPython-compatible boards and a desktop. Install omnipython-audioeffects from TestPyPI, or audioeffects from the MIP index.",
"hero_canvas": {
"app": "signal_gen",
"width": 240,
"height": 240,
"shape": "square",
"app_url": "https://PyDevices.github.io/assets/apps/signal_gen.py"
},
"buttons": [
{
"label": "GitHub Repo",
"href": "https://github.com/PyDevices/audioeffects",
"primary": true
},
{
"label": "Docs",
"href": "https://github.com/PyDevices/audioeffects/blob/main/docs/index.md",
"tier_color": true
},
{
"label": "Effects",
"href": "https://github.com/PyDevices/audioeffects/blob/main/docs/reference/effects.md",
"tier_color": true
},
{
"label": "TestPyPI",
"href": "https://test.pypi.org/project/omnipython-audioeffects/",
"tier_color": true
}
]
},
"audiocomponents": {
"tier": 1,
"page": "portal-subdir",
"portal_grid": false,
"title": "PyDevices - audiocomponents (moved)",
"tier_name": "Core Platform & Board Contract",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "audiocomponents · moved",
"headline": "audiocomponents has split into audioinstruments and audioeffects.",
"description": "Split into two repositories: audioinstruments, the playable synthesizers, organs, electric pianos and drum machines, and audioeffects, the studio and guitar-pedal effects. Both are 0.5.0 on TestPyPI and the MIP index, under the same names. Your code doesn't change. The old repository is archived.",
"buttons": [
{
"label": "audioinstruments",
"href": "https://github.com/PyDevices/audioinstruments",
"primary": true
},
{
"label": "Component API",
"href": "https://github.com/PyDevices/audiocomponents/blob/main/docs/reference/component-api.md",
"label": "audioeffects",
"href": "https://github.com/PyDevices/audioeffects",
"tier_color": true
},
{
"label": "TestPyPI: instruments",
"href": "https://test.pypi.org/project/pydevices-audioinstruments/",
"label": "Instruments docs",
"href": "https://github.com/PyDevices/audioinstruments/blob/main/docs/overview.md",
"tier_color": true
},
{
"label": "TestPyPI: effects",
"href": "https://test.pypi.org/project/pydevices-audioeffects/",
"label": "Archived repo",
"href": "https://github.com/PyDevices/audiocomponents",
"tier_color": true
}
]
Expand Down Expand Up @@ -904,7 +976,7 @@
"theme_color": "var(--tier-5-steel)",
"eyebrow": "mpvst",
"headline": "MPVST — audio effects and instruments as a VST3 plug-in.",
"description": "Programmable VST3 instruments and effects: every audiocomponents instrument and effect as a named plug-in, each instance running its Python in a sidecar process. Installers for Windows and Linux; nothing has to be built.",
"description": "Programmable VST3 instruments and effects: every audioinstruments instrument and audioeffects effect as a named plug-in, each instance running its Python in a sidecar process. Installers for Windows and Linux; nothing has to be built.",
"hero_canvas": {
"app": "ftp_scope",
"width": 240,
Expand All @@ -929,8 +1001,8 @@
"tier_color": true
},
{
"label": "audiocomponents",
"href": "https://pydevices.github.io/audiocomponents/",
"label": "audioinstruments",
"href": "https://pydevices.github.io/audioinstruments/",
"tier_color": true
}
]
Expand Down
5 changes: 0 additions & 5 deletions docs-site/projects/audiocomponents.md

This file was deleted.

5 changes: 5 additions & 0 deletions docs-site/projects/audioeffects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# audioeffects

Studio and guitar-pedal effects: compressors, EQs, reverbs, delays, modulation, drive and amp simulation, pitch shifters and racks. Pure Python on audiodsp's audio nodes. It is on TestPyPI as `omnipython-audioeffects` and in the MIP index as `audioeffects`.

[audioeffects on GitHub](https://github.com/PyDevices/audioeffects).
5 changes: 5 additions & 0 deletions docs-site/projects/audioinstruments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# audioinstruments

Playable synthesizers, organs, electric pianos and drum machines, each one a patch of modules on a virtual rack, rendered a block at a time on audiodsp. Pure Python on CPython and MicroPython-compatible firmware. It is on TestPyPI as `omnipython-audioinstruments` and in the MIP index as `audioinstruments`.

[audioinstruments on GitHub](https://github.com/PyDevices/audioinstruments).
6 changes: 4 additions & 2 deletions docs-site/projects/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ Each project has its own manual. A project listed with its manual here has it on
- [palettes](palettes.md)
- [pdwidgets](pdwidgets.md)
- [audiodsp](audiodsp.md)
- [audiocomponents](audiocomponents.md)
- [audioinstruments](audioinstruments.md)
- [audioeffects](audioeffects.md)
- [mpftp](mpftp.md)
- [LVGL bindings and ports](lvgl.md)
- [micropython-pydevices and the device modules](micropython-pydevices.md)
Expand All @@ -22,7 +23,8 @@ pygraphics
palettes
pdwidgets
audiodsp
audiocomponents
audioinstruments
audioeffects
mpftp
lvgl
micropython-pydevices
Expand Down
8 changes: 5 additions & 3 deletions profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ Welcome to **PyDevices** — a unified pure-Python hardware abstraction engine,
Standard hardware driver engine and companion reference code.

- [`pydevices`](https://github.com/PyDevices/pydevices) — Unified pure-Python hardware abstraction layer and core device contract for MicroPython, CircuitPython, CPython, direct WebAssembly, Pyodide, and Android.
- [`audiodsp`](https://github.com/PyDevices/audiodsp) — CircuitPython's audio system (audiocore, synthio, audiomixer, effects, audiomp3) ported to MicroPython and CPython, extending CircuitPython along the way: dynamics, routing, convolution, and offline rendering. On PyPI as pydevices-audiodsp; the instrument and effect libraries built on it ship from audiocomponents.
- [`audiocomponents`](https://github.com/PyDevices/audiocomponents) — The instrument and effect libraries for audiodsp: audioinstruments (55 modelled classics, from the TR-808 to the DX7) and audioeffects (45 effect classes and racks), pure Python on MicroPython and CPython. Ships as pydevices-audioinstruments and pydevices-audioeffects, each a standalone distribution on TestPyPI and a MIP package.
- [`audiodsp`](https://github.com/PyDevices/audiodsp) — CircuitPython's audio system (audiocore, synthio, audiomixer, effects, audiomp3) ported to MicroPython and CPython, extending CircuitPython along the way: dynamics, routing, convolution, and offline rendering. On PyPI as pydevices-audiodsp; the instrument and effect libraries built on it are audioinstruments and audioeffects.
- [`audioinstruments`](https://github.com/PyDevices/audioinstruments) — Playable synthesizers, organs, electric pianos and drum machines, each a patch of modules on a virtual rack, rendered a block at a time on audiodsp. Pure Python on CPython and MicroPython-compatible firmware. Install omnipython-audioinstruments from TestPyPI, or audioinstruments from the MIP index.
- [`audioeffects`](https://github.com/PyDevices/audioeffects) — Compressors, EQs, reverbs, delays, modulation, drive and amp simulation, pitch shifters and racks, pure Python on audiodsp's audio nodes, the same on MicroPython-compatible boards, CircuitPython-compatible boards and a desktop. Install omnipython-audioeffects from TestPyPI, or audioeffects from the MIP index.
- [`gallery`](https://github.com/PyDevices/gallery) — Comprehensive example code, direct MicroPython WebAssembly demos, board configurations, and multi-interpreter showcase benchmarks.

### Tier 2: Python Framebuffers & GUI Toolkits
Expand Down Expand Up @@ -56,11 +57,12 @@ MIP package indexing, multi-usermod builds, and serial/FTP IDE extensions.
- [`mip`](https://github.com/PyDevices/mip) — Single source of truth (SoT) for precompiled MicroPython .mpy bytecode packages and pure-Python library distributions across the PyDevices ecosystem.
- [`micropython-pydevices`](https://github.com/PyDevices/micropython-pydevices) — The PyDevices patch queue for MicroPython, kept like a distribution keeps one: an ordered, provenance-tracked patch series over the pinned upstream (MicroPython v1.30.0-preview-160), with presets, boards and variants that build PyDevices modules into firmware with upstream's own make.
- [`workbench`](https://github.com/PyDevices/workbench) — A ViperIDE fork with a built-in WebAssembly MicroPython simulator: edit, run, and debug PyDevices code against a simulated board entirely in the browser, no hardware required.
- [`mpvst`](https://github.com/PyDevices/mpvst) — Programmable VST3 instruments and effects: every audiocomponents instrument and effect as a named plug-in, each instance running its Python in a sidecar process. Installers for Windows and Linux; nothing has to be built.
- [`mpvst`](https://github.com/PyDevices/mpvst) — Programmable VST3 instruments and effects: every audioinstruments instrument and audioeffects effect as a named plug-in, each instance running its Python in a sidecar process. Installers for Windows and Linux; nothing has to be built.

**Moved into other repositories:**

- **displayif** — now [`modules/displayif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/displayif) in micropython-pydevices. The old repository is archived.
- **audiocomponents** — split into [`audioinstruments`](https://github.com/PyDevices/audioinstruments) and [`audioeffects`](https://github.com/PyDevices/audioeffects). The old repository is archived.
- **audioif** — now [`modules/audioif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/audioif) in micropython-pydevices. The old repository is archived.
- **cameraif** — now [`modules/cameraif`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/cameraif) in micropython-pydevices. The old repository is archived.
- **usbif** — the C module is now [`modules/usbhost`](https://github.com/PyDevices/micropython-pydevices/tree/main/modules/usbhost) in micropython-pydevices; the Python USB packages are in [pydevices](https://github.com/PyDevices/pydevices/blob/main/docs/guides/usb.md). The old repository is archived.
Expand Down
4 changes: 4 additions & 0 deletions scripts/generate_sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ def get_card_icon(repo_name):
'audiodsp': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 10v4M8 7v10M12 4v16M16 7v10M20 10v4"/></svg>',
'audioif': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 10v4M8 7v10M12 4v16M16 7v10M20 10v4"/></svg>',
'audiocomponents': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>',
'audioinstruments': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>',
'audioeffects': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>',
'usbif': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v14"/><path d="M9 5l3-3 3 3"/><path d="M12 12l-5-3V7M12 14l5-3V9"/><circle cx="12" cy="19" r="3"/></svg>',
'cameraif': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3z"/><circle cx="12" cy="13" r="3"/></svg>',
'micropython-pydevices': '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5M2 12l10 5 10-5"/></svg>',
Expand Down Expand Up @@ -74,6 +76,8 @@ def get_tag_label(repo_name):
'audiodsp': 'C Audio Usermod',
'audioif': 'C Audio Driver',
'audiocomponents': 'Pure-Python Audio',
'audioinstruments': 'Instruments',
'audioeffects': 'Effects',
'usbif': 'C USB Usermod',
'cameraif': 'C Camera Usermod',
'micropython-pydevices': 'Runtime Overlay',
Expand Down
8 changes: 8 additions & 0 deletions tests/test_generate_sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,14 @@ def test_the_four_lvgl_repos_give_way_to_omnipython_lvgl(self) -> None:
block = self.gen.build_ecosystem_markdown(self.db)
self.assertIn("[`omnipython-lvgl`](https://github.com/PyDevices/omnipython-lvgl)", block)

def test_audiocomponents_gives_way_to_instruments_and_effects(self) -> None:
grid = self.gen.build_portal_grids_html(self.db)
self.assertIn("audiocomponents", self.db["_meta"]["moved"])
self.assertNotIn('href="/audiocomponents/"', grid)
for name in ("audioinstruments", "audioeffects"):
self.assertNotEqual(self.gen.page_destination(self.db[name]), "none", name)
self.assertIn(f'href="/{name}/"', grid)


if __name__ == "__main__":
unittest.main()
Loading