[{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/143/original/code-practice-oscillator-2.jpeg?1767685059","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/145/original/code-practice-oscillator-1.jpeg?1767692827","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eOverview\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eThis is a Morse code practice oscillator for Fruit Jam with super clean sine wave tones and a 3d-printable straight key. The key uses a Kailh Cherry MX compatible keyswitch for reliable switching and flexures to make a precision hinge that works well when printed in PLA. Set screw adjustment lets you shorten the keyswitch travel. The audio output chain uses an\u0026nbsp;\u003ccode\u003eaudiofilter.Filter\u003c/code\u003e to bandpass filter the output of a\u0026nbsp; \u003ccode\u003esynthio.Synthesizer\u003c/code\u003e for smooth note attacks and releases without keyclick.\u003c/p\u003e\n\u003cp\u003e[\u003cstrong\u003eUpdate\u003c/strong\u003e: You can now use Button #3 to generate tones if you'd rather not build the 3d printed mx straight key (2026-01-07)]\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eParts\u003c/h2\u003e\n\u003cp\u003eFor the 3.5mm audio patch cord, you can use a stereo TRS or TRRS aux cable. Mono TS 3.5mm patch cords for modular synths also work.\u003c/p\u003e\n\u003cp\u003eFor the 3.5mm panel mount TRS jack, I recommend buying a spare or two in case you run into any difficulties during assembly (lost or cross-threaded nut, etc).\u003c/p\u003e\n\u003cp\u003eThe wire can be be whatever you have laying around so long as it's stranded and thin. You'll probably have a difficult time if you try solid hookup wire (too stiff).\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/6200","metadata":{}},{"element_type":"alert","content":"\u003cp\u003eIf you want to just use Fruit Jam's Button #3 instead of building an mx straight key, the rest of these parts are optional.\u003c/p\u003e","metadata":{"markdown":"If you want to just use Fruit Jam's Button #3 instead of building an mx straight key, the rest of these parts are optional.","alert_type":"warning","icon":"info"}},{"element_type":"product","content":"https://www.adafruit.com/product/5764","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2698","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/3692","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2003","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/2004","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4952","metadata":{}},{"element_type":"parts","content":"\n  \u003cdiv class=\"parts-details\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"parts-quantity\"\u003e1\u003c/span\u003e\u003cspan\u003e x \u003c/span\u003e\n        \u003ca href=\"https://www.amazon.com/dp/B0CZRDS1CB\" class=\"parts-name\" target=\"_blank\"\u003eM5x8mm set screw (from set screw kit)\u003c/a\u003e\n      \u003cdiv class=\"parts-description\"\u003eYou can get these in metric M3/M4/M5/M6/M8 set screw kits on amazon\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"parts-action\"\u003e\n  \u003cdiv\u003e\n      \u003ca href=\"https://www.amazon.com/dp/B0CZRDS1CB\" class=\"parts-url btn-primary\" target=\"_blank\"\u003eBuy Now\u003c/a\u003e\n\n  \u003c/div\u003e\n\u003c/div\u003e\n\n  \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n","metadata":{"name":"M5x8mm set screw (from set screw kit)","url":"https://www.amazon.com/dp/B0CZRDS1CB","description":"You can get these in metric M3/M4/M5/M6/M8 set screw kits on amazon","quantity":"1"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eCode\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eUpdating CircuitPython\u003c/h3\u003e\n\u003cp\u003eAs I write this (January 6, 2026), CircuitPython 10.0.3 is the most recent build for Fruit Jam. To keep your board up to date, you can use the \"DOWNLOAD .UF2 NOW\" buttons on the download page of circuitpython.org:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https://circuitpython.org/board/adafruit_fruit_jam/\" target=\"_blank\"\u003eFruit Jam Download\u003c/a\u003e\u003cspan\u003e\u0026nbsp;\u003c/span\u003epage\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo install the UF2 File:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eConnect your board to a computer with a USB data cable (\u003cem\u003echarge-only cables won't work!\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003ePress and hold the board's boot button (Button 1 on Fruit Jam)\u003c/li\u003e\n\u003cli\u003ePress and release the reset button\u003c/li\u003e\n\u003cli\u003eRelease the boot button\u003c/li\u003e\n\u003cli\u003eWhen the removable drive named\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003cstrong\u003eRP2350\u003c/strong\u003e\u003cspan\u003e\u0026nbsp;\u003c/span\u003eappears, copy the UF2 file onto it. After the copy finishes, you should see the\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003cstrong\u003eRP2350\u003c/strong\u003e\u003cspan\u003e\u0026nbsp;\u003c/span\u003edrive disappear and soon after that a new\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003cstrong\u003eCIRCUITPY\u003c/strong\u003e\u003cspan\u003e\u0026nbsp;\u003c/span\u003edrive should appear.\u003c/li\u003e\n\u003c/ol\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eProject Code \u0026amp; Libraries\u003c/h3\u003e\n\u003cp\u003eYou can view the code at the\u003cspan\u003e\u0026nbsp;\u003ca href=\"https://github.com/samblenny/fruit-jam-code-practice-oscillator\" target=\"_blank\"\u003esamblenny/fruit-jam-code-practice-oscillator\u003c/a\u003e\u0026nbsp;\u003c/span\u003eGitHub repository. To download a zip archive project bundle with the code and all the necessary libraries, use the \"Download Project Bundle\" button:\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"button","content":"https://github.com/samblenny/fruit-jam-code-practice-oscillator/releases/download/v0.2.2/fruit-jam-code-practice-oscillator-1be0501.zip","metadata":{"button_type":"primary","icon":"","target":"_blank","zip_folder":"false"}},{"element_type":"alert","content":"\u003cp\u003eDO NOT connect headphones to the Fruit Jam unless you edit the code to reduce the volume. The default line level output volume is TOO LOUD for headphones.\u003c/p\u003e","metadata":{"markdown":"DO NOT connect headphones to the Fruit Jam unless you edit the code to reduce the volume. The default line level output volume is TOO LOUD for headphones.","alert_type":"danger","icon":"exclamation"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eInstall Project Bundle\u003c/h3\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s1\"\u003eTo copy the project bundle files to your CIRCUITPY drive:\u003c/span\u003e\u003c/p\u003e\n\u003col class=\"ol1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003eDownload the project bundle .zip file using the \"Download Project Bundle\" button above.\u003c/span\u003e\u003c/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003eExpand the zip file by opening it, or use unzip in a Terminal. The zip archive should expand to a folder. When you open the folder, it should contain a README.txt file and a CircuitPython 10.x folder.\u003c/span\u003e\u003c/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003eOpen the CircuitPython 10.x folder and copy all of its contents to your CIRCUITPY drive.\u003c/span\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s1\"\u003eTo learn more about copying libraries to your\u003cspan\u003e\u0026nbsp;\u003c/span\u003e\u003cstrong\u003eCIRCUITPY\u003c/strong\u003e\u003cspan\u003e\u0026nbsp;\u003c/span\u003edrive, check out the\u0026nbsp;\u003ca href=\"https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003eCircuitPython Libraries\u003c/span\u003e\u003c/a\u003e\u0026nbsp;section of the\u0026nbsp;\u003ca href=\"https://learn.adafruit.com/welcome-to-circuitpython\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003eWelcome to CircuitPython!\u003c/span\u003e\u003c/a\u003e\u0026nbsp;learn guide.\u003c/span\u003e\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eCIRCUITPY/code.py\u003c/h3\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"embed","content":"https://github.com/samblenny/fruit-jam-code-practice-oscillator/blob/v0.2.2/code.py"},{"element_type":"alert","content":"\u003cp\u003eThe rest of this is guide is optional. If you'd rather not build the mx straight key, you can use Fruit Jam's onboard Button #3 instead.\u003c/p\u003e","metadata":{"markdown":"The rest of this is guide is optional. If you'd rather not build the mx straight key, you can use Fruit Jam's onboard Button #3 instead.","alert_type":"warning","icon":"info"}},{"element_type":"text","content":"\n  \n  \n        \u003ch2\u003e3D Printing\u003c/h2\u003e\n\u003cp\u003eThe Blender and STL files are available on the GitHub \u003ca href=\"https://github.com/samblenny/fruit-jam-code-practice-oscillator/releases/tag/v0.2.2\" target=\"_blank\"\u003erelease page\u003c/a\u003e or from the download buttons below. The MX\u0026nbsp;straight key frame uses flexure springs which are fine to print in PLA. The horizontal round holes have a teardrop top, so they should print fine without supports. I used the standard Bambu Studio 0.2mm layer height preset modified to \u003ca href=\"https://adafruit-playground.com/u/SamBlenny/pages/calibrate-your-3d-printer-for-dimensional-accuracy\" target=\"_blank\"\u003ecalibrate my\u0026nbsp;X-Y hole compensation\u003c/a\u003e, slow down the maximum acceleration, and increase the\u0026nbsp;walls from 2 to 3 (but 2 probably would have been fine). I recommend drying your filament well to avoid stringing.\u003c/p\u003e\n      \n\n","metadata":{}},{"element_type":"button","content":"https://github.com/samblenny/fruit-jam-code-practice-oscillator/releases/download/v0.2.2/mx-straight-key-2.blend","metadata":{"button_type":"primary","icon":"","target":"_blank","zip_folder":"false"}},{"element_type":"button","content":"https://github.com/samblenny/fruit-jam-code-practice-oscillator/releases/download/v0.2.2/mx-straight-key-2.stl","metadata":{"button_type":"primary","icon":"","target":"_blank","zip_folder":"false"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eWiring\u003c/h2\u003e\n\u003cp\u003eIf you're new to soldering, consider reading the \u003ca href=\"https://learn.adafruit.com/adafruit-guide-excellent-soldering\" target=\"_blank\"\u003eAdafruit Guide to Excellent Soldering\u003c/a\u003e. You'll need to prepare the TRRS breakout board for plugging into the Fruit Jam GPIO header and to solder wires between the mx straight key's TRS jack and keyswitch.\u003c/p\u003e\n\u003ch3\u003eFruit Jam + TRRS Jack Breakout Wiring Diagram\u003c/h3\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"code","content":"Fruit Jam\n  GPIO Port\n+-----+-----+     TRRS Jack\n| 5V  |  5V |     Breakout\n| 3V  |  3V |    +----------------+\n| G   | GND |----| Sleeve         |   \u003c- Sleeve: GND\n| RST |  A1 |----| Right +-------+|\n| PR  |  A2 |----| RSw   +       +-+\n| SCK |  A3 |----| LSw   +       +-+\n| MI  |  A4 |----| Left  +-------+|   \u003c- Left: Tip (input w/ pullup)\n| MO  |  A5 |----| Ring           |\n| D+  |  D6 |    +----------------+\n| D-  |  D7 |\n| UF  |  D8 |\n| SDA |  D9 |\n| SCL |  10 |\n| G   | GND |\n| 3V  |  3V |\n| 5V  |  5V |\n+-----+-----+","metadata":{"language":"terminal","linenums":false,"filename":""}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eMX Straight Key Wiring Diagram\u003c/h3\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"code","content":"TRS Headphone Jack               Cherry MX Compatible Key Switch\n\n                                            ||\n                                        /--+||+--\\\n     +----------+                      /          \\\n     |   \\/-----|--- 3 Right           ============\n+~~~~+          |                 black   |   |\n|---------------|----- 1 Sleeve ----------+   +\n+~~~~+          |                             |\n     |      /\\--|--- 2 Left (Tip) ------------+\n     +----------|                    yellow","metadata":{"language":"terminal","linenums":false,"filename":""}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eSoldering Procedure\u003c/h3\u003e\n\u003cp\u003eOnce you've prepared your parts and soldering materials...\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eGet a good light and \u003cstrong\u003eexamine the TRS panel mount jack to identify which pin is which\u003c/strong\u003e. The long center pin is probably marked as \"1\" in itty bitty barely readable text. It should be connected to the sleeve. The two short pins should be marked 2 and 3, with 2 connected to the tip (left), and 3 connected to the ring (right). It might be helpful to connect an audio cable and verify the connections with a multimeter in continuity test mode. If your jack's wiring doesn't match the wiring diagram shown here, you will need to adjust the rest of these instructions to match your wiring.\u0026nbsp;\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAssemble the jack and keyswitch in the the 3d printed frame\u003c/strong\u003e. Threading the nut onto the panel mount jack can be challenging. Take your time to align the nut gently (don't get it cross threaded!). Once you have the threads lined up, tighten the nut. The keyswitch pins should go on the end furthest from the TRS jack.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCut black and yellow wires\u003c/strong\u003e to reach from the TRS jack pins to the keyswitch pins. Leave a little extra slack to give you maneuvering room to install the keyswitch after you've finished soldering.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRemove the TRS jack and keyswitch from the 3d printed frame\u003c/strong\u003e so you can clamp them for soldering.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStrip\u003c/strong\u003e about \u003cstrong\u003e2-3 mm of insulation\u003c/strong\u003e from each of the 4 wire ends.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTin the wire ends\u003c/strong\u003e with solder.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTin the keyswitch and TRS jack pins\u003c/strong\u003e with solder.\u003c/li\u003e\n\u003cli\u003eSolder the \u003cstrong\u003eblack wire\u003c/strong\u003e from one \u003cstrong\u003ekeyswitch pin \u003c/strong\u003eto \u003cstrong\u003eTRS jack pin 1 (sleeve)\u003c/strong\u003e\n\u003c/li\u003e\n\u003cli\u003eSolder the \u003cstrong\u003eyellow wire\u003c/strong\u003e from the other \u003cstrong\u003ekeyswitch pin\u003c/strong\u003e to \u003cstrong\u003eTRS jack pin 2 (tip, left)\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eSolder the \u003cstrong\u003eheader strip\u003c/strong\u003e onto the \u003cstrong\u003eTRRS jack breakout board\u003c/strong\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/144/original/code-practice-oscillator-2.jpeg?1767688995","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eFinal Assembly\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"alert","content":"\u003cp\u003eDO NOT plug the TRRS Jack Breakout's Sleeve pin into Fruit Jam's 3V socket. If you do that by accident, you might short 3V to GND when you plug in the audio cable.\u003c/p\u003e","metadata":{"markdown":"DO NOT plug the TRRS Jack Breakout's Sleeve pin into Fruit Jam's 3V socket. If you do that by accident, you might short 3V to GND when you plug in the audio cable.","alert_type":"danger","icon":"exclamation"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003col\u003e\n\u003cli\u003ePut the \u003cstrong\u003epanel mount TRS jack\u003c/strong\u003e through the hole in the frame as shown in the photo above. This part can be challenging. Take your time to align the nut gently (don't get it cross threaded!). Once you have the threads lined up, tighten the nut.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTwist the wires\u003c/strong\u003e a few turns so they don't flop around so much.\u003c/li\u003e\n\u003cli\u003eInstall the \u003cstrong\u003ekeyswitch\u003c/strong\u003e by pressing down from the top or sliding it in sideways.\u003c/li\u003e\n\u003cli\u003eCarefully \u003cstrong\u003eroute the wires\u003c/strong\u003e through the wire notch.\u003c/li\u003e\n\u003cli\u003eScrew the \u003cstrong\u003eM5x8mm set screw\u003c/strong\u003e into the hole in the top of the 3d printed lever. The exact depth doesn't matter for now. You will do the final adjustment later once you have the code running so you can hear when the switch activates.\u003c/li\u003e\n\u003cli\u003eWith the Fruit Jam\u0026nbsp;\u003cstrong\u003edisconnected\u003c/strong\u003e\u003cspan\u003e from power, \u003c/span\u003e\u003cstrong\u003ecarefully\u003c/strong\u003e\u003cspan\u003e plug the TRRS jack breakout's header pins into the Fruit Jam GPIO port. Make sure to put \u003c/span\u003e\u003cstrong\u003eSleeve in GND\u003c/strong\u003e\u003cspan\u003e and \u003c/span\u003e\u003cstrong\u003eRing in A5\u003c/strong\u003e\u003cspan\u003e.\u003c/span\u003e\n\u003c/li\u003e\n\u003cli\u003eAfter you've double checked that the TRRS Jack Breakout's pins are aligned properly in the Fruit Jam GPIO header, connect the mx straight \u003cstrong\u003ekey's TRS jack\u003c/strong\u003e to the \u003cstrong\u003eFruit Jam's TRRS jack\u003c/strong\u003e with your 3.5mm audio cable.\u003c/li\u003e\n\u003cli\u003eConnect the Fruit Jam's \u003cstrong\u003eheadphone jack\u003c/strong\u003e to a mixer, powered speaker, or other audio device that takes a \u003cstrong\u003eLINE LEVEL\u003c/strong\u003e input.\u003c/li\u003e\n\u003cli\u003eConnect your Fruit Jam to your computer with a \u003cstrong\u003eUSB data cable\u003c/strong\u003e (power-only cables won't work!)\u003c/li\u003e\n\u003c/ol\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch2\u003eAdjust Set Screw\u003c/h2\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"alert","content":"\u003cp\u003eDon't worry if nothing happens when you first press the mx straight key lever. You need to adjust the set screw to get past the keyswitch pre-travel before the tone will sound.\u003c/p\u003e","metadata":{"markdown":"Don't worry if nothing happens when you first press the mx straight key lever. You need to adjust the set screw to get past the keyswitch pre-travel before the tone will sound.","alert_type":"warning","icon":"info"}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eAdjustment procedure:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eMake sure the code is running (check the serial terminal) and that your audio connections are good.\u003c/li\u003e\n\u003cli\u003eCoarse Adjustment: Use an Allen wrench (hex key) to screw in the set screw until you hear a tone, then back the screw out until the tone stops. (if you bottom out the switch plunger but don't hear anything, check your audio connections)\u003c/li\u003e\n\u003cli\u003eFine Adjustment: With the wrench removed, test the feel of the key. Make small adjustments (maybe about 45* at a time) until it feels right.\u003c/li\u003e\n\u003c/ol\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}}]