• 締切済み

c言語で音の出力方法を教えてください

NINJA104の回答

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.4

Win32API(SDK)を前提に以下話しを進めます。 MSVC/C++2.0以降で有ればOKです。 --- 以下 C用サンプル関数 // lpszWaveFileName : 出力対象のWAVEファイル名 // mode : 0 演奏強制STOP, 1 BGMモードで演奏開始(LOOPする), 2 演奏終了まで待つ #include <windows.h> #include <windowsx.h> #include <mmsystem.h> VOID WaveAudioPlay( LPSTR lpszWaveFileName, WORD mode ) { switch( mode ) { case 0: PlaySound( NULL, NULL, SND_NOWAIT|SND_FILENAME|SND_ASYNC ); break; case 1: PlaySound( lpszWaveFileName, NULL, SND_NOWAIT|SND_FILENAME|SND_ASYNC|SND_LOOP ); break; case 2: PlaySound( lpszWaveFileName, NULL, SND_NOWAIT|SND_FILENAME|SND_SYNC ); break; default: break; } }

関連するQ&A

  • Cシェルで標準エラー出力への出力方法を教えてください。

    Cシェルにおいて、通常echo文は標準エラー出力へ表示されます。 echo文のように引数で指定した文字列を標準エラーとして出力するような コマンド?があったら教えてください。 c言語では fprintf(stderr,"test!\n"); などとやりますが、Cシェルではありますでしょうか?

  • C言語のprint関数の質問なんですが、

    C言語のprint関数の質問なんですが、 "/n"を文字として標準出力するためにはどのような書き方をしなければならないのですか? よろしくお願いします。

  • 標準出力をバイナリモードに(C/C++,FreeBSD)

    FreeBSDでのC言語に関する質問です。 画像を標準出力に出力するプログラムを書こうとしたところ、 バイナリモードで出力する必要があるということを知りました。 一般的には setmode(_fileno(stdout),_O_BINARY); によって標準出力をバイナリモードにすることができるのですが、 FreeBSDではsetmode関数自体がまったく異なることを実行する関数になっていて、うまくいきません。 バイナリモードで標準出力に出力する方法はありますでしょうか? FreeBSDのバージョンは、6.1 RELEASEです。 よろしくお願いします。

  • アセンブリ言語とC言語について。

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al … No.14のC 言語の write の仕様そのもので、第一引数はファイルディスクリプタですね。 (ファイルディスクリプタについては御自身で調べてみてください) 固定値として定義されているのは、標準ストリーム ファイルの  0 … 標準入力 (write では使われない)  1 … 標準出力  2 … 標準エラー出力 です。(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを 指しており、固定値ではなくプロセス毎に異なる値となります。) 括弧の所がよくわかりません。教えていただけると幸いです。すみません。

  • OPENSSLをC言語で

    OPENSSLを使用して暗号化と復号化の処理をC言語(VC++)で 作りたいのですが、C言語からの関数の仕様書を見つけることが できません。一覧表は見つけたのですがこれでは機能がわからなくて 困っています。 また、例題としてコマンドラインからの例は、入手できたのですが これがCの関数になるとどのようになるのか解かりません。 関数仕様書を入手できるHPを教えてください。 (英語のサイトも探しましたが、挫折しました) こんな、馬鹿な質問で申し訳ありません。

  • C言語で地図を描きたい

    C言語で、地図を描くプログラムを作ろうと考えていますが、 どなたか参考になりそうなソースや文献などご存知でしょうか。 東京湾などの形状を描くつもりですが、将来的に 詳細/広域切り替え機能も必要になります。 海岸線を正確に描くためには、 画面外にある地形座標とも線を繋ぐ必要がありますが これをどう処理しようか考えあぐねています。 標準出力にXY座標を与えて線を描く関数や、 緯度経度をXY座標に変換する関数は用意しています。

  • 音が出力されない

    OSはWin98です。 フリーズし、再起動すると音がでなくなりました。 「ミュートされてるのかな?」と思い、VolumeControlを開いてみましたがミュートしてませんでした。 普通、音が出力されてる時にVolumeControlのWaveのところのレベルメーターが動きますが、音が出てないようです(つまりスピーカーは大丈夫なのではないかと思います)。 Wav,Mp3,Midi等のファイルを再生してみましたがレベルメーターはゼロのままです。 恐らくドライバやデバイスあたりの不具合ではないかと思いますが、恐くて手出しできません(^^; 何卒、よろしくお願いします。

  • C言語の関数を分かりやすく説明してください。

    C言語を学習しています。 C言語の入門書を読んでいて、どうしても関数のこと(引数とか戻り値とか自作関数についてのこと)が分かりませんでした。ネットで調べてみたりもしたのですが分かりませんでした。 かみ砕いて説明していただけるとありがたいです。

  • C#でCのコンソール出力の取得

    C#でCのコンソール出力の取得 Cで作成したDLLをC#で利用しています。このときDLLファイルはC言語のprintfを使用しています。この出力内容を取得して、C#でテキストボックス等に表示する方法はありませんでしょうか。

  • C言語の標準関数の引数の順番について

    C言語標準関数の引数についての質問です。 strcpy、memsetなど C言語の標準関数の引数に注目したところ 前に出力パラメータを持ってきているものが多いように思えます。 例えば、 char *strcpy(char *dest, const char *src); の場合、 第1引数の"dest"が出力パラメータで 第2引数の"src"が入力パラメータとなっています。 入力よりも出力を前に持ってきている理由が何かあるのでしょうか。 今後、自分が設計をするときの参考にしたいと考えているので 理由を知っている方がいたら教えて下さい。