https://github.com/nyatla/TBSKmodemJS
TBSKmodem javascript implementation.
https://github.com/nyatla/TBSKmodemJS
audio javascript modem wasm wireless-communication
Last synced: over 1 year ago
JSON representation
TBSKmodem javascript implementation.
- Host: GitHub
- URL: https://github.com/nyatla/TBSKmodemJS
- Owner: nyatla
- License: other
- Created: 2022-12-27T11:11:40.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-04-28T11:35:18.000Z (about 3 years ago)
- Last Synced: 2025-03-09T08:17:40.503Z (over 1 year ago)
- Topics: audio, javascript, modem, wasm, wireless-communication
- Language: HTML
- Homepage:
- Size: 1.72 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TBSK modem for Javascript
English documente 👉[Readme.en.md](Readme.en.md)
JavaScriptから利用できるTBSKmodemです。
🐓[TBSKmodem](https://github.com/nyatla/TBSKmodem)
TBSK (Trait Block Shift Keying) modemは、FFT/IFTTを使わない、低速、短距離の音響通信の実装です。
バイト/ビットストリームの振幅信号への変調、振幅信号からバイト/ビットストリームへの復調ができます。
メッセージ交換アプリのライブデモはこちらにあります。
## Javascript版の特徴
WebsocketライクなAPIで手軽に音響通信ができます。
例えば、以下のコードはTBSK変調した文字列を音響送信します。
```
TBSKmodemJS.load().then((tbsk)=>{
console.log(tbsk.version);
socket=new tbsk.misc.TbskSocket({carrier:16000,encoding:"utf8"});
socket.addEventListener("open",(event)=>{
console.log("Socket open!");
socket.send("Hello TBSKmodem");
});
});
```
受信は以下のようにすることができます。
```
TBSKmodemJS.load().then((tbsk)=>{
console.log(tbsk.version);
socket=new tbsk.misc.TbskSocket({carrier:16000,encoding:"utf8"});
socket.addEventListener("open",(event)=>{
console.log("Socket open!");
});
socket.addEventListener("detected",(event)=>{
console.log("detected",event.id);
});
socket.addEventListener("message",(event)=>{
console.log("message",event.id,event.data);
});
socket.addEventListener("lost",(event)=>{
console.log("lost",event.id);
});
});
```
APIとしてWebsocketライクなopen,close,send関数と、readyStateプロパティを備えます。
他に、TBSKmodemの拡張APIがいくつかあります。
## 対応デバイス
WebAudio/WebRTC/WASMの各APIが利用可能であれば動作すると思います。
細かく調査していませんが、2022年以降のChrome,Chromium,Safari,FireFoxなら動作すると思います。
iOSの場合、WebRTCの対応状況により、一部制約があります
# ライセンス
本ソフトウェアは、MITライセンスで提供します。ホビー・研究用途では、MITライセンスに従って適切に運用してください。
産業用途では、特許の取り扱いに注意してください。
このライブラリはMITライセンスのオープンソースソフトウェアですが、特許フリーではありません。
# GetStarted
## スタンドアロン版
### ソースコードのセットアップ
サンプルを含めたソースコードは、githubからcloneします。
```
>git clone https://github.com/nyatla/TBSKmodemJS.git
```
### ビルド
dist配下にスタンドアロン版のtbskmodem.jsを生成します。
```
$npm run build
```
### サンプルコード
getstarted/*.htmlにスタンドアロン版のサンプルがあります。
このサンプルは、ライブラリをscriptタグでリンクします。
Webサーバを起動してサンプルを試すことができます。
http://127.0.0.1:8000
にアクセスしてください。
```
$cd TBSKmodemJS
$python -m http.server 8000
```
- tbsksocket_recv - TbskSocketの受信機能のサンプルです。
- tbsksocket_send - TbskSocketの送信機能のサンプルです。
- tbsksocket_chat - 送受信機能両方を使ったメッセージ交換のアプリです。2つの端末間で通信ができます。
## nodeJS
### npmからのセットアップ
ライブラリはnpmからセットアップできます。
```
#npm install tbskmodem-js
```
SPAのテンプレートはnodeディレクトリにあります。
```
$npm install
$npx webpack serve
```