{"id":16750835,"url":"https://github.com/ildus/midi_fpga","last_synced_at":"2026-02-07T17:03:14.332Z","repository":{"id":138663480,"uuid":"325097857","full_name":"ildus/midi_fpga","owner":"ildus","description":"MIDI footswitch controller on iCE40HX1K-EVB","archived":false,"fork":false,"pushed_at":"2021-02-13T08:13:16.000Z","size":1690,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-13T12:55:52.607Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"SystemVerilog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ildus.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,"zenodo":null}},"created_at":"2020-12-28T19:23:18.000Z","updated_at":"2022-02-24T11:56:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"14e8c92a-bf18-409b-970e-af4c0b605e5b","html_url":"https://github.com/ildus/midi_fpga","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ildus/midi_fpga","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fmidi_fpga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fmidi_fpga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fmidi_fpga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fmidi_fpga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ildus","download_url":"https://codeload.github.com/ildus/midi_fpga/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fmidi_fpga/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29200843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T16:28:23.579Z","status":"ssl_error","status_checked_at":"2026-02-07T16:28:22.566Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-10-13T02:42:19.943Z","updated_at":"2026-02-07T17:03:14.327Z","avatar_url":"https://github.com/ildus.png","language":"SystemVerilog","funding_links":[],"categories":[],"sub_categories":[],"readme":"MIDI footswitch controller on iCE40HX1K-EVB\n=============================================\n\nDescription\n-----------\n\nMIDI footswitch controller with four SPDT buttons. Supports MIDI OUT for\ncontrolling other devices and MIDI IN to teach buttons what MIDI commands\nshould be send. Two LEDs indicate current processes.\n\nTeaching is simple, connect other device's MIDI OUT to MIDI IN of footswitch\ncontroller, trigger signal on the other device (LED2 will indicate that our\ncontroller got the signal) and push one of the buttons and it'll accociate\nthe button with MIDI command.\n\nMIDI IN and MIDI OUT schematics should be based on 3.3V (not 5V) as usual.\n\nGetting started\n---------------\n\nLatest versions of `yosys`, `icestorm`, `nextpnr` and `iverilog` packages\nare needed.\n\nCompilation:\n\n```\nmake ice40\n```\n\nUploading is done through my Banana PI (Raspberry PI alternative), I copy\nthe bitstream using ssh to BPI, and I use flashrom to write the bitstream to the\nflash chip on dev board. The command does all that:\n\n```\nmake upload_ice40\n```\n\nLook for any detals in Makefile. Tested on Arch Linux.\n\nFootswitches are 3-pin SPDT, center pin goes to GND, other pins go to pins\nin GPIO, look which pins to use in `ice40/ice40hx1.pcf`. To determine physical\nlocations of pins the `iCE40HX1K-EVB` schematic will be needed, which can be found\n[here](https://github.com/OLIMEX/iCE40HX1K-EVB/blob/master/iCE40HX1K-EVB_Rev_B.pdf).\n\nTests\n-----------\n\n```\npip install cocotb\nmake check\n```\n\nFor simulation install `gtkwave` package and run `make check` with `TESTCASE`\noption. `TESTCASE` is a name of function in `tests/test_midi_ctrl.py`.\nAfter that run:\n\n```\ngtkwave tests/midi_ctrl.vcd\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fildus%2Fmidi_fpga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fildus%2Fmidi_fpga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fildus%2Fmidi_fpga/lists"}