私の高校では、基本的に学期ごとに自分で科目を学ぶクラスを受講することができます。「サウンドプログラミング」について学びたいと思っていたのですが、それが何なのかわからないことに気づきました。たとえば、シンセサイザーがどのように機能するか、コンピューターサイエンスでサウンドがどのように機能するかについて知りたいと思っています。構成部分ではなく、低レベルのコード部分に焦点を当てたいと思います。これは実行可能な主題ですか?これにまったく慣れていない人のための良いチュートリアルはありますか?私はC++を知っており、Windowsを使用しています。これの最初の答えは私が興味を持っているものです(それは私の頭の上にありますが)。
3 に答える
「サウンドプログラミング」は非常に広い分野です。まず第一に、それは間違いなく実行可能な科目ですが、1学期に詰め込む必要があるため、範囲を制限する必要があります. 開始点を探していることがわかります。ここでは、考えさせるためのアイデアをいくつか紹介します。
「コンピューターサイエンスにおけるサウンドの仕組み」と「シンセサイザー」の両方について言及したので、アナログサウンド、サンプリングサウンド、合成サウンドの違いを指摘する価値があります。これらは異なる概念であるためです。ここではそれらについて簡単に説明します。
アナログ サウンドは、人間が通常解釈する音、つまり人間の耳が感知する空気の振動です。音は、独立変数が時間で従属変数が振動の振幅である 1 次元信号と考えることができます。アナログ サウンドは、時間ドメインと振幅ドメインの両方で連続しています。古い録音方法 (磁気テープなど) では、アナログ サウンド表現が使用されていました。アナログ サウンドはコンピュータではあまり使用されませんが (コンピュータは連続ドメイン データの保存には適していません)、それでもアナログ信号を理解することは重要です。この道を進むと、多くの数学 (複素数、フーリエ変換など) が見られることを期待してください。
サンプリング音は、コンピューターでの処理に適した音の表現です。人々は、CD やその他の音楽録音によるサンプリング サウンドに最も精通しています。アナログ信号は、ある周波数でサンプリングされます (たとえば、CD 録音の場合は 44.1KHz)。したがって、サンプリングされた音声信号は時間領域で離散的です。信号が量子化されている場合、振幅ドメインでも離散的になります。MP3 などの形式は、サンプリングされた形式です。興味があれば、復元 (静電気の除去など) や圧縮 (コーデック MP3、Ogg Vorbis) など、この分野で学ぶべきことがたくさんあります。実験したりコードを書いたりすることがたくさんあるので、とても楽しいです。
アナログ サウンドとサンプリング サウンドの両方が、デジタル信号処理と呼ばれる分野に深く関わっています。それがどのようなものかを知るために、グーグルで検索してください。多くの場合、大学でコースとして教えられているので、本当に熱心な場合は、講義のスライドを見たり、以前の簡単なプロジェクトを試してみることもできます。
合成音は、トラックを演奏する楽器が事前にわかっている音楽トラックの再生に適した表現です。パソコン用の楽譜だと思ってください。誰かが楽譜を書かなければなりません。アナログやサンプリングされた音のように録音することはできません。これにより、合成音はアナログ音やサンプリング音とはまったく異なる表現になります。また、コンピューターは、トラックを再生 (合成) できるように、楽器が何であるか (ピアノなど) を認識する必要があります。楽器がわからない場合は、あきらめるか、近いものを選択します (たとえば、ピアノを電子キーボードに置き換えます)。私はこれまでシンセサイザーを扱ったことがないので、シンセサイザーの学習曲線についてコメントすることはできません。
だから、私が書いたことに基づいて - あなたがより興味のある方向を選び、グーグルで検索してから、質問を絞り込んでください。
編集
読むのに良い本はこれです。Amazon で関連するタイトルを調べて、新しいものを見つけることができるかもしれませんが、オーディオ処理の買い物をしてからしばらく経ちました。
30 分余裕がある場合は、このビデオ チュートリアルをご覧ください。サウンド、画像、およびビデオ処理をカバーします。これらは実際には密接に関連する分野です。
「フーリエとは誰?: 数学的冒険」という本を読み進めることを検討してください。例を変更して、基本的な概念を示す小さなプログラミング課題を作成できます。作業が終わったら、fft を使用して、母音 a、e、i、o、u を発音しながら、自分の声のスペクトログラムを作成できるようになるはずです。これにより、各母音の基本周波数とフォルマントが識別されます。
Python とモジュールNumPy、SciPy、および matplotlibを学習することをお勧めします(そこにはたくさんのモジュールがあるため、基本的なチュートリアルを超えて、学習しながら学習してください)。iPython シェルには、最も一般的なツールを名前空間に自動的にインポートするためのオプション "-pylab -p scipy" があります。PyAudioを使用してオーディオを録音および再生できます。また、SDL (シンプルな DirectMedia レイヤー) を拡張するPygameと、 OpenAL (オーディオの OpenGL; 3D オーディオとエフェクトを行う) を使用するpygletもあります。
C/C++ に関しては、信号処理用の IT++、SPUC、および FFTW と、ハードウェアおよびオーディオ ファイルとのインターフェイス用の SDL/SDL_mixer および OpenAL/ALmixer があります。
この本をお勧めします: http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=8218 (一部はここで入手できます: http://books.google.com/books?id =nZ-TetwzVcIC&printsec=frontcover&dq=computer+musical+tutorial&hl=pt-BR&ei=D-dKTaKsBMOB8gbF4KDcDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CDgQ6AEwAA#v=onepage&q=computer%20musical%20tutorial&f=false )
もう 1 つ注目できるのは puredata です。これはサウンド プログラミング用のオープン ソースのグラフィカル環境であり、初心者に最適です。( http://puredata.info/ )