大学で音に関するプログラムを組んでいて音が出ない
解決したいこと
ここに解決したい内容を記載してください。
やさしい音と音楽のプログラミング 横山真男 著 を使って大学の授業を進めていますが、
音がパソコンから出力されず困っています。問題の場所はsample1-1.cppで、使用PCはwindows9
visualStudio2022を使用しています。
追記しますとsample1-2.cppでは問題なくMIDIファイルを出力、MIDIファイルを再生して音声を出すことができたのでスピーカーなどの問題ではなさそうです。
visual studioのresource内に各種サンプルプログラムを置き最低限のファイル移動にとどめています。
バージョンは
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.5.3
で実行しています
サンプルプログラム側が2019年のバージョンで止まっていたので
visualStudioの指示に従ってアップデートをしました。
発生している問題・エラー
出ているエラーメッセージを入力
例)
ビルド画面
ビルドを開始しました...
========== ビルド: 成功 0、失敗 0、最新の状態 1、スキップ 0 ==========
========== ビルド は 1:58 PM に開始され、00.371 秒 かかりました ==========
'sample1-1.exe' (Win32): 'C:\Users\user\source\repos\VS2019対応\sample1-1\Debug\sample1-1.exe' が読み込まれました。シンボルが読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\ntdll.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\kernel32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\KernelBase.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\winmm.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msvcrt.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\vcruntime140d.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\ucrtbased.dll' が読み込まれました。
スレッド 0x3a34 はコード 0 (0x0) で終了しました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\winmmbase.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\sechost.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\rpcrt4.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\MMDevAPI.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msvcp_win.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\ucrtbase.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\SHCore.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\devobj.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\combase.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\cfgmgr32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\wdmaud.drv' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\kernel.appcore.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\ksuser.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\avrt.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\AudioSes.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\oleaut32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\advapi32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\powrprof.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\umpdc.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msacm32.drv' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msacm32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\midimap.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\bcryptprimitives.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\clbcatq.dll' が読み込まれました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(1) tid(2428) 887C0030 スレッド 0x2428 はコード 0 (0x0) で終了しました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\imaadp32.acm' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msadp32.acm' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msg711.acm' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\msgsm32.acm' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\l3codeca.acm' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\user32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\win32u.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\gdi32.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\gdi32full.dll' が読み込まれました。
'sample1-1.exe' (Win32): 'C:\WINDOWS\SysWOW64\imm32.dll' が読み込まれました。
onecore\com\combase\objact\objact.cxx(827)\combase.dll!759E0249: (caller: 759DEC4B) ReturnHr(1) tid(3130) 800401F0 CoInitialize は呼び出されていません。
onecore\com\combase\objact\objact.cxx(827)\combase.dll!759E0249: (caller: 759DEC4B) ReturnHr(2) tid(3130) 800401F0 CoInitialize は呼び出されていません。
onecore\com\combase\objact\objact.cxx(827)\combase.dll!759E0249: (caller: 759DEC4B) ReturnHr(3) tid(3130) 800401F0 CoInitialize は呼び出されていません。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(2) tid(24e8) 887C0030 スレッド 0x24e8 はコード 0 (0x0) で終了しました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(3) tid(b10) 887C0030 スレッド 0xb10 はコード 0 (0x0) で終了しました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(4) tid(3550) 887C0030 スレッド 0x3550 はコード 0 (0x0) で終了しました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(5) tid(1f08) 887C0030 スレッド 0x1f08 はコード 0 (0x0) で終了しました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(6) tid(1d50) 887C0030 スレッド 0x1d50 はコード 0 (0x0) で終了しました。
avcore\audiocore\client\audioclient\audioclientcore.cpp(1501)\AUDIOSES.DLL!5EC69988: (caller: 5EC68771) ReturnHr(7) tid(144c) 887C0030 スレッド 0x144c はコード 0 (0x0) で終了しました。
スレッド 0x3668 はコード 0 (0x0) で終了しました。
スレッド 0x30e4 はコード 0 (0x0) で終了しました。
スレッド 0x3b58 はコード 0 (0x0) で終了しました。
プログラム '[15804] sample1-1.exe' はコード 0 (0x0) で終了しました。
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
C++
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#include <math.h>
#pragma comment( lib, "winmm.lib" )
#define SRATE 44100 // サンプリングレート 44.1kHz
#define PI 3.14159286 // π
int main()
{
// wave関係変数
static HWAVEOUT hWave;
static WAVEHDR whdr;
WAVEFORMATEX wfe;
static char* bWave;
unsigned int count = 0;
float b_time = 1.0; // 鳴らす時間(秒)の設定
float f0 = 880.0; // ラ(A4)440Hz
float amplitude = 100.0; // 振幅
int data_len = (int)SRATE * b_time; // データの長さ
bWave = (char*)malloc(data_len); // 波形データのメモリ確保
// 1秒分のデータを配列に設定する
for (count = 0; count < data_len; count++) {
bWave[count] = (char)(amplitude * sin(2 * PI * f0 * count / SRATE));
}
wfe.wFormatTag = WAVE_FORMAT_PCM;
wfe.nChannels = 1;
wfe.nSamplesPerSec = SRATE;
wfe.nAvgBytesPerSec = SRATE;
wfe.wBitsPerSample = 8;
wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8;
// デバイスのオープン
waveOutOpen(&hWave, WAVE_MAPPER, &wfe, 0, 0, CALLBACK_NULL);
whdr.lpData = bWave;
whdr.dwBufferLength = data_len;
whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;
whdr.dwLoops = 1;
// ヘッダーの準備
waveOutPrepareHeader(hWave, &whdr, sizeof(WAVEHDR));
// 波形データの書き出し(再生)
waveOutWrite(hWave, &whdr, sizeof(WAVEHDR));
printf("press any key !");
getchar(); // キー入力待ち
return 0;
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。
通知音について初期状態に戻した。スピーカーの音量を最大にしてシステム音を最大にした。
0