前田稔(Maeda Minoru)の超初心者のプログラム入門
ファイル名 | ファイルの説明 |
---|---|
MidiTemp.cpp | 「プログラムの説明」を参考に作成して下さい |
audio.h | audio Object Class ヘッダファイル |
audio.cpp | audio Object Class プログラムファイル |
midi1.mid | ネットから適当な MIDI を調達して名前を変更して下さい |
BOX | キャプション | ID |
---|---|---|
DialogBox | ダイアログ | IDD_DIALOG1 |
SpinButton | ボリューム | IDC_SPIN1 |
SpinButton | テンポ | IDC_SPIN2 |
EditBox | IDC_EDIT1 | |
EditBox | IDC_EDIT2 | |
Button | 演奏 | IDC_BUTTON1 |
Button | キャンセル | IDCANCEL |
#include <windows.h> #include <commctrl.h> #include "audio.h" #include "resource.h" #pragma comment(lib,"dxguid.lib") //☆Audio Object Class を定義する Audio App; char Midi[64]= "midi1.mid"; long db; float fTempo= 1.0f; |
switch (message) { case WM_INITDIALOG: SendMessage(GetDlgItem(hDlg,IDC_SPIN1),UDM_SETRANGE,0,40); SendMessage(GetDlgItem(hDlg,IDC_SPIN1),UDM_SETPOS,0,20); SendMessage(GetDlgItem(hDlg,IDC_SPIN2),UDM_SETRANGE,0,40); SendMessage(GetDlgItem(hDlg,IDC_SPIN2),UDM_SETPOS,0,20); break; |
case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_BUTTON1: if (!FAILED(App.Load(Midi))) App.Play(); break; case IDCANCEL: PostMessage(hDlg,WM_CLOSE,0,0); break; } break; |
case WM_VSCROLL: if ((HWND)lParam==GetDlgItem(hDlg,IDC_SPIN1)) { pos= HIWORD(wParam); db= 100*(pos-20); App.SetVol(&db); } |
if ((HWND)lParam==GetDlgItem(hDlg,IDC_SPIN2)) { pos= HIWORD(wParam); fTempo= (float)pos/20.0f; App.g_pPerformance->SetGlobalParam(GUID_PerfMasterTempo,&fTempo,sizeof(float)); } break; |
case WM_CLOSE: EndDialog(hDlg,TRUE); return (TRUE); |
超初心者の方のために全ソースコードを掲載します。 (^_^;)
同じようにプログラムしても WAVE ではテンポが変わりませんでした。
全ソースコード
前田稔(Maeda Minoru)の超初心者のプログラム入門