An open API service indexing awesome lists of open source software.

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.

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
```