{"id":28183283,"url":"https://github.com/theberkin/cursed_phone","last_synced_at":"2025-05-16T04:15:44.707Z","repository":{"id":65533799,"uuid":"265718565","full_name":"TheBerkin/cursed_phone","owner":"TheBerkin","description":"Audio-only game engine built as a virtual telephone line","archived":false,"fork":false,"pushed_at":"2023-08-07T21:11:05.000Z","size":15338,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-02T01:06:36.647Z","etag":null,"topics":["audio-game","embedded","entertainment","game-engine","lua","phone","raspberry-pi","rust-lang","telephone","telephony","toy-project"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/TheBerkin.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}},"created_at":"2020-05-21T00:47:30.000Z","updated_at":"2023-11-10T18:05:29.000Z","dependencies_parsed_at":"2023-02-15T12:30:44.955Z","dependency_job_id":null,"html_url":"https://github.com/TheBerkin/cursed_phone","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/TheBerkin%2Fcursed_phone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheBerkin%2Fcursed_phone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheBerkin%2Fcursed_phone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheBerkin%2Fcursed_phone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheBerkin","download_url":"https://codeload.github.com/TheBerkin/cursed_phone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464875,"owners_count":22075572,"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":["audio-game","embedded","entertainment","game-engine","lua","phone","raspberry-pi","rust-lang","telephone","telephony","toy-project"],"created_at":"2025-05-16T04:15:36.588Z","updated_at":"2025-05-16T04:15:44.700Z","avatar_url":"https://github.com/TheBerkin.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cursed Phone\n\nAn audio-only game engine for the Raspberry Pi that emulates various styles of analog telephones. Not a VoIP service.\n\nPhone numbers are assigned to scripts (known as \"agents\") rather than people-- simply call the number to call the script. Agents can also be scripted to call the phone back.\n\n## Features\n\nWhat you get out of the box:\n\n* Emulation of rotary, touch-tone, and pay phones-- includes built-in GPIO support for switchhook, rotary dial, keypad, ringer, and coin triggers\n* Lua scripting system\n* GPIO pin access from Lua\n* WAV/OGG multi-channel audio playback support\n* Realistic call progress/DTMF tones\n* Switchhook dialing\n* Comfort noise\n* Intercept services\n* Compatibility with all Raspberry Pi models\n\n## Building\n\nThese instructions are written for Debian (Linux), but this should run in Windows too, as long as you don't have the `rpi` feature enabled.\n\n### Prerequisites\n\nBefore building for Linux, you'll first need to install the ALSA library:\n\n```sh\nsudo apt install libasound2-dev\n```\n\n### Cargo\n\nThen, with Cargo installed, run the appropriate build command for your platform:\n\n```sh\n# Build with GPIO support (for Raspberry Pi)\ncargo build --release --features=rpi\n\n# Build without GPIO support (for non-RPi platforms)\ncargo build --release\n```\n\n### Cross-compilation\n\nIf you plan on cross-compiling, you'll need to install the appropriate build target to your Rust toolchain.\n\n* For ARMv6 (Raspberry Pi 1 / Zero / Zero W), use `arm-unknown-linux-gnueabihf`.\n* For ARMv7/8 (Raspberry Pi 2 / 3 / 4), use `armv7-unknown-linux-gnueabihf`.\n\nMake sure you have an appropriate linker installed and that Cargo can find it.\nYou can do this by filling out and adding the following to your `.cargo/config` file:\n```toml\n[target.\u003cyour target triple here\u003e]\nlinker = \"\u003cyour linker path here\u003e\"\n```\n\nIf compiling on the target system, this step is unnecessary. However, be warned that it will take *forever*.\n\n### Move the built executable\n\nIf you'll be running this as a service, move the built executable (found in `/target/release`) to the project's root directory before use. \n\n\n## Running\n\nBy default the Engine will use the configuration file `cursed_phone.conf` in the current working directory, but the file location can be overridden with the `CURSED_CONFIG_PATH` environment variable.\n\n## Directory structure\n\n```\ncursed_phone/\n┣ addons/           - Default directory for resource overlays (\"addons\")\n┣ definitions/      - Definitions for injected Lua globals\n┣ docs/             - Miscellaneous documentation for the engine\n┣ res/              - Main engine resources\n┃ ┣ agents/         - Agent scripts\n┃ ┣ scripts/        - Scripts that run at startup\n┃ ┣ soundbanks/     - Contains soundbank directories\n┃ ┗ sounds/         - Static sound resources\n┣ setup/            - Files for deploying the engine in production\n┣ src/              - Engine source code\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheberkin%2Fcursed_phone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheberkin%2Fcursed_phone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheberkin%2Fcursed_phone/lists"}