/TBSKmodemJS

TBSKmodem javascript implementation.

Primary LanguageHTMLOtherNOASSERTION

TBSK modem for Javascript

English documente 👉Readme.en.md

JavaScriptから利用できるTBSKmodemです。 🐓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