AAudioの実力を測る♬

 Googleが開示しているAndroid開発ガイドによれば、AAudioの章で、「GitHubで入手可能なオープンソースoboeライブラリの使用」を推奨?していたので、oboeを下敷きにして音声アプリを作った。その結果、以前に使用したことのある「AudioRecord/AudioTrack」というAPIと比較して格段にレイテンシが改善されていることを確認した。下図に示す通り、マイク入力→イヤホン出力までの時間を計測すると、一桁改善していることがわかる。

 当方のアプリは、音声をトランペットの音に変換するものであり、演奏時の応答性の観点では、「まあメロディー系なら及第点はあげられるかな」という感触を持った。ドラムやピアノなどのリズムセクション系だと、数msecオーダーに改善する必要があるだろう。今後の進化に期待する。

AAudioのレイテンシを実測

幸せになってほしい猫

 デブは年齢不詳の雌猫である。近くの駐車場に放置された車の下が、7年前までのデブの住処だった。噂では、2匹の子猫を連れていたそうだが、いつの間にか一人ぼっちに。

 息子が気にかけて、時々餌をやりに行ってたが、餌付けに対して苦情がでたので、(トムとジェリー方式で)餌で我が家まで誘導し保護(拉致?)したそうだ。首輪もしてないし外に出たがろうとしないので家族に迎えた。

 未だに警戒心が強いが、今春から、毎日一緒に昼寝するようになり、一気に距離が縮まった。秋ごろからは、夕飯後、当方が座椅子に寝そべっていると、私の腹によじ登り、べったり甘えるようになった。スキンシップしながら「辛かった記憶は消えないんだろうな」と思うと、不憫でたまらなくなる。その時はこう話しかけている。「デブちゃんは、よー頑張った。偉い偉い。金メダルあげるけね。お父ちゃんも見習わんとあかんな」と。

ゴロゴロ

AAudioを簡単に使う方法♬

 今年の4月~、Androidスマホアプリのプログラミングに着手し、年明けにGooglePlayにリリースできるところまで漕ぎつけた、この開発を通じて、サウンド系やシューティングゲーム系アプリを、Android系のスマホGooglePixelなど)で作る場合、AAudioというAPIが必須となることがわかった。いわずもがな、iOS系のスマホiPhoneでは不要だ。

 さて、AAudioとは、音の発音遅延を数十m秒レベルに短縮(低レイテンシ化ともいう)するものであり、(遅きに失した感はあるが)Androidバージョン8から導入された。これを使うにあたり、AAudioのテンプレートとでもいうサンプル(oboe)が公開され、これを下敷すれば、当方のようにアプリ系プログラム初挑戦者でも、低レイテンシのアプリが楽に作れてしまう。

 このコラムでは、これからAndroidに挑戦される方に向けて、AAudioの簡単な使い方をまとめた。基本マニュアルは、やはりGoogle純正のサイトを教科書にした方がよい。ここには、アプリ開発ツールであるAndroidStudioのダウンロードの仕方から始まり、GooglePlayにアプリをアップするまでの、一連の開発プロセスについて説明されている。もちろんAAudioの解説もある。

 それでは、以下に手順をまとめる。

AndroidStudioをダウンロードPC上にprojectフォルダを作成。【要注意】Cドライブ(システム領域)に作ってはダメだ。Dなど空領域の大きいドライブに作るべし!

gitHubからoboeを取得し、projectフォルダに置く。

oboe内のLiveEffectサンプルを利用。LiveEffectは、マイク入力→スピーカ出力を行うテンプレートなので、音声系の楽器アプリや、ボイスチェンジャーを開発するために格好のサンプルである。

AndroidStudioにおいて、ファイル→新規→インポート→oboeのファイル直下のsamples(ドロイドアイコン)を選択すると、自動でLiveEffectが展開される。

LiveEffect内のcppフォルダ内にある、「FullDuplexPass.h」というクラスファイルの46行目に、//do some arbitrary processingというコメントが記載された行があるが、これが「マイク入力ストリームを音量ダウンし、スピーカ出力ストリームに渡している部分」である。この「音量ダウン」の処理を、「あなたがやりたい変換処理C言語で記述)」に変更してやればよい。因みに、メイン処理(JAVAで記述)とのやり取りは、jni_bridge.cppjniという仕組み)で行う。・・・続く・・・

 

下記サイトにて、複雑系サウンド(チェロ/トランペット)をご試聴いただけます。 https://voibow.wixsite.com/voibow

ハミングが高らかなトランペット音に!
年明け~スマホアプリを格安販売します。
(AAudio対応なので応答性良好)



 

バイオリン上達理論♬

 バイオリンの稽古は、まず正しい弾き方を先生に教わることから始まる。そして、教わった通りに弾いてみて奇麗な音が鳴ったときは体に覚えこませ、汚い音ならば修正するといったことを何度も繰り返す。まさに機械学習バックプロパゲーションである。正しい弾き方(教師データ)に基づいてやった方が、試行錯誤でやるよりも早く上達することは明らかである。 

 はなはだ手前みそではあるが、「バイオリンの数学」で紹介した「擦弦相対性理論(式1)」を、教師データの末席に加えてみてはどうかという提案を行う。なお効果については、評価を行っていないので、あくまでご参考まで。

 改めて、式1は、常に奇麗な音を出すための数式であり、バイオリンの発音メカニズム、すなわち、『持ち手と弓の干渉、弓と弦との干渉および摩擦(含む松脂の影響)、弦振動、駒の固有振動、駒を介した胴の共鳴と弦振動の干渉、胴の表裏板の面振動、および胴の空洞の共鳴』に至る各部の振る舞いを、数理モデル微分方程式)やデジタルフィルタ等でモデル化したプログラムに基づいてシミュレーションした結果から導き出した式である。

  v=(Q/p)×h  ・・・式1

  但し、v:弓圧、h:弓速、p:ピッチ、Q:定数

 それでは、下記①~③に正しい弾き方の事例を挙げる。それぞれにおいて、式1が示唆する「教師データのポイント」を太字で示す。なお変化前の状態は、奇麗な音が出ている状態であるとする。

【ケース①】ピッチが一定で、弓圧を変化させる場合

 式1によれば、pが一定なので、vとhは比例関係となる。したがって、例えばvを2倍にするなら、hも2倍にすれば、奇麗な音が維持できる。

【ケース②】弓圧が一定で、ピッチを変える場合

 式1によれば、vが一定なので、phは比例関係となる。したがって、例えばpを2倍(1オクターブアップ)にするなら、hも2倍にすれば、奇麗な音が維持できる。

【ケース③】弓速が一定で、ピッチを変える場合

 式1によれば、hが一定なので、pvは反比例関係となる。したがって、例えばpを2倍(1オクターブアップ)にするなら、v0.5にすれば、奇麗な音が維持できる。

 組み合わせ的にはあと3通りあるが、実際の演奏では2倍に限定されるものではないので無限通りの状態がありえる。しかし式1を頭にいれておけば、無限通りだろうが対応できる。なお、1は、比例/反比例の概念が出てくるので小学生以下には難しい。その場合は鋸歯状のグラフ(図1)をイメージする方がやりやすかろう。因みに当方はグラグ派だ(笑)。まあ、この理論を使わなくても、小さなバイオリニストが数学にも興味を持つきっかけになるかもしれないので、いろんな面で効果があると信じている。ともあれ、日本から一流の音楽家が数多く輩出され、音楽分野も世界から一目置かれる地位を獲得すること期待している( `ー´)ノ

 

下記サイトにて、複雑系サウンド(チェロ/トランペット)をご試聴いただけます。  https://voibow.wixsite.com/voibow

幼少期に使ったバイオリン

 

畑づくり(粘土との格闘)

 昨今の食料品の値上がりを鑑み、健康維持も兼ねて家庭菜園をすることにした。まずは庭の池を空にし電動ハンマーで池を粉砕。その後は土を掘ること3ケ月。粘土質から出てきたセミの幼虫を安全な場所に移し、植木類には「御免なさい」を唱えながら掘り起こして堆肥の材料に。毎夕2時間やって、深さ1m強を土嚢に移し替え終わり秋を迎えた。

 ここから折り返しだが、0円食堂ならぬ0円DIYを目指し、粘土質以外を選別しながら、山間部に住んでいる息子宅からもらってきた落ち葉や堆肥を混ぜつつ土の埋め戻しを行った。冬も間近、近所の公園の落ち葉も大いに役立ち、来春からの野菜作りの目途が立ってきた。・・・続く・・・(ガソリン代かかってるから既にOUT!)

-----------------------------------------------

 以下、一連の土木作業を通じて工夫した点を、備忘録として残しておく。

工夫1:大量の土砂は土嚢に入れ積み上げることで場所を取らないですむ。ある程度乾いていた方が埋め戻しやすいのでビニールシートで雨除けしておく。

■工夫2:底面は排水口が施工不可能だったので、「池の粉砕で出たコンクリート等」を土嚢袋に入れて底面に敷き詰めた。いわゆる吸水パッド(参考サイト)。

■工夫3:土壌改良のため、庭木の葉や枝も土に混ぜた。腐葉土に向かない杉の葉はトリマー等で細かくしてから埋めた(参考サイト)。

土の埋め戻し(約70%終了)

バイオリンの数学♬

 幼少期、音楽好きの亡父からバイオリンを買い与えられたが、まともに音が出せず速攻で投げ出した。奇麗な音が出せるようになるまでには、相当量の稽古が必要であることと、当方に根気がないことを、亡父は知らなかったようだ。

 (擦弦楽器以外の楽器をやる人には失礼な話だが)何故バイオリン属は他の楽器と比べて難しいのか。それは、「弓圧/弓速/ピッチ(音程)」の3つの制御要素をバランスよく保たないと奇麗な音が出ないからだ。「2つのバランスをとることですら気を遣うのに、3つとなると・・・」と考えると、何となく難しさがわかる。

 さて、「誰もがミュージシャン」のブログで紹介した、「数理モデル」の開発を通じ、当該バランスは、以下の関係式で表せることがわかった。

  v=(Q/p)×h  ・・・式1

  但し、v:弓圧[N]、h:弓速[m/s]、p:ピッチ[Hz]、Q:定数

 図1において無限長のバイオリン弦を弓で擦ることを考える。弦を擦ることにより、弓と弦との摩擦力によって弦が移動する。弦がA点まで持ち上げられて摩擦の限界(最大静止摩擦状態)を超えると、弦が弓を滑ってB点に移動する(動摩擦状態)。これを繰り返すことでに図1のような鋸歯状波が発生する(引用文献のFig 9-12参照)。波のピーク値(A点の高さ)は、弓圧vに対応し、A点に到るまでの傾きが、弓速hに対応する。それによって、波形の周期であるピッチpが一意に決まる。一方(弦が有限長の場合)、弦を押さえる位置によって決まる弦の振動周期が発生するが、この振動周期が、ピッチpと同じになれば、安定した音が出せるのだ。言い換えると、弦の振動周期とピッチpが異なると、共振不良が発生し汚い音になる。大縄跳びに例えると、「縄を持つ2人の回転速度がずれること」に何となく似ている。 

 様々なピッチについて実験してみたところ、安定した音色を出すためのQの値は、ピッチや弦の種類の違いに関わらず一定値になることがわかった。但し、少なくとも弦の駆動位置(ブリッジよりとか)は変えないという条件ではあるが、とりあえず、この発見を「擦弦相対性理論」と命名した✌。なお、弓速などの物理量に関しては、この引用文献が参考になった。因みに、本物のバイオリンの波形は、1のような鋸歯状波に、細かい高周波が重畳された波形になるが、この高周波はブリッジの固有振動の作用などによって発生するものであり(引用文献のFigure 3を参照)。式1に影響を及ぼすものではない。

 さて、一流のバイオリニストでも、速いパッセージになると、どうしてもバランス制御が困難となり、特に音符の切り替わり時に音色が汚くなる。その点、数理モデルだと、サンプリング周期(48kHzサンプリングだと約20.8uSec)単位で、式1による計算を行うので、常に音色の安定化実現できる。つまり人間は「練習によって体得した運動感覚と、聴覚フィードバック」によって、バランス調整を行うのに対して、数理モデルは「式1」を計算することでバランス調整を行っている。どちらが確実かつ素早く調整できるかは自明であろう。とは言え、いつも安定した音色だと、(特にJazzでは)面白みに欠ける演奏となるので、適度に不安定さを忍ばせる(Qに外乱を与える)芸当も必要だろう。

 この理論を用いた練習法については、別コラム「バイオリン上達理論」に記載した。参照頂ければ幸いである。

 

 

下記サイトにて、複雑系サウンド(チェロ/トランペット)をご試聴いただけます。  https://voibow.wixsite.com/voibow

幼少期のバイオリン

霊感のある猫

 サンは今年で7歳になる。生後1ケ月ぐらいの頃に、出先のコンビニ前でうずくまり生死を彷徨っているところを、息子が保護してきた雄猫である。膝にのせ車を走らすこと1時間。「何とか家までもってくれ」と祈ったそうだ。

 帰宅後すぐに病院に連れていき、救命処置と介護の甲斐あって、今では先住猫を追いかけまわすほどやんちゃである。性別こそ違うが、性格や食べ物の好み等が亡母に似ているので、生まれ変わりと信じ大切にしている。

 2020年の年明け、帰宅中に親戚から、叔父の訃報を受けた。叔父は亡母がかわいがっていた6歳下の弟であり、私も大好きな優しい叔父であった。

 帰宅後、悲しみに暮れつつも、いつものようにサンを私の居住部屋に招いた。いつもならストーブ前に陣取り、おやつの準備を待つのだが、その日に限り、部屋に入ろうともせず、誰も座っていない座椅子をドア越しに見つめていた。入室を促すと、視線を変えずに、スローモーション映像のように忍び寄っていく。ようやく座椅子に向かい合うと、じっと上を見つめたまま。

 亡母の化身のサンは、遠路あいさつに来られた叔父と、心を通わせていたに違いない。それ以前も以降も、斯様な行動は一度も見せていない、本当にあった話である。

父ちゃんあそぼ!