Skip to content

cowboy/ModularSynthPanelGenerator

Repository files navigation

Modular Synth Panel Generator

Latest release CC BY-NC-SA 4.0 Code of Conduct

Description

TL;DR: This is a modular synth panel generator add-in for Autodesk Fusion

If you're like me and you like making DIY synth modules but absolutely hate milling aluminum panels because little bits of metal go flying everywhere and it's impossible to get all the holes to line up just right and it's just so damn tedious, maybe this thing will help you out.

I've been 3D printing DIY Eurorack module panels for a while now, but until I made this add-in, I'd been manually copying and pasting "template" components over and over again, which resulted in a number of very large and very slow Fusion project files.

Features

With this add-in, you can...

  • generate modular synth panels (currently Eurorack and 1U formats are supported), suitable for 3D printing (or CNC?)
  • choose any width from 2 to 9000 HP
  • set a custom panel thickness
  • choose multiple reinforcement types, each of which thicken the center area of the panel, while leaving the panel thickness in the mounting screw area unchanged:
    • Shell: This creates a hollow shell, adding strength while leaving space inside for jacks and switches. Generally useful for 4 HP and larger panels.
    • Solid: This adds strength to larger blanks, or very narrow modules where the shell approach wouldn't leave enough space for components.
  • save custom default values for easy recall
  • easily edit generated sketches and features to change dimensions, after-the-fact

Currently supported modular synth panel formats

Format name Reference Specification
3U Eurorack Doepfer - A-100 Construction Details
1U (Intellijel) Intellijel - 1U Technical Specifications
1U Tile (Pulp Logic) Pulp Logic - About 1U Tiles
<Your favorite format?> Contributions welcome!

Additional Notes

  • I print with PETG using a 0.4mm nozzle and 0.2mm layer height on a Bambu X1C, without issues.
  • When using reinforcements, it'll probably be easiest if you print with the panel face down. 😛
  • Pulp Logic tiles are meant to be made in multipes of 6 HP but I won't tell anyone if you make odd sizes.

Usage

1️⃣ Open the add-in 2️⃣ Generate the panel
Menu PanDialogel

Generated panel examples

3U 6HP Panel (no reinforcement) 3U 2HP Panel (solid reinforcement) 3U 6HP Panel (shell reinforcement)
1U 12HP Panel (solid reinforcement) 3U 2HP Panel (solid reinforcement) 3U 6HP Panel (shell reinforcement)

Generated sketch examples

Example generated sketch Panel width HP in sketch is editable

Requirements

  • Requires parametric modeling (timeline) to be enabled. Does not work with direct modeling.
  • Tested with Fusion 2603.1.31 (August, 2025) on Windows 11. Should work on other operating systems, but they are untested.

Installation

From Github

Step 1: Download

You have a few options:

Option 1: You just want to use the add-in

  1. Download the ModularSynthPanelGenerator-vX.Y.Z.zip file from the latest release page. Note that the X.Y.Z part will change based on the release version.
  2. Unzip it. You can unzip anywhere, but the Installing, Linking, and Removing Scripts and Add-Ins documentation page has suggestions.

Option 2: You plan on contributing

  1. Fork this repo.
  2. Clone your fork. You can clone anywhere, but the Installing, Linking, and Removing Scripts and Add-Ins documentation page has suggestions.

Step 2: Install into Fusion

  1. In Fusion open the Scripts and Add-Ins dialog by pressing Shift + S or going to Utilities -> Add-Ins -> Scripts and Add-Ins in the top menu of the Design workspace.
  2. Click the + (plus) icon at the top of the Scripts and Add-Ins dialog and select Script or add-in from device.
  3. Choose the folder created after unzipping / cloning. It will be named something like ModularSynthPanelGenerator or ModularSynthPanelGenerator-vX.Y.Z and will contain lib, commands and resources folders, as well as files like ModularSynthPanelGenerator.manifest and ModularSynthPanelGenerator.py (you may not be able to see some of the folder contents in the + file dialog).
  4. Verify that you see the ModularSynthPanelGenerator add-in in the Scripts and Add-Ins dialog list.
  5. Enable the Run option for the ModularSynthPanelGenerator add-in.

When done correctly, the Design workspace Solid -> Create menu should have a Eurorack Panel Generator option.

From the Autodesk App Store

(coming soon)

Update

To update this add-in, download the latest release into the same location and relaunch Fusion.

Contributing

This project follows the Contributor Covenant 3.0 Code of Conduct.

Useful links:

Development environment notes:

  • Launch the editor (Visual Studio Code) from inside Fusion by opening the Scripts and Add-Ins dialog (Shift + S), right-clicking on the ModularSynthPanelGenerator and clicking Edit in code editor. This allows you to attach the vscode debugger to the running process as well as reload after you've made changes.
  • I've tried to leave the boilerplate files generated by Fusion's Create script or add-in relatively untouched, so that the code can be as modular as possible. Unused boilerplate has been removed where possible.
  • There are # type: ignore comments throughout the code to get Pylance to stop complaining. I would rather not need them, but I'm not sure how to improve this. Any advice or PRs that improve type checking would be greatly appreciated.
  • I've been using a .vscode/settings.json file that looks like this, but it's gitignored because it constains local paths. AFAIK, there's no way to write these paths in a user or operating system agnostic way. Until there's a better solution, I recommend creating a throwaway Fusion add-in from the Scripts and Add-Ins dialog just to grab those paths, then create your own local .vscode/settings.json file in this project using the paths it generates. You'll probably also want to add in the files.exclude section to hide auto-generated temp files.
{
  "python.autoComplete.extraPaths": ["C:/Users/Cowboy/AppData/Roaming/Autodesk/Autodesk Fusion 360/API/Python/defs"],
  "python.analysis.extraPaths": ["C:/Users/Cowboy/AppData/Roaming/Autodesk/Autodesk Fusion 360/API/Python/defs"],
  "python.defaultInterpreterPath": "C:/Users/Cowboy/AppData/Local/Autodesk/webdeploy/production/2df205e6add6cffdc9b4f8421c671a7d78103826/Python/python.exe",
  "files.exclude": {
    "**/__pycache__/": true,
    "**/*.py[codz]": true,
    "**/*$py.class": true
  }
}

Files of interest:

File Description
commands/commandDialog Boilerplate command code generated by Fusion. You likely won't be touching these files.
lib/panelUtils/panel_command.py Most of the command code that would have gone into the boilerplate command entry.py file. This is where the main dialog is initialized and updated.
lib/panelUtils/panel_options.py PanelOptions class with panel options and constants, including convenience getters/setters for ui dialog imputs.
lib/panelUtils/panel_generate.py Code that actually generates the panel, including the sketch and extrusions.
lib/generalUtils/debug_utils.py Debugging utilities
lib/generalUtils/extrude_utils.py Extrusion utilities
lib/generalUtils/persist_utils.py Persistable class for persisting defaults to disk
lib/generalUtils/sketch_utils.py Sketch utilities
lib/generalUtils/value_utils.py Value normalization utilities

(More to come, but in the meantime, if you give this a try and have any issues, please let me know)

Support the project

This add-in is free. However, if you want to support the project you can do so by buying me a coffee (or synthesizer). Thanks!

Credits

This work was heavily influenced by the FusionGridfinityGenerator add-in. I did my best to solve problems in my own way, but if you see similarities in the code or README, don't be surprised. There's no way I could've done this without studying that codebase. I honestly didn't even know Fusion add-ins were a thing until I stumbled across that project. Yay!

License

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

About

A Fusion Add-in for generating modular synth panels

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Languages