{"id":13607704,"url":"https://github.com/l3lackShark/gosumemory","last_synced_at":"2025-04-12T14:30:57.110Z","repository":{"id":42408053,"uuid":"241044058","full_name":"l3lackShark/gosumemory","owner":"l3lackShark","description":"Cross-Platform memory reader for osu!  ","archived":false,"fork":false,"pushed_at":"2023-12-18T13:05:36.000Z","size":71782,"stargazers_count":697,"open_issues_count":92,"forks_count":64,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-07T13:37:13.928Z","etag":null,"topics":["counter","linux","memory","osu","pp","reader","websocket","windows"],"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/l3lackShark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":"https://www.buymeacoffee.com/BlackShark"}},"created_at":"2020-02-17T07:22:30.000Z","updated_at":"2024-11-05T06:46:17.000Z","dependencies_parsed_at":"2023-12-18T13:58:20.661Z","dependency_job_id":"96a4d616-c980-4e02-ad9b-befaaa4b31f0","html_url":"https://github.com/l3lackShark/gosumemory","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3lackShark%2Fgosumemory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3lackShark%2Fgosumemory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3lackShark%2Fgosumemory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l3lackShark%2Fgosumemory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/l3lackShark","download_url":"https://codeload.github.com/l3lackShark/gosumemory/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248581047,"owners_count":21128093,"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":["counter","linux","memory","osu","pp","reader","websocket","windows"],"created_at":"2024-08-01T19:01:20.880Z","updated_at":"2025-04-12T14:30:56.747Z","avatar_url":"https://github.com/l3lackShark.png","language":"Go","funding_links":["https://www.buymeacoffee.com/BlackShark"],"categories":["Community Resources","For developers"],"sub_categories":["Tools","Audio"],"readme":"\u003cimg src=\"https://i.imgur.com/SiRniTb.png\" width=\"1000\"\u003e\n\nYet another memory reader for osu! Supports both Linux and Windows. (**requires sudo on Linux** though since only root can read /proc)\n\nBuild custom pp counters with ease!\\\nYou can contact us here: https://discord.gg/8enr4qD\n\n# Real-World examples:\n\n[![cpol](https://img.shields.io/badge/cpol%20v5.0---?style=for-the-badge\u0026color=DFD895)](https://youtu.be/neHcOLycieE)\n[![FlyingTuna](https://img.shields.io/badge/FlyingTuna%20v1.5---?style=for-the-badge\u0026color=527FD5)](https://www.twitch.tv/flyingtuna/clip/TransparentObliviousHawkAMPEnergyCherry)\n[![Alumetri](https://img.shields.io/badge/Alumetri%20v1.2---?style=for-the-badge\u0026color=FF94B6)](https://mega.nz/file/QV1gTKoI#j1QRjDkrjnFvIhyb9JuGi3g_0XZCFzXEXz9PKWcxgmI)\n[![Sotarks](https://img.shields.io/badge/Sotarks%20v1.0---?style=for-the-badge\u0026color=C63F55)](https://mega.nz/file/oAlmlQoY#8ABeJPGboMLgCiaY5vR21HX2Km--_jiwqRHOmUJvVmg)\n[![Mrekk](https://img.shields.io/badge/Mrekk%20v1.0---?style=for-the-badge\u0026color=72a0d4)](https://mega.nz/file/UZsEUKDK#Ji3JAUr8_04Q7u0RG1BAJFGzZ2-CRhRZkEQqdXVrv60)\n[![Mathi](https://img.shields.io/badge/Mathi%20v1.5---?style=for-the-badge\u0026color=4981CE)](https://mega.nz/file/5dsk1QJD#noUKykU5qJYv53I2DPZ7PY2CIQOftS1ufqzOh4rqOb8)\n[![RyuK](https://img.shields.io/badge/RyuK%20v1.0---?style=for-the-badge\u0026color=f72f4d)](https://mega.nz/file/dY8k1YyZ#1Phdta1CzxXDotjtllUKsZunnCdliYlQ1VrZ_BNaNIs)\n\n\n# Usage\n     \n1. [Download the latest Release](https://github.com/l3lackShark/gosumemory/releases/latest)\n    * Unzip files anywhere\n    \u003e In the root folder of the program, you can find the **static** directory. It contains all of the available counters. Those are getting streamed via HTTP-File server\n\n2. Run gosumemory \u0026 osu!\n    * Visit this link in your browser: http://localhost:24050 and choose the counter that you like.\n    * Add a browser source in OBS (Width and Height could be found in the **Included counters** spoiler)\n4. If using built-in counters covers all of your needs, then you are done here.\n\u003e **Please note that auto-updates only cover the executable itself, however, if a new counter gets released, we will mention it in the Release Notes.**\\\n\u003e If you want to make your own, just create a new directory in the *static* folder.  \n\n# Does this work in-game?\n\nYes! see [this](https://github.com/l3lackShark/gosumemory/wiki/GameOverlay)\n\n\n# Included counters:\n\u003cdetails\u003e\n  \u003csummary\u003eClick ME\u003c/summary\u003e\n\n### InGame1\n\n\u003e Size: 240x133\\\n\u003cimg  src=\"https://user-images.githubusercontent.com/20248967/110195364-7337e280-7e5e-11eb-9bbb-8dadddf6e2bd.png\"  width=\"250\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n\n### InGame2\n\n\u003e Size: 370x120\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/562954897163812865/817866179619192862/unknown.png\"  width=\"280\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n\n### InGame3\n\n\u003e Size: 150x70\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/562954897163812865/817866299274559498/unknown.png\"  width=\"150\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n\n\n### reComfortaa\n\n\u003e Size: 1152x245\\\n\u003e *Song Selection*\\\n\u003cimg src=\"https://i.imgur.com/r4AWqbH.png\" width=\"500\"\u003e\\\n\u003e*Gameplay*\\\n\u003cimg src=\"https://i.imgur.com/7rEgtkH.png\" width=\"500\"\u003e\\\nBy: [Xynogen][6]\u003cbr\u003e\n\n### MonokaiPane\n\n\u003e Size: 512x150\\\n\u003e *Song Selection*\\\n\u003cimg src=\"https://i.imgur.com/T8p0R29.png\" width=\"500\"\u003e\\\n\u003e*Gameplay 1*\\\n\u003cimg src=\"https://i.imgur.com/TAmHvFM.png\" width=\"500\"\u003e\\\n\u003e*Gameplay 2*\\\n\u003cimg src=\"https://i.imgur.com/FpHkdLg.png\" width=\"500\"\u003e\\\nBy: Xynogen\u003cbr\u003e\n\n### WaveTournament\n\n\u003e Size: 1920x1080\\\n\u003e *Chat + Warmup (Team score disabled) view*\\\n\u003cimg src=\"https://user-images.githubusercontent.com/23419562/97575468-59554180-1a1f-11eb-8f63-c6db9dd621fa.png\" width=\"500\"\u003e\\\n\u003e *Chat + Warmup (Team score disabled) view*\\\n\u003cimg src=\"https://user-images.githubusercontent.com/23419562/97575499-61ad7c80-1a1f-11eb-850d-9e8754a5cc93.png\" width=\"500\"\u003e\\\n\u003e *Gameplay*\\\n\u003cimg src=\"https://user-images.githubusercontent.com/23419562/97575572-81dd3b80-1a1f-11eb-8e92-e0fb67fadeac.png\" width=\"500\"\u003e\\\nBy: [VictimCrasher][4]\u003cbr\u003e\n\n### Classic\n\n\u003e Size: 550x300\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/641255341245333514/731838930340544573/unknown.png\"  width=\"500\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n\n### OldClassic\n\n\u003e Size: 550x300\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/530940222771560452/732545954468593664/unknown.png\"  width=\"500\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n  \n### Simplistic\n\n\u003e Size: 750x150\\\n\u003e *Song Selection*\\\n\u003cimg src=\"https://i.postimg.cc/zvN5nxTZ/download.png\"\u003e\\\n\u003e*Gameplay 1*\\\n\u003cimg src=\"https://i.postimg.cc/NMMhcLmV/Screenshot-1.png\"\u003e\\\nBy: [jassper0][5]\u003cbr\u003e\n\n### DarkAndWhite\n\n\u003e Size: 840x140\\\n\u003cimg  src=\"https://i.imgur.com/mBN375B.jpg\"  width=\"500\"\u003e\\\nBy: [cyperdark][2]\u003cbr\u003e\n\n### Kerli1 \u0026 Kerli2\n\n\u003e Size (1)(2): 794x124 | 353x190\\\n\u003cimg  src=\"https://i.imgur.com/n2w260o.jpg\"  width=\"500\"\u003e\\\nBy: [Dartandr][1]\u003cbr\u003e\n\n### Luscent\n\n\u003e Size: 1920x1080\\\nOpen-Source Implementation of [Siae's Luscent][3] overlay. No elements were stolen. This is a remake. Please [consider buying](https://gumroad.com/l/Luscent) her version!\\\n\u003cimg  src=\"https://media.discordapp.net/attachments/641255341245333514/731843129833160704/unknown.png\"  width=\"500\"\u003e\\\nRemake by: [Dartandr][1]\n\n### VictimCrasherCompact\n\n\u003e Size: 560x150\\\n\u003e *Song Selection*\\\n\u003cimg  src=\"https://i.imgur.com/1F1GK3Z.png\" width=\"500\"\u003e\\\n\u003e\n\u003e *Gameplay*\\\n\u003cimg  src=\"https://i.imgur.com/epx6dij.png\" width=\"500\"\u003e\\\nBy: [VictimCrasher][4]\u003cbr\u003e\n  \n### VictimCrasherOverlay\n\n\u003e Size: 1920x1080\\\n\u003cimg  src=\"https://i.imgur.com/Wo6wI1B.png\"  width=\"500\"\u003e\\\nBy: [VictimCrasher][4]\u003cbr\u003e\n\n### UnstableRate\n\n\u003e Size: 300x100\\\nJust a plain number that shows current UnstableRate, could be useful if you want to put it above your UR Bar.\\\nBy: [Dartandr][1]\n\n### MaximalLime\n\n\u003e Size: 800x306\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/641255341245333514/731841741715669002/unknown.png\"  width=\"500\"\u003e\\\nBy: [cyperdark][2]\u003cbr\u003e\n\n### MinimalLime\n\n\u003e Size: 640x130\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/641255341245333514/731840161612300358/unknown.png\"  width=\"500\"\u003e\\\nBy: [cyperdark][2]\u003cbr\u003e\n\n### TrafficLight\n\n\u003e Size: 458x380\\\n\u003cimg  src=\"https://cdn.discordapp.com/attachments/641255341245333514/731842011514011698/unknown.png\"\u003e\\\nBy: [cyperdark][2]\u003cbr\u003e\n\n[1]: https://github.com/Dartandr\n\n[2]: https://github.com/cyperdark\n\n[3]: https://twitter.com/mk_cou/status/1464208290158501894\n\n[4]: https://github.com/VictimCrasher\n\n[5]: https://github.com/jassper0\n\n[6]: https://github.com/Xyn0gen\n\n\n\u003c/details\u003e\n\n# How does it work?\n\ngosumemory streams WebSocket data to **ws://localhost:24050/ws** that you can use in any programming language to develop a frontend. We recommend JavaScript though, as it's much easier to make something pretty with the Web framework. All of the included counters are good starting points. There is also http://localhost:24050/json that you can open in a web browser to see the available data. We strongly recommend against sending GET requests to that address in production, please **use WebSocket instead**.\n\n**[Example JSON and a little wiki of it's values](https://github.com/l3lackShark/gosumemory/wiki/JSON-values)**\n\n# What if I don't know any programming languages but still want to output data to OBS?\nhttps://www.youtube.com/watch?v=8ApXBEO5bes \n\n# How do I submit a pp counter?\n\nHead over to [static](https://github.com/l3lackShark/static) and create a pull request there. If it's good quality, then it will get approved and included in the next release.\n\n# Tournament Client\n\nWhen operating in tourney mode, real-time pp counters for each client, leaderboard and grades don't work. Each gameplay object is sorted by tournament client \"id\", \"menu\" object is a tournament manager (state 22). \n**Tournament mode works only with Cutting Edge tourney client and is not supported on Linux.**\n\n# Linux\n\nYou have two options. Either run native, but with sudo privileges, or through WINE.\nPlease note that Linux builds are not well tested and could contain crashes. Report them if you encounter any.\n\n# Consider supporting\n\u003ca href=\"https://www.buymeacoffee.com/BlackShark\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.discordapp.com/attachments/530940222771560452/750051751025049741/default-blue_1.png\" alt=\"Buy Me A Coffee\" style=\"height: 51px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n\n# This project depends on:\n\n* [cast](https://github.com/spf13/cast)\n* [gorilla-websocket](https://github.com/gorilla/websocket)\n* [open](https://github.com/skratchdot/open-golang)\n* [semver](https://github.com/blang/semver)\n* [selfupdate](https://github.com/rhysd/go-github-selfupdate)\n* [pretty-print](https://github.com/k0kubun/pp)\n* [mp3](https://github.com/tcolgate/mp3)\n* [go-windows](https://github.com/elastic/go-windows)\n\n# Special Thanks to:\n\n* [Piotrekol](https://github.com/Piotrekol/) and his [ProcessMemoryDataFinder](https://github.com/Piotrekol/ProcessMemoryDataFinder) for most of the memory signatures\n* [Francesco149](https://github.com/Francesco149) and his [oppai-ng](https://github.com/Francesco149/oppai-ng) for the pp calculator that we use\n* [tdeo](https://github.com/tadeokondrak) for the [Memory Signature Scanner](https://github.com/l3lackShark/gosumemory/tree/master/mem) package\n* [omkelderman](https://github.com/omkelderman) for helping out with the [db](https://github.com/l3lackShark/gosumemory/tree/master/db) package\n* [jamuwu](https://github.com/jamuwu/osu-strain) and his [osu-strain](https://github.com/jamuwu/osu-strain) for difficulty strain logic\n* [cyperdark](https://github.com/cyperdark) and [Dartandr](https://github.com/Dartandr) for frontend designs\n* [KotRik](https://github.com/KotRikD) for making an [OBS Script](https://github.com/l3lackShark/gosumemory-helpers/blob/master/gosumemory-reader.py) and porting legacy counters\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl3lackShark%2Fgosumemory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl3lackShark%2Fgosumemory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl3lackShark%2Fgosumemory/lists"}