折りたたみ式のスマートフォンにはヒンジがあり、ヒンジはセンサーです。その値を読むアプリの多くは、ありがちな使い方をします。レイアウトを伸縮させる、リストを二つの画面に分割する、片側のパネルにツールバーを置く、といった具合です。Accorduon は同じ角度を読み取りながら、それを楽器の表現操作に使います。スマートフォンが楽器で、折ることが演奏になります。
コミット一つ分の小さなプロジェクトで、作者は Artem Novichkov です。それでも取り上げる価値があるのは、個別にはどれも厄介な三つの要素が、まとまって読める形で揃っているからです。iOS 27 のヒンジ API、Swift によるリアルタイム音声合成、そして SwiftUI でのマルチタッチ鍵盤処理です。
何ができるのか
iPhone Duo でアプリを開くと、二面構成のアコーディオンが現れます。上のパネルには高音鍵盤があり、片手の指でピアノ配列を弾きます。下のパネルにはベースのコードボタンが並び、アコーディオンの左手側のように使います。F、C、G、Dm、Am、Em です。
ヒンジの角度が蛇腹です。広げれば音が速く、開いた響きになり、縮めれば閉じていきます。ピッチも折り具合で変化し、さらに息のような空気音が重なります。本物のアコーディオンはきれいな正弦波ではなく、リードのノイズがアコーディオンらしさの大きな部分を占めているからです。
曲は五曲が組み込まれています。音声ファイルではなく音符データとして書かれており、歓喜の歌、きらきら星、ジングルベル、ハッピーバースデー、カチューシャが入っています。いずれも小節の並びとして鍵盤で演奏できます。
インストール方法
Accorduon には公開された App Store 版も、ダウンロード可能な GitHub Release 資産もないため、インストールにはソースからのビルドが必要です。Xcode 27.1 以降と iOS 27.1 SDK が必要で、アプリが依存するヒンジ API はそれ以前のバージョンには存在しません。音声コードの並行処理モデルのため Swift 6 も必要です。
リポジトリをクローンしてスキームをビルドします。シミュレータの宛先は 折りたたみ iPhone Duo です。
git clone https://github.com/artemnovichkov/Accorduon.git
cd Accorduon
xcodebuild -project Accorduon.xcodeproj -scheme Accorduon \
-destination 'platform=iOS Simulator,name=iPhone Duo' buildシミュレータではデバイス操作からヒンジを動かせるので、実機がなくても折る動作を試せます。実機では実際にスマートフォンを折って演奏します。
使い方
高音鍵盤は普通に弾きます。マルチタッチに対応しているので和音も鳴り、タップ可能なビューの格子ではなく SpatialEventGesture で作られています。これは重要な点で、ボタンを並べた鍵盤では複数の鍵の上を指で滑らせることができません。楽器を弾くという行為は、まさにそれです。
もう一方の手でベースボタンを押し、コードの伴奏を加えます。そしてヒンジを動かします。折り角度は継続的にシンセへ渡され、アプリはポーリングではなくヒンジのコールバックで変化を捉えます。
.onHingeChange { _, newContext in
guard let degrees = newContext.hinge?.angle.degrees else { return }
let speed = abs(degrees - last.degrees) / seconds
audio.synth.pump(speed / 120)
}よく読むと設計が見えてきます。このハンドラは角度がどれだけ速く変化しているかを計算し、基準となる速度で正規化してシンセへ送り込んでいます。つまり音を形作るのは角度そのものではなく、折る速さです。蛇腹が動きで駆動されるという、実際のアコーディオンの挙動そのものです。
デモ
上のスクリーンショットが二面構成を示しています。静止画では伝えられないのは、この結合です。鍵盤、ベースボタン、ヒンジが一つのオーディオグラフに流れ込み、楽器はその三つに同時に反応します。ビルドする前に音を聴きたい場合は、リポジトリにはスクリーンショットしか含まれていないため、README で録音が追加されていないか確認してください。
この楽器はシミュレータよりも実機で動かす価値があります。ヒンジの操作こそがアプリの本質であり、折る動作を代行するシミュレータの操作は、実際に折ることに比べれば物足りません。
音声処理の仕組み
コード目的で読むなら、ここが最も面白い部分です。プロジェクトにはサンプルファイルがありません。リードの音は一から生成されており、その手法は、リード楽器らしく響くための意図的な選択の積み重ねです。
一音につき三枚のリードを 12 セントずらして重ねます。一枚は低め、一枚は正しい音程、一枚は高めです。アコーディオンやハーモニカの揺らぎを与えるこのデチューン技法が、合成したリード音を単純な音色から最も大きく引き離す要素です。
さらに一オクターブ下のリードを足して厚みを出し、低域が薄くならないようにしています。
発振器には PolyBLEP パルスを使います。素朴な矩形波やパルス波は高域でエイリアシングがひどく出ますが、PolyBLEP は不連続点を安価に滑らかにするため、モバイルアプリのソフトシンセとして実用的になります。
フィルタ経路に二つのレゾナンスを置き、楽器の筐体の響きを代用しています。
ピッチベンドと空気音の層。この二つによって、蛇腹が動いている間も音が止まったままにならず、折りに反応します。
出力は AVAudioSourceNode を通ります。サンプルを直接書き込むコールバック方式のノードで、つまり音声スレッドはリアルタイムであり、触れる状態は安全でなければなりません。そのため共有状態は Mutex の後ろに置かれています。音を出すものを自作するなら、ここが読むべき箇所です。
ライセンス:何ができるか
Accorduon は MIT ライセンスで、© 2026 Artem Novichkov です。この種のプロジェクトでは、実務上の解釈はシンプルで寛容です。
商用利用できます。シンセを組み込んだ有料アプリを作っても、ヒンジ処理を販売する製品に含めてもかまいません。MIT はあなたのアプリがクローズドソースであることを問題にしません。
改変と再配布も自由です。別のライセンスのより大きな作品の一部として含めることもできます。
コピーした実質的な部分には、著作権表示とライセンス文を残す必要があります。義務はこれだけです。コピーレフトではなく、変更の公開も求められず、成果物の使い方に制限もありません。
保証はありません。他の MIT プロジェクトと同様、動作に問題があっても作者に責任は及びません。
実際には、帰属表示をすれば自由に使えます。もし何か作るなら、最も再利用しやすいのは PolyBLEP のリードシンセと onHingeChange の処理です。どちらも 白紙から書くと思ったより面倒な類のコードです。
ビルドすべきか
折りたたみ iPhone を持っていて何かしら演奏するなら、yes です。ビルドは小さく、楽器として本当に弾けます。iOS 開発者なら、価値は別のところにあり、おそらくより大きいでしょう。iOS 27 の折りたたみ API を、レイアウト以外の目的に使った数少ないオープンソース例であり、音声アーキテクチャはリアルタイムに音を出すアプリのきれいな出発点になります。どちらにせよ、クローンしてビルドするのに数分しかかかりません。
プロジェクト情報
- ライセンス
- MIT
- 対応環境
- iOS 27.1+ / Xcode 27.1+
- 実装言語
- Swift 6, SwiftUI
- 確認したバージョン
- main @ 2026-09-20
インストール
git clone https://github.com/artemnovichkov/Accorduon.git
cd Accorduon
xcodebuild -project Accorduon.xcodeproj -scheme Accorduon \
-destination 'platform=iOS Simulator,name=iPhone Duo' buildデモ

ライセンスの概要
MIT は寛容なライセンスです。著作権表示とライセンス文を、コピーした実質的な部分に添える限り、商用アプリやクローズドソースのアプリでの利用、改変、再配布がすべて認められます。保証はありません。実質的な義務は帰属表示だけです。



