{"id":18014878,"url":"https://github.com/zevv/bip","last_synced_at":"2025-10-07T18:39:03.732Z","repository":{"id":150598911,"uuid":"494206163","full_name":"zevv/bip","owner":"zevv","description":null,"archived":false,"fork":false,"pushed_at":"2022-06-02T16:13:01.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T13:49:37.656Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zevv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-05-19T19:36:47.000Z","updated_at":"2022-05-21T07:17:39.000Z","dependencies_parsed_at":"2023-06-11T17:15:32.702Z","dependency_job_id":null,"html_url":"https://github.com/zevv/bip","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/zevv%2Fbip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zevv%2Fbip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zevv%2Fbip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zevv%2Fbip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zevv","download_url":"https://codeload.github.com/zevv/bip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198466,"owners_count":20900081,"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":[],"created_at":"2024-10-30T04:11:26.530Z","updated_at":"2025-10-07T18:38:58.704Z","avatar_url":"https://github.com/zevv.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Bip\n\nBip parses text and emits bleeps to let you hear what's happening. Great for analysis of\nreal time info like log files, network dumps or output of complex program.\n\nBip is basically a tiny multi-channel synthesizer that is driven from a\nlitte Lua script; Lua parses the text and generates sounds on the synth.\n\n```\n  ,-------.     ,------------.     ,-----------.    ,-----------.\n  | stdin | --\u003e | ~/.bip.lua | --\u003e | bip synth | -\u003e | soundcard |\n  `-------'     `------------'     `-----------'    `-----------'\n```\n\n\n## Building\n\n```\nmake\n```\n\nCopy `bip.lua` to `~/.bip.lua` and edit the code to make the beeps match your input.\n\n\n## Usage\n\nPipe anything to `bip`, and optionally write your own little Lua filters to match\nthe bips with your input. See the examples below.\n\nDefault lua file is `~/.bip.lua`, or provide a lua script file name to load on\nthe command line.\n\nBip wil periodically reload the lua file when modified, so you can tweak your bips in\na running session without having to restart.\n\n\n## Examples\n\n### Tail your syslog:\n\n```\njournalctl -f | bip\n```\n\n### Interactive shell with sound. \n\n```\nbash | bip\n```\n\nThis will break some programs requiring a true tty though\n\n\n### Live network inspection\n\nRun tcpdump in real time and generate an unique pitch and pan for each source\nand destination:\n\n```\nsudo tcpdump --immediate-mode -i enp8s0 -n -l | bip\n```\n\nwith the following lua script:\n\n```\nfunction on_line(line)\n   for src, dst in line:gmatch(\"IP (%S+) \u003e (%S-):\") do\n      local i = hash(src) + hash(dst)\n      local freq = 110 * math.pow(1.05946309, (i % 40) + 20)\n      local pan = (i % 16) / 8 - 1.0\n      bip(freq, 0.02, 1.0, pan)\n   end\nend\n```\n\n## Lua API\n\nFunctions available in your lua code\n\n### Callbacks:\n\nTo be implemented by the user, this gets called for each line on stdin.\n\n```on_line(line)```\n\n\n### API functions\n\n\n```\nbip(freq, duration, gain, pan)\n\nfreq: Hz\nduration: sec\ngain: 0.1\npan: -1.0 .. 1.0\n```\n\nPlay a beep with the given frequency, duration, gain and pan\n\n\n```\nhash(s)\n\ns: string\n```\n\nGenerates a simple hash integer from the given string.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzevv%2Fbip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzevv%2Fbip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzevv%2Fbip/lists"}