English documente 👉Readme.en.md
JavaScriptから利用できるTBSKmodemです。 🐓TBSKmodem
TBSK (Trait Block Shift Keying) modemは、FFT/IFTTを使わない、低速、短距離の音響通信の実装です。 バイト/ビットストリームの振幅信号への変調、振幅信号からバイト/ビットストリームへの復調ができます。
メッセージ交換アプリのライブデモはこちらにあります。
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ライセンスのオープンソースソフトウェアですが、特許フリーではありません。
サンプルを含めたソースコードは、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つの端末間で通信ができます。
ライブラリはnpmからセットアップできます。
#npm install tbskmodem-js
SPAのテンプレートはnodeディレクトリにあります。
$npm install
$npx webpack serve