今回も疲れました![]()
サウンドポートを直接叩く方法がわからないので、
(というか、おそらく許可されていないと思うので)
任意の周波数でAIFFファイルを生成する関数を作り、
システムサウンドに登録して再生させるようにしました。
懐かしいPSGのビープ音![]()
ビットレートはとりあえずモノラル/8bit/48kHzに固定しています。
サンプリング周波数をケチるとデューティ比が一定しないので、
矩形波でも音が濁るんです。
苦労したのは、やはりSwiftのポインタ型の理解で、
C言語ライクにメモリを操作できるようになるまでがなかなか大変でした。
それからAIFFの規格には、サンプリングレートの指定に
「拡張倍精度浮動小数点」という80ビットのデータ型が出てくるのですが、
そのFloat80型がSimulatorでは動いたのに、実機ではエラーになるんです![]()
どうやらiOSではサポートされていないらしく、
その部分の10バイトは決め打ちとなりました。
Swiftの仕様にも今回は特にストレスを感じました![]()
・ベキ乗の書き方(x^8とか、x**8などと書けない)
・for文の逆回しの書き方(レンジを7...0などと書けない)
・文字の抜き出し方(抜き出すのが2文字以上になると途端にコードが増える)
伝統的な構文をたくさん変革したくせに、そのわりには気が利かないというか…。