タケノコ畑の置手紙

ちょっとしたプログラムのこととかをにわかなりに書いてみるブログ

OpenALとC 補足

二日に一回更新しようとしてさっそく途切れましたが私は元気です。

さて、今回はこちらでやったコードの解説でも。

注意ですが、コメントで十分なものやプログラム的なところは割愛していきます・・・

hatakenoko.hateblo.jp

 ソースコードは上を参照してください。

 まずはincludeなどの下準備。こちらは大丈夫ですね。みたままリンクするだけです。

メイン関数に入りましょう。

 //OpenALの下準備 おまじない的な 

ALCdevice *device = alcOpenDevice(NULL);

ALCcontext *context = alcCreateContext(device, NULL);

alcMakeContextCurrent(context);

 deviceは出力デバイスを表します。ここではスピーカですね。

引数NULLでデフォルトのスピーカを選びます。ヘッドフォンを挿したら自動的に切り替わるアレです。

context関係はたくさんのソースから発せられた音を一つにまとめて出力する宣言みたいなものです。いずれたくさんの効果音とかを同時に出力するときに生きてくるんじゃないかな・・・?

 

続きを読む

ちょっとした音とwavデータの話

前回はなんの説明もなく音を鳴らしてみたので、まずは音についてを話していきます。

音ってなに?(恒例)

「物が動き、こすれ、ぶつかって出る空気の震え(=疎密波)が耳に届いて聞こえるもの。」

はい。ご存知の通り空気の振動のことでございます。

 

これを電子データとして記録したものがwavデータです。

f:id:TaKeNoKo46:20180526001446p:plain

例えば1Hzのsin波を1秒間に20回の間隔で縦軸の値を測定します。

上の図の場合、値を並べると[0.0, 0.3, 0.6, 0.8, 0.9, 1.0, 0.9, 0.8, ・・・]

この時の測定間隔を標本化周波数(もしくはサンプリングレート)、縦軸の値をわける段階数を量子化ビット数といいます。

 

続きを読む

OpenALとC

記念すべき第一回はCでOpenALを扱うお話です。

注)基本的にWindows主体で進めていきます。Mac持ってないんです・・・

 

まずOpenALとは!

OpenAL (Open Audio Library)はクロスプラットフォームのオーディオAPIであるフリーソフト。 マルチチャンネル3次元定位オーディオを効率よく表現するように設計された。 APIのスタイルと慣習は意図的にOpenGLと似せてある。by Wikipedia

ようするにいろんなデバイスで音を鳴らせるようにするライブラリのことですね。

 

これを使ってCで音を鳴らすプログラムを作っていきたいと思います。

 まず用意するものを以下に書いときます

・PC

Visual Studioとかプログラム書くやつとコンパイラ

OpenALSDK

 

ただIncludeしてプログラムを書くだけなのでそんなに大変ではないと思います。

持ってない方はこちらからDLしてくださいね。

おすすめはCommunity

ダウンロード | IDE、Code、Team Foundation Server | Visual Studio

上のSDKをDL

OpenAL: Cross Platform 3D Audio

 

インストールが終わるとデフォルトだとC:\Program Files (x86)\OpenAL 1.1 SDKに入っているので、場所を忘れずにメモっておきましょう。

では早速プログラムをVisual Studioで書いていきます。

ファイル>新規作成>プロジェクトからVisual C++の空のプロジェクトを選びます。

f:id:TaKeNoKo46:20180524203306p:plain作成したらプロジェクト>新しい項目の追加(Ctrl+Shift+A)でメインのcppを作ります。とりあえず以下のプログラムを貼り付けてみてください。

 

続きを読む

初めてのブログ開設

新年度(笑)が始まったので備忘録的なものをこのブログに書いていこうと思います。

 

内容としては私の趣味全っっっ開のものにしようと思っています。

多分園芸とかゲームとかプログラムとか・・・

 

まあそんなわけでこれを初投稿としてみます。