{"id":13490967,"url":"https://github.com/nyatla/TBSKmodemJS","last_synced_at":"2025-03-28T07:31:40.650Z","repository":{"id":77367726,"uuid":"582612430","full_name":"nyatla/TBSKmodemJS","owner":"nyatla","description":"TBSKmodem javascript implementation.","archived":false,"fork":false,"pushed_at":"2023-04-28T11:35:18.000Z","size":1808,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-09T08:17:40.503Z","etag":null,"topics":["audio","javascript","modem","wasm","wireless-communication"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nyatla.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}},"created_at":"2022-12-27T11:11:40.000Z","updated_at":"2023-04-21T04:12:54.000Z","dependencies_parsed_at":"2024-01-16T09:24:44.335Z","dependency_job_id":"5b00b1a9-2717-49bb-ae85-fd8d4b9f1f07","html_url":"https://github.com/nyatla/TBSKmodemJS","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nyatla%2FTBSKmodemJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nyatla%2FTBSKmodemJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nyatla%2FTBSKmodemJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nyatla%2FTBSKmodemJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nyatla","download_url":"https://codeload.github.com/nyatla/TBSKmodemJS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245989173,"owners_count":20705774,"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","javascript","modem","wasm","wireless-communication"],"created_at":"2024-07-31T19:00:52.466Z","updated_at":"2025-03-28T07:31:40.634Z","avatar_url":"https://github.com/nyatla.png","language":"HTML","funding_links":[],"categories":["HTML"],"sub_categories":[],"readme":"# TBSK modem for Javascript\n\n\n\u003cs\u003eEnglish documente 👉[Readme.en.md](Readme.en.md)\u003c/s\u003e\n\n\nJavaScriptから利用できるTBSKmodemです。\n🐓[TBSKmodem](https://github.com/nyatla/TBSKmodem)\n\nTBSK (Trait Block Shift Keying) modemは、FFT/IFTTを使わない、低速、短距離の音響通信の実装です。\nバイト/ビットストリームの振幅信号への変調、振幅信号からバイト/ビットストリームへの復調ができます。\n\n\nメッセージ交換アプリのライブデモは\u003ca href=\"https://nyatla.jp/tbskmodem/\"\u003eこちら\u003c/a\u003eにあります。\n\n## Javascript版の特徴\n\nWebsocketライクなAPIで手軽に音響通信ができます。\n\n例えば、以下のコードはTBSK変調した文字列を音響送信します。\n```\nTBSKmodemJS.load().then((tbsk)=\u003e{\n    console.log(tbsk.version);\n    socket=new tbsk.misc.TbskSocket({carrier:16000,encoding:\"utf8\"});\n    socket.addEventListener(\"open\",(event)=\u003e{\n        console.log(\"Socket open!\");\n        socket.send(\"Hello TBSKmodem\");\n    });\n});\n```\n\n受信は以下のようにすることができます。\n```\nTBSKmodemJS.load().then((tbsk)=\u003e{\n    console.log(tbsk.version);\n    socket=new tbsk.misc.TbskSocket({carrier:16000,encoding:\"utf8\"});\n    socket.addEventListener(\"open\",(event)=\u003e{\n        console.log(\"Socket open!\");\n    });\n    socket.addEventListener(\"detected\",(event)=\u003e{\n        console.log(\"detected\",event.id);\n    });\n    socket.addEventListener(\"message\",(event)=\u003e{\n        console.log(\"message\",event.id,event.data);\n    });\n    socket.addEventListener(\"lost\",(event)=\u003e{\n        console.log(\"lost\",event.id);\n    });\n});\n```\n\nAPIとしてWebsocketライクなopen,close,send関数と、readyStateプロパティを備えます。\n他に、TBSKmodemの拡張APIがいくつかあります。\n\n\n## 対応デバイス\nWebAudio/WebRTC/WASMの各APIが利用可能であれば動作すると思います。\n\n細かく調査していませんが、2022年以降のChrome,Chromium,Safari,FireFoxなら動作すると思います。\niOSの場合、WebRTCの対応状況により、一部制約があります\n\n\n# ライセンス\n\n本ソフトウェアは、MITライセンスで提供します。ホビー・研究用途では、MITライセンスに従って適切に運用してください。\n産業用途では、特許の取り扱いに注意してください。\n\nこのライブラリはMITライセンスのオープンソースソフトウェアですが、特許フリーではありません。\n\n# GetStarted\n\n\n## スタンドアロン版\n\n### ソースコードのセットアップ\nサンプルを含めたソースコードは、githubからcloneします。\n\n```\n\u003egit clone https://github.com/nyatla/TBSKmodemJS.git\n```\n\n### ビルド\ndist配下にスタンドアロン版のtbskmodem.jsを生成します。\n```\n$npm run build\n```\n\n\n### サンプルコード\ngetstarted/*.htmlにスタンドアロン版のサンプルがあります。\nこのサンプルは、ライブラリをscriptタグでリンクします。\n\nWebサーバを起動してサンプルを試すことができます。\nhttp://127.0.0.1:8000\nにアクセスしてください。\n\n```\n$cd TBSKmodemJS\n$python -m http.server 8000\n```\n\n- tbsksocket_recv - TbskSocketの受信機能のサンプルです。\n- tbsksocket_send - TbskSocketの送信機能のサンプルです。\n- tbsksocket_chat - 送受信機能両方を使ったメッセージ交換のアプリです。２つの端末間で通信ができます。\n\n\n\n## nodeJS\n\n### npmからのセットアップ\n\nライブラリはnpmからセットアップできます。\n```\n#npm install tbskmodem-js\n```\n\nSPAのテンプレートはnodeディレクトリにあります。\n\n```\n$npm install\n$npx webpack serve\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnyatla%2FTBSKmodemJS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnyatla%2FTBSKmodemJS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnyatla%2FTBSKmodemJS/lists"}