{
    "version": "https://jsonfeed.org/version/1",
    "title": "les instruments",
    "home_page_url": "localhost:3000",
    "feed_url": "localhost:3000/rss/feed.json",
    "description": "handmande",
    "author": {
        "name": "les instruments",
        "url": "localhost:3000"
    },
    "items": [
        {
            "id": "localhost:3000/v/daisybed-readme",
            "content_html": "\ntrying to simplify / standardize my development on the Electro-Smith Daisy [Patch.Init()](https://daisy.audio/products/patch-init) and [Patch Submodule board](https://daisy.audio/products/patch-submodule) with libDaisy and DaisySP.\n\n![](/images/patchinnitdiy.jpg \"Photo of DIY ElectroSmith Patch.Init() eurorack module\")\n\n## getting started\n\n### requirements\n\n- CMake: Version 3.26 or higher.\n- ARM Cross-compiler toolchain: For building the project.\n- dfu-util: For flashing the firmware.\n\n### structure\n\n```\ndaisybed/\n├── package.json               # convenience scripts (configure / build / flash), per firmware\n├── lib/\n│   ├── libDaisy/               # git submodule\n│   └── DaisySP/               # git submodule\n├── shared/                    # reusable helpers shared across firmware projects\n│   ├── any shared .h or .cpp files\n│   └── cmake/\n│       └── daisybed.cmake     # included by each project: sets up libDaisy + DaisySP\n└── patches/                   # one self-contained CMake project per firmware\n    ├── my-cool-patch/       #   CMakeLists.txt + src/ + build/ (per-project)\n```\n\nThere is intentionally **no top-level `CMakeLists.txt`**. Each firmware is a\nstandalone CMake project that pulls in libDaisy + DaisySP via\n`shared/cmake/daisybed.cmake`. This keeps libDaisy's ARM toolchain autodetect\nworking (it runs in the same scope as the project's `project()` call) and lets\nyou configure/build/flash one firmware at a time without touching the others.\n\n`shared/` is exposed as the `daisybed_shared` INTERFACE library (header-only\ninclude path). Projects that need a `.cpp` from it (e.g. `knob.cpp`,\n`Voice.cpp`) list it in their own `FIRMWARE_SOURCES`.\n\n### building a firmware\n\n1. clone the repository:\n\n   ```sh\n   git clone --recurse-submodules https://github.com/alexander-daniel/daisybed.git\n   cd daisybed\n   ```\n\n2. configure one firmware (each gets its own build dir under the project;\n   this also wires up the shared/ compile database for clangd):\n\n   ```sh\n   FW=basic-monosynth npm run configure\n   ```\n\n3. build it:\n   ```sh\n   FW=basic-monosynth npm run build\n   ```\n\n### flashing\n\n```sh\nFW=basic-monosynth npm run flash\n```\n\n`-a 0`: select the first alt setting\n`-s 0x08000000:leave`: specify the address to flash the firmware to and leave the device in DFU mode after flashing\n`-D patches/$FW/build/$FW.bin`: specify the path to the firmware binary\n`-d ,0483:df11`: specify the USB VID:PID of the device\n\n## License\n\nThis project is licensed under the MIT License.\n",
            "url": "localhost:3000/v/daisybed-readme",
            "title": "DaisyBed",
            "summary": "trying to simplify development on the Electro-Smith Daisy Patch Submodule with libDaisy and DaisySP.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/pico-random-gates",
            "content_html": "\nThis module is meant to output a random MIDI note (0-60) control voltage, and a pulse output as a gate signal. The length between notes played is random, as well as the notes themselves. Can use a quantizer downstream to fit it into a scale. Quick easy way to get some random notes playing. never got it into a PCB -- just a breadboard prototype.\n\n## Hookup Diagram\n\n![random gates breadboard](/images/random-gates.jpg)\n\n## Code\n\nThe code is written in JavaScript, and uses the Kalumajs runtime. (https://kalumajs.org/).\n\n```js\nconst { PWM } = require(\"pwm\");\nconst { getRandomInt, notes, createDutyScaler } = require(\"../lib/utils\");\n\nconst GATE_PIN = 19;\nconst CV_PIN = 11;\nconst PWM_FREQUENCY = 50000;\nconst PWM_INITIAL_DUTY = 0;\n\n// adjust this if you're not amplifying the 3.3, or if your op amp configuration is set to something else.\n// 4.72V is the output of my non-inverting op amp configuration -- those are just the resistors i had (22k, 10k)\n// if you're not amplifying the filtered signal, you'll probably want 3.3v\nconst MAX_OUTPUT_VOLTAGE = 4.72;\n// Create a function that takes in a note number and outputs a duty cycle between 0-1, scaled for the max voltage.\nconst getDuty = createDutyScaler(MAX_OUTPUT_VOLTAGE);\n\n// Set up the Gate/trigger out pin\npinMode(GATE_PIN, OUTPUT);\ndigitalToggle(GATE_PIN);\n\n// Set up the pseudo analog PWM CV pin\nconst CV_PWM = new PWM(CV_PIN, PWM_FREQUENCY, PWM_INITIAL_DUTY);\nCV_PWM.start();\n\nlet on = false;\nlet index = 0;\n\nfunction loop() {\n  digitalToggle(GATE_PIN);\n\n  // if we're triggering a note\n  if (on) {\n    CV_PWM.setDuty(getDuty(notes[index]));\n    index++;\n    if (index >= 24) index = 0;\n    on = false;\n  }\n\n  // just taking a rest\n  else {\n    on = true;\n  }\n\n  setTimeout(loop, getRandomInt(1000));\n}\n\nloop();\n```\n",
            "url": "localhost:3000/v/pico-random-gates",
            "title": "Random Gates",
            "summary": "prototype -- pi pico random note generator with random gate output",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/5-aide-de-vactrol",
            "content_html": "\n> 14-mar-2023 > proto 0.1 boards arrived, and assembled! [photos](#v0.1-boards)\n> 2-mar-2023 > proto 0.1 boards ordered, stay tuned\n\nThis little PCB breakout is set up to be used an re-used, for prototyping, or modular designs. It's kinda nice because you can just care about the 5-pin header and the rest of the vactrol circuit is just kinda taken care of.\n\nThe values for the resistors are all blank because you have to adjust them a bit. I'll fill in some values as I find sweet spots for the vactrols on hand. (And some of those will for sure be home-made!)\n\nThis design uses an MCP6004 since it can go rail-to-rail, and given some designs it's useful if you've already got a 5V power rail from a microcontroller or something. Pin-wise you could totally drop in a TL074 and that'd probably be fine. You'd really have to figure out the R values because you'd be dealing with larger range of voltage.\n\nAlthough not perfect, it seems like a decent option that will at least provide a bit of stability and consistency to most simple designs that use it.\n\n### Info\n\n- input signal from 0-5V\n- CV input from 0-5V\n- output signal from 0-5V\n- a buffer on the input signal, so it won't mess with anything upstream\n- a linear configuration for the vactrols' LED (see: [article](https://analogoutputblog.wordpress.com/2022/05/04/how-to-vactrol/), [simulation](https://tinyurl.com/2yowrdv6))\n- output buffer\n- signal output LED indicator\n\n### caveats\n\n- your cv will be limited to the power rails of your op amp (and also the limits of your op amp, so beware you can fry it)\n- negative voltages might do weird things or fry your op amp\n- there is NO protection in this circuit\n- you'll probably want pulldown resistors on the inputs\n\n## Schematic\n\n![](/images/aide-de-vactrol-0.1-schematic.png)\n\n## v0.1 Boards\n\n![](/images/vactrol-helper-v0.1-boards.jpeg)\n![](/images/vactrol-helper-v0.1-board-assembled.jpeg)\n",
            "url": "localhost:3000/v/5-aide-de-vactrol",
            "title": "Vactrol Breakout",
            "summary": "A little PCB breakout board to help with vactrol prototyping and assembling.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/1-minimal-test-eurorack-power-supply",
            "content_html": "\n> Check out [version 2](#version-2)\n\nCheck out this article from [Division 6 about the basics of Eurorack Power](https://division-6.com/learn/eurorack-power/) for a terrific jump off point. They lay it out real nice.\n\nFor my purposes, I chose to follow [this pattern](https://division-6.com/media/Wall-Wart-Eurorack-Power-Supply-Connections-400x280.gif \"Wall Wart Eurorack Power Supply Cnnections\"). However, I wanted a semi permanent solution and wanted to test making a PCB using EasyEDA and JLCPCB. This seemed like a good project to try some new things!\n\nI also went this route because I only needed two **regulated**[1] wall wart power supplies (which are pretty easy to find, and about $15CAD each) and a very basic circuit to make it easy to hook them up to my circuits and prototypes.\n\nThe goal is to have a power solution that can output + AND - 12 Volts, with ~1A per power rail. (My wall warts give me 2A on each +12V and -12V) 🥳. Plenty of current for a few modules! (For example, an Arduino's max current draw is ~200mA.)\n\n### Bill of Materials:\n\n- 2x regulated 12V DC Wall Wart Power Supply\n- some stripboard with at least 8 rails\n- some snappable pin headers\n- 2x 2.1mm DC jack plugs\n- 2x LEDs\n- 2x 1K Resistors\n- as many eurorack cables as you need\n\n![](/images/1/IMG_3305.jpeg \"Wall Wart Eurorack Power Supply Connections\")\n\n> Hey hey hey, they're backward!\n\nSure, there are maybe cheaper or more efficient ways to do this, but this is pretty practical and widely available in terms of options. And yes, those DC Jacks are most definitely backward. Growing pains are real but pretty laughable at this scale. I'll try to be more careful going forward but I'd bet the farm on this not being the last mistake I make like this.\n\nThis solution worked for a bit until I had finished my second module on a breadboard and wanted to make the two of them interact. It was time to make a simple busboard to distribute the power rails! I soldered together a quick passive busboard with a few male `16-pin` connections, allowing more than one module to be powered at a time sharing the same power supply.\n\n![](/images/1/IMG_3301.jpeg \"Wall Wart Eurorack Power Supply Connections\")\n\n![](/images/1/IMG_3302.jpeg \"Wall Wart Eurorack Power Supply Connections\")\n\nAfter that, I can just use a bunch of `16-pin` -> `10-pin` cables to connect the busboard to the modules and forget about any shared 5V, CV or Gate rails (most commercial eurorack modules don't use them either). I plan to pop in 5V regulators onto the modules where needed, and allow the module to regulate the voltage to its own needs.\n\n![](/images/1/IMG_3306.jpeg \"Wall Wart Eurorack Power Supply Connections\")\n\n## Version 2\n![](/images/powerv2.jpg \"Wall Wart Eurorack Power Supply Connections\")\n\nThis time with the DC jacks facing the right way, and a small busboard (6x16-pin connectors) included. Still works just fine, still feels hacky, but good enough to power some simple DIY stuff without really worrying too much.\n\n### Potential improvements\n\n- ✔️ Fix the backwards DC Jacks 😂\n- Add some reverse polarity protection\n- ✔️ Combine a busboard with the DC Jack portion into one simplified board or PCB\n- ~Cut the stripboard I guess to save material but I kinda like having more space (If I don't go with the above)~\n\n==============\n\n### Footnotes\n\n[1]: Just make sure the wall warts are actually regulated, as cheaper ones usually aren't. You can check with a multimeter, a regulated supply should have a nice constant voltage right around the specifications. An unregulated supply's voltage would likely be higher than the specification, as well as potentially irregular.\n",
            "url": "localhost:3000/v/1-minimal-test-eurorack-power-supply",
            "title": "Barebones Eurorack power",
            "summary": "A (too) minimal approach to powering DIY eurorack modules -- but it works!",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/no-frills-midi",
            "content_html": "\nMon Ami MIDI is a bare-bones MIDI to CV Converter using the pi pico microcontroller as the brains. We've gone with the excellent [Kaluma.js Runtime](https://kalumajs.org/) so that we can write all of our microcontroller logic in JavaScript (for better for for worse)\n\nIt has the following features:\n\n- 2x 0-5V CV (Generated with PWM) giving us a ~5 octave range\n  - MIDI input is read starting at `C0`. (can be adjusted in code)\n- 2x 5V Gate Output\n- 2x Gate Status LEDs\n- Assignable MIDI Channel in software\n\n## Schematic\n\n![](/images/1/mon-ami-midi-v0.1-schematic.png)\n\n## Proto PCB\n\n![](/images/mon-ami-midi-pcb.png \"OG mon ami midi pcb proto\")\n![](/images/mon-ami-midi-pcb-back.png \"OG mon ami midi proto back\")\n\n## Notes\n\nGreat MIDI [explanation video](https://www.youtube.com/watch?v=2BccxWkUgaU)\n\n[Essentials of the MIDI protocol from CCRMA](https://ccrma.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html)\n\nBig inspiration from the [EuroPi project](https://github.com/Allen-Synthesis/EuroPi). The open-source info and schematics really helped clear a few things up. Awesome project, worth a follow!\n\nI got inspiration for the MIDI input circuit from [this post](https://arduino.stackexchange.com/a/14055).\n![](/images/midi-in-6n137.png \"midi in circuit\")\n",
            "url": "localhost:3000/v/no-frills-midi",
            "title": "Mon Ami MIDI",
            "summary": "Everyone needs a 2-channel midi-> cv + gate module. mega minimal, mega pragmatic approach.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/0-scrapbook",
            "content_html": "\n![](/images/1/circuit-sketches.png \"Photo of Electronics Workbench & Organizer\")\n\n### Simple Op Amp Relaxation LFO\n\nAbout as simple as an LFO gets, all analog, triangle and square out.\n\n[Simulation](https://tinyurl.com/2yrpfkyd)\n\n---\n\n### LED Driver for Vactrol with OpAmp\n\nhttps://analogoutputblog.wordpress.com/2022/05/04/how-to-vactrol/\n\nThis simulation compares two different LED configurations being driven by an op amp.\n[Simulation](https://tinyurl.com/2yowrdv6)\n[Simulation](https://tinyurl.com/2fr8va29)\n\n---\n\n### BiPolar +/- 10V to 0-5V\n\n[Simulation](https://tinyurl.com/23n4cbqn)\n\n---\n\n### 3.3V -> 5V Opamp scaling\n\nUseful for microcontroller projects that only output 3.3v, but maybe we want something like 0-5V or 0-10V for CV.\n\n[Simulation](https://tinyurl.com/29z8cbxc)\n\n---\n\n### Simple hard-clipping distortion with op amp\n\n[Simulation](https://tinyurl.com/2yaftaar)\n[Simulation v2](https://tinyurl.com/2osboxsj)\n\n---\n\n### Op amp dual Gain stage of white noise generator\n\n[Simulation](https://tinyurl.com/2kecgzg6)\n\n---\n\n### Circuit Protection\n\n[Great little reddit thread](https://old.reddit.com/r/synthdiy/comments/k5g281/tips_on_diy_eurorack_module_power_input_design/)\n",
            "url": "localhost:3000/v/0-scrapbook",
            "title": "Circuit Scrapbook",
            "summary": "A selection of small circuits and helpful building blocks without a dedicated post.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/4-op-amp-ar-envelope-generator",
            "content_html": "\n![](/images/mailer-v2-schematic.png)\n![](/images/mailer-v2-panel.png)\n![](/images/mailer-v2-pcb.png)\n",
            "url": "localhost:3000/v/4-op-amp-ar-envelope-generator",
            "title": "Minimal Opamp AR Env Gen",
            "summary": "As simple as it gets, minimal parts. Based on SynthNerd's Op Amp AR Design.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        },
        {
            "id": "localhost:3000/v/2-vector-rails",
            "content_html": "\nThese ones work! It took a lot of not knowing what I was looking for and then ordering the wrong stuff to get here. I also learned that Vector is a brand, not a type of rail.\n\nIn any case, **Vector** brand rails and **Schroff** brand threaded inserts work beautifully together, as long as you don't mind using smaller M2.5 screws. Both the rails and inserts are 84HP long (42.672cm or 16.8\").\n\n- Vector Electronics TS169 Rails 84HP\n\n  - [Digikey](https://www.digikey.ca/en/products/detail/vector-electronics/TS169/280464)\n\n- Schroff 34561384 Threaded Inserts M2.5 84HP\n  - [Digikey](https://www.digikey.ca/en/products/detail/schroff/34561384/4210056)\n\nAnd if you're bonkers and want to use sliding nuts:\n\n- Vector Electronics NT4-7PA M2.5 Sliding Nuts x 25\n  - [Digikey](https://www.digikey.ca/en/products/detail/vector-electronics/NT4-7PA/280463)\n\n![](/images/1/vector-rails.jpg \"Vector Rails with Schroff Inserts\")\n",
            "url": "localhost:3000/v/2-vector-rails",
            "title": "Decently affordable Eurorack rails",
            "summary": "Finally found a Canadian source for eurorack compatible rails and threaded inserts.",
            "date_modified": "1970-01-01T00:00:00.001Z",
            "author": {
                "name": "les instruments",
                "url": "localhost:3000"
            }
        }
    ]
}