{"id":20147374,"url":"https://github.com/gdsports/dspg1","last_synced_at":"2025-04-09T19:36:02.201Z","repository":{"id":130716063,"uuid":"151793820","full_name":"gdsports/dspg1","owner":"gdsports","description":"Portable MIDI dsp-G1 Synth","archived":false,"fork":false,"pushed_at":"2018-10-15T08:34:14.000Z","size":3329,"stargazers_count":11,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-23T21:35:43.276Z","etag":null,"topics":["arduino","dspg1","midi","samd","synthesizer","trinket-m0","usb-host","usbhost"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gdsports.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-06T01:18:23.000Z","updated_at":"2023-07-26T14:39:21.000Z","dependencies_parsed_at":"2023-07-10T13:44:03.974Z","dependency_job_id":null,"html_url":"https://github.com/gdsports/dspg1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fdspg1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fdspg1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fdspg1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fdspg1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdsports","download_url":"https://codeload.github.com/gdsports/dspg1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248098400,"owners_count":21047433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","dspg1","midi","samd","synthesizer","trinket-m0","usb-host","usbhost"],"created_at":"2024-11-13T22:28:47.543Z","updated_at":"2025-04-09T19:36:02.180Z","avatar_url":"https://github.com/gdsports.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portable MIDI dsp-G1 Synth\n\n![dsp-G1 synth chip with keyboard and control board](./images/dsp-g1.jpg)\n\nStarting from the top left and going clockwise spiraling into the center, the\nblue object is a 5V, 2A USB power bank. To the right is a battery powered\nspeaker. The dsp-G1 produces monophonic output so a single speaker is fine.\nNext is a MIDI control board with 8 knobs, 8 faders, and lots of buttons. Next\nis a MIDI keyboard with a volume fader (CC-07) and modulation wheel (CC-01).\nThe dsp-G1 ignores pitch bend so the pitch bend wheel is not useful. Next is a\nbreadboard with two Trinket M0s working as USB MIDI to UART MIDI converters.\nThe MIDI UART signals are are routed with blue wires to the MIDI input of the\ndsp-G1. Yellow wires carry 5V power and red wires carry 3.3V power.\n\nThe [DSP Synthesizers\ndsp-G1](https://dspsynth.eu/webshop/product/dsp-g1-analog-modeling-synthesizer/)\nsynth on a chip is great but building a control board with 19 knobs for 19 CCs\ntakes too long. I have a USB MIDI control board so connecting it would be a\nquicker way to test drive the dsp-G1.\n\nMy vague idea was given a USB MIDI keyboard, a USB MIDI control board, and a\ndsp-G1 synth chip, build a battery powered standalone synth. No computer so\nthis rules out Raspberry Pi solutions. Just plug in, power up, and start\nplaying.\n\nThe solution I came up with uses two Adafruit Trinket M0 boards as USB host to\nUART MIDI. The Trinket M0 and the dsp-G1 all operate at 3.3V logic levels on\nthe same board so there is no need for DIN connectors, opto-isolators, or logic\nlevel shifters.\n\nThe Trinket M0 is based on the Microchip SAMD21 so it is very different from\nthe original Trinket. The original Trinket cannot be used for this project.\n\n## MIDI flow\n\n```\nUSB MIDI Keyboard -\u003e Trinket M0 1 UART Tx\n                                   |\n                                   v\nUSB MIDI nanoKntrl-\u003e Trinket M0 2 UART Rx\n                                  UART Tx -\u003e dsp-G1\n```\n\nIn addition, the default control board CC numbers must be mapped to the ones\nrequired by the dsp-G1 chip. This can easily be handled in software by the\nTrinket M0.\n\nConnection table. Pins in rows are connected together.\n\nPower   |Trinket M0 1   |Trinket M0 2   |dsp-G1\n------- |-------------- |------------   |------\nGND     |GND            |GND            |GND\n5V      |USB            |USB            |n/c\nn/c     |n/c            |3V             |VDD x 3\nn/c     |TX-4           |RX-3           |n/c\nn/c     |n/c            |TX-4           |MIDI RX\nn/c     |n/c            |n/c            |Audio out\n\nThe 5V power source powers both Trinket M0s (TM0s) as well as the MIDI devices\nconnected to TM0s. The TM0-2 3.3V output powers the dsp-G1 synth chip. If a\nMIDI device with lots of LEDs is used, be sure the 5V power source provides\nenough current for all devices.\n\nBoth TM0s are running the same sketch. If a USB MIDI keyboard with lots of\nknobs is plugged into TM0-2, TM0-1 is not needed.\n\nUsing different MIDI device will require changes to the sketch if CC numbers\nmust be changed.\n\n## USB MIDI host to UART\n\nThe [USB Host Library for\nSAMD](https://github.com/gdsports/USB_Host_Library_SAMD) provides the USB Host\nMIDI driver. The library is derived from the [USB Host Shield\nLibrary](https://github.com/felis/USB_Host_Shield_2.0).\n\nThe [MIDI for\nArduino](https://github.com/FortySevenEffects/arduino_midi_library) library\nprovides the MIDI UART driver.\n\n## Soldered board\n\n![dsp-G1 synth chip with MIDI keyboard and control inputs](./images/dspg1-soldered.jpg)\n\nThis picture shows the soldered proto board version. The Trinket M0s are\nmounted on headers so are floating above the proto board. Unfortunately,\nparallax makes it appear the Trinket M0 pins are shifted. For example, on the\nleft Trinket M0, the blue wires are connected to pins 3 and 4 but in the photo\nthey appear to connect to the 3 and Rst. Be sure to use the connection table\nor zoom in on the other photo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Fdspg1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdsports%2Fdspg1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Fdspg1/lists"}