{"id":46500049,"url":"https://github.com/risgk/digital-synth-pra32-u2","last_synced_at":"2026-03-06T13:01:28.180Z","repository":{"id":273164574,"uuid":"918854395","full_name":"risgk/digital-synth-pra32-u2","owner":"risgk","description":"PRA32-U2 is a 4 Voice Polyphonic Synthesizer for Raspberry Pi Pico 2/RP2350","archived":false,"fork":false,"pushed_at":"2026-03-04T12:47:23.000Z","size":15956,"stargazers_count":18,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-04T19:32:50.358Z","etag":null,"topics":["audio","midi","pra32","raspberry-pi-pico-2","rp2350","synthesizer"],"latest_commit_sha":null,"homepage":"https://risgk.github.io/#digital-synth-pra32-u2","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/risgk.png","metadata":{"files":{"readme":"README-PRA32-U2-P.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-19T03:11:02.000Z","updated_at":"2026-02-24T06:17:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb2447eb-b2cb-48df-8640-406e47241ee9","html_url":"https://github.com/risgk/digital-synth-pra32-u2","commit_stats":null,"previous_names":["risgk/digital-synth-pra32-u2"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/risgk/digital-synth-pra32-u2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risgk%2Fdigital-synth-pra32-u2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risgk%2Fdigital-synth-pra32-u2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risgk%2Fdigital-synth-pra32-u2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risgk%2Fdigital-synth-pra32-u2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/risgk","download_url":"https://codeload.github.com/risgk/digital-synth-pra32-u2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/risgk%2Fdigital-synth-pra32-u2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30178284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T12:39:21.703Z","status":"ssl_error","status_checked_at":"2026-03-06T12:36:09.819Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["audio","midi","pra32","raspberry-pi-pico-2","rp2350","synthesizer"],"created_at":"2026-03-06T13:00:22.964Z","updated_at":"2026-03-06T13:01:28.156Z","avatar_url":"https://github.com/risgk.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digital Synth PRA32-U2/P (PRA32-U2 with Panel) v2.5.2\n\n- 2026-03-06 ISGK Instruments\n- \u003chttps://github.com/risgk/digital-synth-pra32-u2\u003e\n\n\n## PRA32-U2/P (Optional)\n\n![PRA32-U2/P (Grove System)](./pra32-u2-with-panel-grove-system.jpg)\n\n- Features\n    - Editing and displaying parameters by panel operation\n    - Playing by panel operation\n    - Built-in monophonic 8-step sequencer\n    - Panel and Step Sequencer Parameters\n- This option requires 1 to 4 SWs (tactile switches), 2 to 3 VRs (ADCs), and a monochrome 128x64 OLED Display based on SSD1306 series drivers\n    - Tested with Pimoroni Pico Audio Pack, M5Stack MIDI Unit (optional), Long Leg 2x20 Pin Socket * 2, Seeed Studio's Grove Shield for Pi Pico, Dual Button * 3, Rotary Angle Sensor * 3, and an OLED Display 0.96 inch\n- Uncomment out `//#define PRA32_U2_USE_CONTROL_PANEL` in \"Digital-Synth-PRA32-U2.ino\" and modify the constants\n- Inputs\n    - SW0: Prev Key (Push to go to the previous page, Long press to the previous group)\n    - SW1: Next Key (Push to go to the next page, Long press to the next group)\n    - SW2: Play Key (Normal Mode: press to play, Sequencer Mode: push to start/stop) (omittable)\n        - To not use this key, comment out `#define PRA32_U2_KEY_INPUT_PLAY_KEY_PIN          (20)` in \"Digital-Synth-PRA32-U2.ino\"\n    - SW3: Prog - Key (Long press to change to the previous user program) (optional)\n        - To use this key, uncomment out `//#define PRA32_U2_KEY_INPUT_PROG_MINUS_KEY_PIN    (17)` in \"Digital-Synth-PRA32-U2.ino\"\n    - SW4: Prog + Key (Long press to change to the next user program) (optional)\n        - To use this key, uncomment out `//#define PRA32_U2_KEY_INPUT_PROG_PLUS_KEY_PIN     (19)` in \"Digital-Synth-PRA32-U2.ino\"\n    - SW5: Shift Key (optional)\n        - Shift + Prev/Next Key: Go to the previous/next group without long-pressing\n        - Shift + Prog -/+ Key: Change to the previous/next user program without long-pressing\n        - Shift + VR0/1/2: Prevent values from changing across 64\n        - To use this key, uncomment out `//#define PRA32_U2_KEY_INPUT_SHIFT_KEY_PIN         (21)` in \"Digital-Synth-PRA32-U2.ino\"\n    - VR0 (ADC0): Parameter A\n    - VR1 (ADC1): Parameter B\n    - VR2 (ADC2): Parameter C for Play (omittable)\n        - Panel Play Pitch in Normal Mode, Seq Pitch Ofst (Offset) in Step Sequencer Mode\n        - To not use this, comment out `#define PRA32_U2_KEY_INPUT_PLAY_KEY_PIN          (20)` in \"Digital-Synth-PRA32-U2.ino\"\n- NOTE: Using a USB cable with ferrite cores is recommended to prevent ADCs from being affected by USB MIDI communication noise, and UART MIDI control is also recommended\n\n\n### GUI Pages\n\n#### Group A\n\n- Synth Parameters\n    - NOTE: The parameters Filter EG Amt and EG Filter Amt are the same\n\n#### Group B\n\n- Panel Parameters\n    - Panel Play Mode [Nrm|Seq]: Normal Mode, Step Sequencer Mode\n    - Panel MIDI Ch: Basic Channel 1-16\n    - Panel Play Pitch: 0 is Off, 1-4 is lowest, 124-127 is highest\n    - Panel Play Velo (Velocity)\n    - Panel Scale [Maj|Min|Mel|MaP|MiP|Chr]: Major, Natural Minor, Ascending Melodic Minor (Jazz Minor), Major Pentatonic, Minor Pentatonic, Chromatic (2 octaves)\n    - Panel Pitch Ofst (Offset) [-|+]: Offset Panel Play Pitch and Seq Pitch 0-7 (min -60 to max +60)\n        - For example, if Panel Scale is Maj and Panel Pitch Ofst is -25, the scale is G Mixolydian\n        - For example, if Panel Scale is Maj and Panel Pitch Ofst is -15, the scale is A Aeolian (Natural Minor)\n        - For example, if Panel Scale is Maj and Panel Pitch Ofst is +10, the scale is D Dorian\n        - For example, if Panel Scale is Maj and Panel Pitch Ofst is +20, the scale is E Phrygian\n        - For example, if Panel Scale is Maj and Panel Pitch Ofst is +25, the scale is F Lydian\n    - Panel Transpose [-|+]\n        - For example, if Panel Scale is Mel and Panel Transpose is -3, the scale is A Ascending Melodic Minor (Jazz Minor)\n        - For example, if Panel Scale is Min and Panel Transpose is -3, the scale is A Natural Minor\n        - For example, if Panel Scale is MiP and Panel Transpose is -3, the scale is A Minor Pentatonic\n- Step Sequencer Parameters\n    - Seq Step Note [4|8|16]: Quarter Note, Eighth Note, Sixteenth Note\n    - Seq Clock Src [Int|Ext]: Internal, External (Rx MIDI Clock)\n    - Seq Pitch Ofst (Offset) [-|+]: Offset Seq Pitch 0-7 (min -60 to max +60)\n    - Seq T/Rx St/Sp (Transmit/Receive Start/Stop): Off, On\n    - Seq Tempo: BPM 56-300\n    - Seq Gate Time [1/6|2/6|3/6|4/6|5/6|6/6]\n    - Seq Mode [Fwd|Rvs|Bnc]: Forward, Reverse, Bounce\n    - Seq Num Steps (Number of Steps): 1-32 (current step mod 8 is used as the index for Seq Pitch and Seq Velo)\n    - Seq On Steps: bit 0 is Step 1 On, ..., bit 6 is Step 7 On (Step 0 is always On)\n    - Seq Act Steps (Active Steps): bit 0 is Step 1 Active, ..., bit 6 is Step 7 Active (Step 0 is always Active)\n    - Seq Pitch 0-7: 0 is Off, 1-4 is lowest, 124-127 is highest\n    - Seq Velo 0-7 (Velocity 0-7)\n- Step Sequencer Operations\n    - Seq Rand Pitch (Randomize Pitch 0-7): Change the value from 0-32 [Rdy] to 96-127 [Exe]\n    - Seq Rand Velo (Randomize Velo 0-7): Change the value from 0-32 [Rdy] to 96-127 [Exe]\n- Control Parameters\n    - Modulation\n    - Breath Controller\n    - Sustain Pedal\n- Control Operations\n    - Panic: Change the value from 0-32 [Rdy] to 96-127 [Exe]\n\n\n#### Group C\n\n- Write Operations\n    - Write Program 0-7, Write Panel Prms (Write Panel and Step Sequencer Parameters)\n        - Change the value from 0-32 [Rdy] to 96-127 [Exe] to write to the flash\n\n\n#### Group D\n\n- Read Operations\n    - Read Program 1-7, 8-15, Read Panel Prms, Init Panel Prms\n        - Change the value from 0-32 [Rdy] to 96-127 [Exe] to read from the flash\n\n\n### Circuit Diagram\n\n![Circuit Diagram](./pra32-u2-with-panel-circuit-diagram.png)\n\n- This image was created with Fritzing.\n    - Actually, it is necessary to use Raspberry Pi Pico 2 (instead of Raspberry Pi Pico)\n- NOTE: Unlike Digital Synth PRA32-U v3.1.0, the switches are low active and RP2350 uses internal pull-up to avoid RP2350-E9 Erratum\n\n\n### An Example of Construction Using a Universal PCB\n\n- Using a universal PCB, GY-PCM5102 (PCM5102A I2S DAC Module), 6 SWs, 3 VRs, a OLED Display, and a M5Stack MIDI Unit (optional)\n    - An connection between Raspberry Pico 2's Mute Off Pin and GY-PCM5102's XSMT is omitted\n\n![PRA32-U2/P (Universal PCB)](./pra32-u2-with-panel-universal-pcb.jpg)\n\n\n### An Example of Construction Using a Breadboard\n\n- Using a breadboard, GY-PCM5102 (PCM5102A I2S DAC Module), 3 SWs, 3 VRs, and a OLED Display\n    - An connection between Raspberry Pico 2's Mute Off Pin and GY-PCM5102's XSMT is omitted\n\n![PRA32-U2/P (Bread Board)](./pra32-u2-with-panel-breadboard.jpg)\n\n\n### Table of GUI Pages\n\n| Page           | Parameter A         | Parameter B      |\n| :------------- | :------------------ | :--------------- |\n| A-00 Info      | PRA32-U2/P          | v2.5.2           |\n| A-01 Voice     | Voice Mode          | Voice Asgn Mode  |\n| A-02 Pitch     | Portamento          | Pitch Bend Range |\n| A-03 Osc a     | Osc 1 Wave          | Mixer Noise/Sub  |\n| A-04 Osc b     | Osc 1 Shape         | Osc 1 Morph      |\n| A-05 Osc c     | Osc 2 Wave          | Mixer Osc Mix    |\n| A-06 Osc d     | Osc 2 Coarse        | Osc 2 Pitch      |\n| A-07 Osc e     | Osc Drift           | Osc Saw W Mode   |\n| A-08 Filter a  | Filter Cutoff       | Filter Resonance |\n| A-09 Filter b  | Filter EG Amt       | Filter Key Track |\n| A-10 Filter c  | Filter Mode         |                  |\n| A-11 EG a      | EG Attack           | EG Decay         |\n| A-12 EG b      | EG Sustain          | EG Release       |\n| A-13 EG c      | EG Amp Mod          | Release = Decay  |\n| A-14 EG d      | EG Mod Amt          | EG Mod Dst       |\n| A-15 EG e      | EG Filter Amt       | EG Velo Sens     |\n| A-16 Amp a     | Amp Attack          | Amp Decay        |\n| A-17 Amp b     | Amp Sustain         | Amp Release      |\n| A-18 Amp c     | Amp Gain            | Amp Velo Sens    |\n| A-19 Panner    | Pan                 |                  |\n| A-20 LFO a     | LFO Wave            | LFO Fade Time    |\n| A-21 LFO b     | LFO Rate            | LFO Depth        |\n| A-22 LFO c     | LFO Mod Amt         | LFO Mod Dst      |\n| A-23 LFO d     | LFO Filter Amt      |                  |\n| A-24 Breath    | Breath Filter Amt   | Breath Amp Mod   |\n| A-25 Aft Touch | Aft Touch LFO Amt   |                  |\n| A-26 Chorus a  | Chorus Level        |                  |\n| A-27 Chorus b  | Chorus Rate         | Chorus Depth     |\n| A-28 Delay a   | Delay Level         | Delay Mode       |\n| A-29 Delay b   | Delay Time          | Delay Feedback   |\n| B-00 Panel a   | Panel Play Mode     | Panel MIDI Ch    |\n| B-01 Panel b   | Panel Play Pitch    | Panel Play Velo  |\n| B-02 Panel c   | Panel Scale         | Panel Pitch Ofst |\n| B-03 Panel d   | Panel Transpose     |                  |\n| B-04 Seq a     | Seq Step Note       | Seq Clock Src    |\n| B-05 Seq b     | Seq Transpose       | Seq T/Rx St/Sp   |\n| B-06 Seq c     | Seq Tempo           | Seq Gate Time    |\n| B-07 Seq d     | Seq Mode            | Seq Num Steps    |\n| B-08 Seq e     | Seq On Steps        | Seq Act Steps    |\n| B-09 Seq f     | Seq Rand Pitch      | Seq Rand Velo    |\n| B-10 Seq 0     | Seq Pitch 0         | Seq Velo 0       |\n| B-11 Seq 1     | Seq Pitch 1         | Seq Velo 1       |\n| B-12 Seq 2     | Seq Pitch 2         | Seq Velo 2       |\n| B-13 Seq 3     | Seq Pitch 3         | Seq Velo 3       |\n| B-14 Seq 4     | Seq Pitch 4         | Seq Velo 4       |\n| B-15 Seq 5     | Seq Pitch 5         | Seq Velo 5       |\n| B-16 Seq 6     | Seq Pitch 6         | Seq Velo 6       |\n| B-17 Seq 7     | Seq Pitch 7         | Seq Velo 7       |\n| B-18 Control a | Modulation          | Expression       |\n| B-19 Control b | Breath Controller   | Sustain Pedal    |\n| B-20 Control c | Panic               |                  |\n| C-00 Write 0   | Write Program 0     | Write Program 1  |\n| C-01 Write 2   | Write Program 2     | Write Program 3  |\n| C-02 Write 4   | Write Program 4     | Write Program 5  |\n| C-03 Write 6   | Write Program 6     | Write Program 7  |\n| C-04 Write a   | Write Panel Prms    |                  |\n| D-00 Read 0    | Read Program 0      | Read Program 1   |\n| D-01 Read 2    | Read Program 2      | Read Program 3   |\n| D-02 Read 4    | Read Program 4      | Read Program 5   |\n| D-03 Read 6    | Read Program 6      | Read Program 7   |\n| D-04 Read 8    | Read Program 8      | Read Program 9   |\n| D-05 Read 10   | Read Program 10     | Read Program 11  |\n| D-06 Read 12   | Read Program 12     | Read Program 13  |\n| D-07 Read 14   | Read Program 14     | Read Program 15  |\n| D-08 Read a    | Read Panel Prms     | Init Panel Prms  |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frisgk%2Fdigital-synth-pra32-u2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frisgk%2Fdigital-synth-pra32-u2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frisgk%2Fdigital-synth-pra32-u2/lists"}