audiovisualcoding

これをやるのに必要なのはこれだけ、が欲しかったプログラミング初心者による覚え書き

【Raspberry Pi 4B】インタラクティブサウンドアートプログラム開発#004:SuperColliderコードをGUIを使わずに実行する

【このシリーズの目的】
インタラクティブサウンドアートのためのプログラムを、Raspberry Pi 4B単独で走るようにしたい。
すでに完成させたものはあるのだが、Raspberry Pi、ラップトップ、スマートフォンの3つを同時稼働させるという煩雑なものになってしまっているので、それをRaspberry Piに統合したい。
想定しているプログラミング言語C/C++である。

【この記事で実践したいこと】
何を:SuperColliderで音を出すテストを、GUIを使わずに実行したい。
どこで:ヘッドレスRaspberry Pi 4Bで動作

【前提知識】
Ubuntu/DebianLinuxの基本コマンド、SuperColliderの基本文法
Raspberry PiRaspberry Pi OS が搭載されていることと、そこでC/C++スクリプトをビルド&ランすることを前提としている。

◀ 前 #003:USB音響機器の動作を確認する
▶ 次 #005:(まだ)

  • Raspberry PiSuperColliderをインストールする
    • i-1 必要な前提パッケージを確認する
      • 必須パッケージ
      • 推奨パッケージ
    • i-2 前提パッケージをインストールする
    • i-3 SuperColliderをインストールする
      • 1. ソースコードを入手する
      • 2. CMakeでビルドの設定を行う
      • 3. ビルドおよびインストールを行う
      • 4. JACKをセットアップする
      • 5. ユーザをaudioグループに追加する
      • 6. 再起動する
  • SuperColliderコードを実行する
  • 参考文献
続きを読む

【Raspberry Pi 4B】インタラクティブサウンドアートプログラム開発#003:USB音響機器の動作を確認する

【このシリーズの目的】
インタラクティブサウンドアートのためのプログラムを、Raspberry Pi 4B単独で走るようにしたい。
すでに完成させたものはあるのだが、Raspberry Pi、ラップトップ、スマートフォンの3つを同時稼働させるという煩雑なものになってしまっているので、それをRaspberry Piに統合したい。
想定しているプログラミング言語C/C++である。

【この記事で実践したいこと】
何を:USB音響機器 (今回は Focusrite Scarlett 4i4 (gen.3)) をRaspberry Piに接続し、音の入出力やコントロールの動作を確認したい。
どこで:ヘッドレスRaspberry Pi 4Bで動作

【前提知識】
Ubuntu/DebianLinuxの基本コマンド
Raspberry PiRaspberry Pi OS が搭載されていることと、そこでC/C++スクリプトをビルド&ランすることを前提としている。

◀ 前 #002:音声処理APIを選んでインストールする
▶ 次 #004:SuperColliderコードをGUIを使わずに実行する

  • 音響機器がRaspberry Piで使えるか確認する
    • 1-i Scarlettを接続する
    • 1-ii Scarlettが認識されているかチェックする
  • 音響機器をRaspberry Piで制御できるようにする
    • ii-1 USB音響機器の設定ファイルを作成する
    • ii-2 Raspberry Piを再起動する
    • ii-3 ハードウェアの制御を確認する
  • 余談:Scarlettを最優先に読み込むようにしたかった
  • 参考文献
続きを読む

【Raspberry Pi 4B】インタラクティブサウンドアートプログラム開発#002:音声処理APIを選んでインストールする

【このシリーズの目的】
インタラクティブサウンドアートのためのプログラムを、Raspberry Pi 4B単独で走るようにしたい。
すでに完成させたものはあるのだが、Raspberry Pi、ラップトップ、スマートフォンの3つを同時稼働させるという煩雑なものになってしまっているので、それをRaspberry Piに統合したい。
想定しているプログラミング言語C/C++である。

【この記事で実践したいこと】
何を:目的に合った音声処理APIを選び、使える状態にしたい。
どこで:ヘッドレスRaspberry Pi 4Bで動作

【前提知識】
Ubuntu/DebianLinuxの基本コマンド
Raspberry PiRaspberry Pi OS が搭載されていることと、そこでC/C++スクリプトをビルド&ランすることを前提としている。

◀ 前 #001:モジュールや周辺機器を決める
▶ 次 #003:USB音響機器の動作を確認する

  • 音声処理APIを選ぶ
  • libsoundioをインストールする
    • 2-i パッケージを確認してインストールする
      • 結論
      • 説明
    • 2-ii 前提パッケージをインストールする
      • 結論
      • 説明
続きを読む

【Raspberry Pi 4B】インタラクティブサウンドアートプログラム開発#001:モジュールや周辺機器を決める

【このシリーズの目的】
インタラクティブサウンドアートのためのプログラムを、Raspberry Pi 4B単独で走るようにしたい。
すでに完成させたものはあるのだが、Raspberry Pi、ラップトップ、スマートフォンの3つを同時稼働させるという煩雑なものになってしまっているので、それをRaspberry Piに統合したい。
想定しているプログラミング言語C/C++である。

【この記事で実践したいこと】
何を:必要なセンサモジュールや周辺機器を選択したい。
どこで:ヘッドレスRaspberry Pi 4Bで動作

▶ 次 #002:音声処理APIを選んでインストールする

  • センサを決める
    • 1-i 基本要件を決める
    • 1-ii センサの種類を決める
  • 音響機器を決める
  • 外部電源が無くなっても動作するようにする (将来的に)
続きを読む

【JavaScript】非同期処理と async/await をある程度理解する

【実践したいこと】
細かい事までわかろうとするとキリがないのでそこまで深掘りしないとしても、async/await をよくわからないまま何となく使う状況からは脱却したい。
ここでは async/await についてすべて解説しているのではなく、自分が実際に async/await を使うときにはっきりさせたかった部分だけが書かれている。

【前提知識】
Promise

  • 非同期処理とは
  • async/await とは
    • async
    • await
  • 参考文献
続きを読む

【JavaScript】ブラウザのコンソールにログやエラーが表示されないようにしたいとき

【実践したいこと】
何を:console.log などが実行されても、ブラウザのコンソールに何も表示させないようにしたい。
どこで:Webページ上
何のために使うのかはわからないが、実例を見たのでメモしておく。

【ソース】

▾main.js

console.log = function() {};
console.error = function() {};

または

console.log = () => {};
console.error = () => {};

参考文献

stackoverflow.com

【Web Audio API】ブラウザが Web Audio API に対応しているかチェックしたいとき

【実践したいこと】
何を:ユーザが使っているブラウザが Web Audio API に対応しているかチェックし、対応していなければ警告文をコンソールに表示させるまで
どこで:Webページ上

【ソース】

▾index.html

<!DOCTYPE html>
<html>
    <body>
        <script src="main.js"></script>
    </body>
</html>

▾main.js

try {
    window.AudioContext =
        window.AudioContext ||
        window.webkitAudioContext ||
        window.mozAudioContext ||
        window.msAudioContext ||
        window.oAudioContext;
} catch (e) {
    console.error("Your browser does not support Web Audio API.");
}