{"id":17173538,"url":"https://github.com/richardlt/matrix","last_synced_at":"2025-10-14T01:37:32.863Z","repository":{"id":57610653,"uuid":"118959467","full_name":"richardlt/matrix","owner":"richardlt","description":"Video game console operating system that displays on a RGB LED matrix.","archived":false,"fork":false,"pushed_at":"2024-01-21T10:25:21.000Z","size":6686,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-13T16:37:59.142Z","etag":null,"topics":["arduino","golang","grpc","hacktoberfest","led-strips","nodejs","polymer","raspberry-pi","react","redux","socket-io"],"latest_commit_sha":null,"homepage":"","language":"Go","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/richardlt.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-01-25T19:44:39.000Z","updated_at":"2023-11-28T16:37:47.000Z","dependencies_parsed_at":"2024-01-06T10:25:16.503Z","dependency_job_id":"38deb228-fc3f-4124-9aee-0c83f2c5cc4b","html_url":"https://github.com/richardlt/matrix","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/richardlt/matrix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardlt%2Fmatrix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardlt%2Fmatrix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardlt%2Fmatrix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardlt%2Fmatrix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardlt","download_url":"https://codeload.github.com/richardlt/matrix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardlt%2Fmatrix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017495,"owners_count":26086084,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["arduino","golang","grpc","hacktoberfest","led-strips","nodejs","polymer","raspberry-pi","react","redux","socket-io"],"created_at":"2024-10-14T23:51:41.328Z","updated_at":"2025-10-14T01:37:32.849Z","avatar_url":"https://github.com/richardlt.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"https://raw.githubusercontent.com/richardlt/matrix/master/docs/logo.png\" width=\"30\"/\u003e\u0026#8239;Matrix\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/richardlt/matrix)](https://goreportcard.com/report/github.com/richardlt/matrix)\n\nVideo game console operating system that displays on a 16*9 RGB LED matrix.\n\n\u003cp align=\"center\"\u003e\n  \u003cbr/\u003e\n  \u003cimg src=\"./docs/gamepad.gif\" width=\"400\"/\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n\u003c/p\u003e\n\n## Existing softwares\n\n| | Name | Description | |\n| - | - | - | - |\n| \u003cimg src=\"./docs/demo.png\" width=\"60\"/\u003e | Demo | A demo software that uses all drivers from the SDK. | \u003cimg src=\"./docs/demo.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/yumyum.png\" width=\"60\"/\u003e | Yumyum | Eat all the candies with your monster to win the game. | \u003cimg src=\"./docs/yumyum.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/clock.png\" width=\"60\"/\u003e | Clock | What time is it? | \u003cimg src=\"./docs/clock.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/zigzag.png\" width=\"60\"/\u003e | Zigzag | Turn left then right, eat candies but not yourself. | \u003cimg src=\"./docs/zigzag.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/draw.png\" width=\"60\"/\u003e | Draw | For those who like pixel art. | \u003cimg src=\"./docs/draw.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/device.png\" width=\"60\"/\u003e | Device | The Device software allows you to change the luminosity of the LEDs. | \u003cimg src=\"./docs/device.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/blocks.png\" width=\"60\"/\u003e | Blocks | A puzzle game, score a maximum of points by clearing complete lines. | \u003cimg src=\"./docs/blocks.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/getout.png\" width=\"60\"/\u003e | Getout | A labyrinth game, try to get out if you can. | \u003cimg src=\"./docs/getout.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/rollup-dice.png\" width=\"60\"/\u003e | Rollup dice | Random dice generator (https://github.com/gwenker/matrix-rollup-dice). | \u003cimg src=\"./docs/rollup-dice.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/animate.png\" width=\"60\"/\u003e | Animate | Player for animations generated with Glediator (http://www.solderlab.de/index.php/software/glediator). | \u003cimg src=\"./docs/animate.gif\" width=\"150\"/\u003e |\n| \u003cimg src=\"./docs/light.png\" width=\"60\"/\u003e | Light | Simple software to generate mood light. | \u003cimg src=\"./docs/light.gif\" width=\"150\"/\u003e |\n\n## Matrix types\n\nThere are 3 main types that exists in Matrix's sdk:\n- A **display** receives a live stream of frames from core.\n- A **player** sends actions for a slot to core, an action is a button press/release event.  \n- A **software** receives player's actions from core and use sdk's rendering features to generate frames in Matrix core. \n\n## Matrix components\n\n| Name | Description |\n| - | - |\n| Core | The heart of the Matrix system that managed software's lifecycle. All softwares, players and displays are connected to core. |\n| Device | The component that interacts with usb controllers and Arduino. |\n| Gamepad | A web application that contains a virtual controller with display. |\n| Emulator | A web application built for development purpose. It displays Matrix main screen and player's screens. |\n\n## Production setup\n\nMatrix is designed to run on a Raspberry Pi (at least model 3), it is composed by multiple softwares (core, device, gamepad...). All softwares can run on the Raspberry Pi but you can also start a software on your desk that will communicate remotely with the Matrix's core (with flag --core-uri).\n\nHere are the few steps to install your own Matrix:\n\n1. Download Matrix latest release [here](https://github.com/richardlt/matrix/releases). If you want to install it on Raspbian or Debian there is a .deb file available that will create a service to start Matrix automatically at boot.\n\n2. Extract/install and run Matrix package.\n```sh\n$ dpkg -i matrix.deb # for Raspbian/Debian users\n$ service matrix status\n```\n```sh\n$ unzip matrix.zip # for others\n$ cd matrix-package \u0026\u0026 ./matrix-[REPLACE_DEPENDING_OS] start --log-level info --gamepad-port 80 core device gamepad emulator demo zigzag yumyum clock draw blocks getout # select the right executable depending on your os \n```\n\n3. Install firmware on the Arduino from file in Matrix source code (inside folder at ./device/firmware/firmware.ino). Source code can be downloaded from [release](https://github.com/richardlt/matrix/releases).\n\n## Development setup (linux/darwin)\n\n1. Requirements.\n* [Go](https://golang.org/dl/) (version 1.17+)\n* [Node.js](https://nodejs.org/en/download/) (with npm, version 16+)\n\n2. Install JS projects dependencies.\n```sh\n$ make install-all\n```\n\n3. Run it.\n```sh\n$ go run main.go start --log-level info core gamepad emulator demo # you can start all other softwares by adding their names\n$ (cd emulator \u0026\u0026 npm start)\n$ (cd gamepad \u0026\u0026 npm start)\n```\n\n4. Open emulator at http://localhost:3001 and/or gamepad at http://localhost:4002.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardlt%2Fmatrix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardlt%2Fmatrix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardlt%2Fmatrix/lists"}