Slide 1

Slide 1 text

カツオ、ご期待ください リアルタイムピッチシフト saku / 2026-09

Slide 2

Slide 2 text

名前の由来 なぜ「カツオ」? 今回作りたいもの = ピッチシフト = 音の高さをずらすアプリ ↓ 光を曲げるプリズムを思い出す ↓ 耳につけるので「イヤリング」もアリかな? 画像:ウィキペディア 2

Slide 3

Slide 3 text

名前の由来 「プリズムとイヤリングを組み合わせた ロゴを作ってください」 2

Slide 4

Slide 4 text

このミームを思い出した Pin k Floyd 『T he D ark S ide of the M oo n 』(日本盤『狂気』) ジャケット D esig n: H ip g no sis / Georg e H ard ie, 1973 /出典: S o ny M usic Jap an (SIC P - 5409) (※注)発表時に使用したミーム画像の代わりに、ミーム画像の元ネタであるピンク・フロイド 「狂気」のアルバムジャケットを載せます。ネットには、「狂気」のプリズムをサザエさんのカ ツオに差し替えたミーム画像が出回っており、それを思い出したのです。 3

Slide 5

Slide 5 text

魚のカツオを使うことにした Prism Earring は開発コードネームにしよう アプリ名は「カツオ」にしとこう インパクトあるし 4

Slide 6

Slide 6 text

作った背景 20代のどこかで 音が半音高く聴こえるようになった 5

Slide 7

Slide 7 text

ピアノを弾いていて気づいた 記憶にある音と鳴っている音が一致しない、別の曲に聴こえる 楽器の調律は正しかった どうやら自分の耳のほうがずれている 私は、みんなと同じ音楽を聴けていないのではないか? 6

Slide 8

Slide 8 text

測ってみた 音には周波数がある。例えば 440 Hz はピアノの「ラ」とされている ピアノで 440 Hz に当たる高さのラを鳴らすと、ラ♯(半音高い)に聞こえる 周波数に応じた音を鳴らせるウェブツールで調べると、418 Hz に下げてラに聞こえた 音同士のずれには「セント」という単位があり、半音は 100 セント ウェブツールで調べたら自分の耳は 89セント 高く聴こえていることがわかった 7

Slide 9

Slide 9 text

世の中にはピッチシフトというものがある ピッチ = 音の高さ Chrome の拡張機能「Transpose」 Chrome タブ音声を加工できる プログラムでピッチシフトが作れることは 分かった(高速フーリエ解析を使う) これを補聴器のように使えないだろうか? 9

Slide 10

Slide 10 text

なぜ今なら作れると思ったか 仕事はデジタル音声処理を扱っている C++ でオーディオエフェクトを書いてスマホアプリ等から使える製品を作っている 最近は、生成 AI で C++ のコードを設計・実装まで扱うことも簡単になった ピッチシフトをネイティブで書いて、スマホの画面から使えるようにする。 Fable みたいな上級モデルも出てきたし、Claude Code でいけるんじゃね? 10

Slide 11

Slide 11 text

作り方 とりあえず動く物ができさえすればいいので、バイブコーディングすることにした 動く物がまず無いと要件・制約をつめられないので、要件定義や設計のレビューは省略 完成したらコード読んで勉強したい 大まかな指示を出して、できたものを実機で使って、レビューを返すの繰り返し 11

Slide 12

Slide 12 text

最初に書いた条件 • 処理の遅延は 10 ms 以下。リアルタイムに使うものなので • 半音 = 100 セントと決め打ちしない。私は 89 セントなので 遅延を守ってもノイズが出ては困る。 なので今は、速度優先と品質優先の 2 方式を用途ごとに切り替えられる。 マイクの音は速度優先、他アプリの音楽は品質優先、という使い分け。 12

Slide 13

Slide 13 text

アプリの構成 マイク ピッチシフタ本体 イヤホン Android の低遅延音声 API で 純 C++、依存ゼロ。速度優 有線 / Bluetooth 拾う 先と品質優先の 2 方式 速度優先は読み出し位置を 0.95 倍 速で走らせ、2 本のヘッドをクロ スフェード。遅延 5 ms 画面は Kotlin。シフト量などはロックなしで音声スレッドに渡すだけ。 真ん中の C++ はブラウザ版でも Android でも同じもので、検証はコンパイラ 1 つで 78 項目回る 。 13

Slide 14

Slide 14 text

デモ したかったけど、 難しいのでモックアップ見せます! 4

Slide 15

Slide 15 text

3 週間でここまで来た 8/27 着手。ピッチシフタ本体とオフライン検証 8 月末 ブラウザ版。まず自分の耳で確かめる 9 月頭 Android 版 v0.1。Pixel 9a で動く。名前が「カツオ」になる 9/4 他アプリの再生音も下げられるように 9/17 音楽用に第 2 の方式を追加。マイク用はディレイラインのまま 9/18 Bluetooth まわりの調整。いま v0.6.1 16

Slide 16

Slide 16 text

わかったこと コードを読まなくても意外となんとかなってしまった 趣味だから許される 色々伝えたいことがあるけどスライド作成が間に合いませんでした! 17

Slide 17

Slide 17 text

世界に一人しか困っていない問題でも、 自分で直せる時代になった コード: github.com/suneo3476/prism-earring ブラウザ版: suneo3476.github.io/prism-earring (古い初期バージョンです) 18