投稿日

SIMの音を聞いてみよう!?M5Stackで始める電波測定&SIMカード対応モジュラーシンセ【SORACOM Discovery 2026 ― IoT プロトタイピングコーナー】

こんにちは、ソラコムの柴田(shibaken)です。普段はソリューションアーキテクトとしてSORACOMをお使いいただくお客様への技術的な支援を行い、休日はギターやシンセを演奏したり、キャンプをしたりしております。

さて、先月7/7にはソラコムの年次イベント、SORACOM Discovery 2026が開催されました。皆様お越しいただけましたでしょうか?

毎年恒例のIoTプロトタイピングコーナーに私も参加いたしまして、「SIMカードが挿せるモジュラーシンセ」を展示しました。SORACOM Air の SIM を挿した M5Stack がその場の電波強度をアナログ電圧(CV)に変換してシンセサイザーをコントロール、さらに来場者が iPad からセルラー通信経由でシンセを鳴らすことができる、というセルラー通信の電波強度調査とリモート操作を音楽で体験できる前衛的なプロトタイプ作品です。

この記事では、その仕組みと作ってみてわかったことを紹介します。

作成したプロトタイプの紹介と見どころ

見どころ①: その場の電波強度を反映した、Generative な音楽演奏

デバイス(M5Stack CoreS3)は LTE-M モデムから電波強度(RSRP)を 200ms 周期で取得し、サンプル&ホールドした値を 0〜10V の CV として出力します(実装では RSRP -125〜-65dBm を 0〜10V にマッピング)。この CV をシンセのオシレーターやフィルターに入れると、会場の電波状況、例えば基地局との距離、周囲の人の密度、アンテナを手で覆ったかどうか、などがそのまま音の変化になります。

つまり「その場・その瞬間の電波」がシンセサイザーのパラメータに干渉し、動的に、かつGenerative に演奏が推移していきます。同じ音は二度と鳴りません。M5Stack の画面には CV 波形をオシロスコープ風に表示し、「電波が音になっている」ことが目で見てわかるようにしました。

見どころ②: Remote Command API を使った、セルラー通信経由のリモート操作

もうひとつの見どころが、来場者参加型のリモートトリガーです。iPad に表示した Web アプリのボタンを押すと、SORACOM の Remote Command の API(Sim:sendDownlinkUdp) 経由でデバイスに UDP パケットが届き、デバイスが 10ms の 0V→10V トリガーパルスを出力してシンセが発音します。

(展示会場で写真を撮り忘れました。。。)

「インターネット → SORACOM プラットフォーム → セルラー網 → SIM → CV → 音」という経路を、ボタンひとつで体感できます。iPadのボタンを押してからセルラー通信を介してシンセが鳴るまでのレイテンシやその揺らぎ(Jitter)も含めて、普段意識しないセルラー通信の特性を耳で感じられるようになっています。

補足: SORACOMのSIM通信を利用したリモート接続構成

SORACOMはSIMカードを挿したデバイスに対してさまざまなリモート接続手段を有しています。今回のRemote Command APIを用いたダウンリンク通信はそのうちの一つで、それ以外のリモート接続構成についてはソラコムのアーキテクチャーセンターにまとまった記事がいくつかあるので、ぜひご参考にしていただければ幸いです。

遠隔操作とリモートアクセス | アーキテクチャーセンター | ソラコムユーザーサイト – SORACOM Users

全体構成図

[来場者] ─ iPad (Web アプリ / QR コード)
              │ HTTPS
              ▼
        AWS Lambda (Function URL)
              │ Remote Command API (Sim:sendDownlinkUdp)
              ▼
        SORACOM プラットフォーム
              │ LTE-M ダウンリンク (UDP)
              ▼
   M5Stack CoreS3 + SIM7080G CAT-M Unit (SORACOM Air SIM)
              │ I2C
              ▼
        DAC 2 Unit (GP8413)
        ├─ CH0: 電波強度 S&H CV (0-10V)
        └─ CH1: トリガー CV (0V↔10V)
              │ 3.5mm パッチケーブル
              ▼
        モジュラーシンセ ─ ヘッドホン/スピーカー

構成要素は次の 4 つです。

  • モジュラーシンセ(とヘッドホン): CV を受けて実際に音を出す本体
  • M5Stack とオプション機材: SIM を挿し、電波と UDP を CV に変換する自作モジュール
  • Web アプリ: 来場者がトリガーを送るためのボタン UI
  • iPad: Web アプリへのアクセス用端末(QR コードでスマホからもアクセス可能)

利用したハードウェア

  • M5Stack CoreS3 — ベースユニット。ESP32-S3 搭載で、タッチディスプレイに接続状態や CV 波形を表示できます。
  • M5Stack用2チャンネルDACユニット(GP8413) — スイッチサイエンス — Grove(I2C)接続で 5V 給電から 15bit 精度の 0〜10V を 2ch 出力できる優れもの。ESP32-S3 は DAC 非搭載なので外部 DAC が必須ですが、これ 1 個で片方をトリガー CV、もう片方をピッチや電波強度の CV に使えます。1V/oct のピッチ CV に必要な精度(1 セント ≒ 0.83mV)も十分満たします。
  • M5Stack用CAT-Mユニット(SIM7080G) — スイッチサイエンス — LTE-M モデム + SIM スロット。SORACOM Air(plan-D)を挿して利用しました。Grove(UART)接続です。
  • あとはユニバーサル基板、3.5mm ジャック、出力保護用の直列抵抗(1kΩ)などでモジュラーシンセと接続する為のケーブルジャック基板を作成しました。

モジュラーシンセとはなにか

簡単な歴史

モジュラーシンセは、オシレーター(発振器)、フィルター、エンベロープといった機能単位の「モジュール」をパッチケーブルで自由に接続して音を作るシンセサイザーです。1960 年代に Moog や Buchla が生み出し、1990 年代半ばにドイツの Doepfer が策定した「Eurorack」規格によって小型・安価なモジュールが爆発的に増え、現在は世界中のメーカーと個人ビルダーがモジュールを作る一大エコシステムになっています。
(私個人はMakeNoise製品を愛用しています!)

CV(Control Voltage)という共通言語

モジュール間のやりとりはすべてアナログ電圧= CV で行われます。-10Vから+10Vの範囲でモジュールによって様々な使われ方がありますが、例えば以下のような使われ方があります。

  • ピッチ CV(1V/oct): 電圧が 1V 上がると音程が 1 オクターブ上がる規格。たとえばnoteValue / 12.0V をオシレーターの入力に送れば、半音単位で音程を制御できます。もちろん、微分音も含めた経過音、平均律ではない純正律ベースの音程など、中途半端な音程も鳴らせます。
  • トリガー/ゲート CV: 0V→高電圧のパルスで”今鳴らせ”を伝える信号。エフェクトのオン・オフ、とかにも使えます。
  • LFO(Low Frequency Oscillator): シンセのパラメーターをゆるやかに”揺らす”ための信号。音程・音量を揺らしたり、残響音のインターバルを揺らしたり、フィルターの開閉を揺らしたり、いろんな使い方があります。
  • S\&H(Sample & Hold)特定のタイミングで電圧を切り出し、そのあと一定時間保持する仕組みです。ランダムな電圧ソースからS\&HでCVを取り出し、ランダムなCVを出力するのが良くある使い方です。

今回のプロトタイプは、セルラー通信をこの共通言語=CVに翻訳するモジュールと言えます。電波強度(RSRP)を 0〜10V にマッピング(≒S\&H)して CV として出し、Remote Command API 経由の UDP パケットを受けたら 10V のトリガーCVを出す。シンセ側から見れば普通の CV ソースなので、市販のどのモジュールとも組み合わせられます

ちなみにモジュラーシンセは、それ単体では音が出ないモジュールが当たり前のようにたくさんあります。今回のような”SIMカードを挿してCVを出す”ようなモジュールはさすがに見たことありませんが、 植物や他の生物からの電気的な動きを元にCVを出す、などの変態モジュールも多種多様に存在します。

やってみてわかったこと

プロトタイピングコーナー会場(東京ミッドタウン)の電波は強い

展示会場のミッドタウンは電波強度が強く、RSRP は通常時で -70dBm 前後。自宅で測ると -100dBm 前後だったので、30dB ほども良好でした。 電波強度を音にマッピングする展示としては「会場に持って行ったら音域が変わる」ことになるため、マッピングレンジの調整パラメータを持たせておいたのが役立ちました。逆に言えば、電波状況の場所差がそのまま聴こえるのは、この楽器の面白さでもあります。

補足: LTE の電波強度と、その測り方

LTE における「電波強度」の代表的な指標が RSRP(Reference Signal Received Power) です。基地局が送る基準信号の受信電力を dBm で表した負の値で、0 に近いほど強く、目安として -80dBm 前後なら良好、-120dBm を下回ると厳しい、といった読み方をします。似た指標に、受信品質を表す RSRQ もあります(今回のプロトタイプでは RSRP を CV に使用)。

これらの値はセルラーモデムが常時測定しており、AT コマンドなどのインターフェースで外部から取得できます。SIM7080G なら AT+CPSI? の応答に RSRP/RSRQ が含まれるため、今回のように M5Stack + 通信モジュールという構成のデバイスで簡単に読み出せます。Android でも OS の API 経由でモデムの測定値を取得でき、電波計測アプリが多数あります。
(iPhone でも取得自体は可能ですが、サードパーティアプリへの API 制限が Android より強く、この用途には使いづらいのが実情です。)

Android の計測アプリは既存のものもいくつかありますが、私が最近 AI と作ったアプリは計測に加えて記録データの CSV 出力ができるため、「測定結果をそのまま AI に投げてレポート化する」といった使い方ができます。Androidスマホをお持ちで、電波強度測定にご興味がある方は、ぜひ使ってみてください!

コードを一切書かずに、デバイスからクラウドまで作れた

今回、デバイスの選定・M5Stack のファームウェア実装・Remote Command API を叩く Web アプリの実装とデプロイまで、自分では一切コードを書かず、すべて Claude(Claude Code)で実装しました。使ったツールは次の 4 つです。

  • Claude Code
  • VSCode
  • PlatformIO(Arduinoベースの開発)
  • AWS CLI(+ AWS SAM)

ファームウェアのような組み込み領域は AI 支援が効きにくいと思われがちですが、M5Stack/Arduino のようにドキュメント・ライブラリ・作例が豊富な「エコシステムが強いデバイス」であれば、かなりの部分まで AI に任せられる時代になってきました。実際には SIM7080G の AT コマンド周りや PPP 化などハマりどころもありましたが、シリアルログを貼って相談しながら進めることで、実機での試行錯誤を含めて完走できています。IoT 開発の PoC において、ラストワンマイル(デバイス上のアプリ実装)を AI で埋められるのは大きな変化だと感じます。

参考までに、最近同じスタイル(いわゆるバイブコーディング)で作ったものをいくつか挙げると:

  • 電波強度を測定して CSV 出力できる Android アプリ(前述)
  • 相対音感を鍛える自分専用の iOS アプリ
  • gRPC で低遅延にデータを送受信する M5Stack ファームウェア(esp-idfベース)

今後の改善や挑戦

マルチキャリア対応 SIM で「キャリアによる音の違い」を聴く — 接続するキャリアごとに電波強度や特性が変わるので、キャリアの切り替えがそのまま音色の変化として聴こえるはず・・・?

SORACOM Gate で 2 台のモジュラーシンセをセルラー経由で接続 — デバイス間通信で、離れた場所にある 2 台のシンセが互いにトリガーを送り合うセッションをやってみたい。

SORACOM Air RTC Gatewayを使って、離れた場所からボコーダー演奏 — 新しく発表したRTC Gatewayと統合し、セルラー通信で直接音声入力可能な仕組みに拡張したい。

FPGA・DSP 搭載ボードで空間系エフェクトまで自作 — リバーブやディレイといったエフェクトモジュールも自作して、信号経路をまるごと手作りにしたい。HDL/HLSもAIがやってくれたりするんでしょうか・・・。

いかがでしたでしょうか。来年もセルラー通信とモジュラーシンセを組み合わせた前衛的な作品を発表できたらいいなと思っております。電波調査の実施方法や結果確認、IoTデバイスへの最適なリモート通信構成含め、IoTに関するお悩みがありましたら、ぜひContact usからお問い合わせください!

― ソラコム柴田 (shibaken)