home *** CD-ROM | disk | FTP | other *** search
- // BASS DX8 Effects Test, copyright (c) 2001-2005 Ian Luck.
-
- #include <windows.h>
- #include <commctrl.h>
- #include <stdio.h>
- #include "bass.h"
-
-
- HWND win=NULL;
-
- DWORD chan; // channel handle
- HFX fx[4]; // 3 eq bands + reverb
-
- OPENFILENAME ofn;
- char path[MAX_PATH];
-
- /* display error messages */
- void Error(char *es)
- {
- char mes[200];
- sprintf(mes,"%s\n(error code: %d)",es,BASS_ErrorGetCode());
- MessageBox(win,mes,"Error",0);
- }
-
-
- #define MESS(id,m,w,l) SendDlgItemMessage(win,id,m,(WPARAM)w,(LPARAM)l)
-
- void UpdateFX(int b)
- {
- int v=MESS(20+b,TBM_GETPOS,0,0);
- if (b<3) {
- BASS_FXPARAMEQ p;
- BASS_FXGetParameters(fx[b],&p);
- p.fGain=10.0-v;
- BASS_FXSetParameters(fx[b],&p);
- } else {
- BASS_FXREVERB p;
- BASS_FXGetParameters(fx[3],&p);
- p.fReverbMix=-0.012*v*v*v;
- BASS_FXSetParameters(fx[3],&p);
- }
- }
-
- BOOL CALLBACK dialogproc(HWND h,UINT m,WPARAM w,LPARAM l)
- {
- switch (m) {
- case WM_COMMAND:
- switch (LOWORD(w)) {
- case IDCANCEL:
- DestroyWindow(h);
- break;
- case 10:
- {
- char file[MAX_PATH]="";
- ofn.lpstrFilter="playable files\0*.mo3;*.xm;*.mod;*.s3m;*.it;*.mtm;*.umx;*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif\0All files\0*.*\0\0";
- ofn.lpstrFile=file;
- if (GetOpenFileName(&ofn)) {
- memcpy(path,file,ofn.nFileOffset);
- path[ofn.nFileOffset-1]=0;
- // free both MOD and stream, it must be one of them! :)
- BASS_MusicFree(chan);
- BASS_StreamFree(chan);
- #if 1 // with FX flag
- if (!(chan=BASS_StreamCreateFile(FALSE,file,0,0,BASS_SAMPLE_LOOP|BASS_SAMPLE_FX))
- && !(chan=BASS_MusicLoad(FALSE,file,0,0,BASS_MUSIC_LOOP|BASS_MUSIC_RAMP|BASS_SAMPLE_FX,0))) {
- #else // without FX flag
- if (!(chan=BASS_StreamCreateFile(FALSE,file,0,0,BASS_SAMPLE_LOOP))
- && !(chan=BASS_MusicLoad(FALSE,file,0,0,BASS_MUSIC_LOOP|BASS_MUSIC_RAMP,0))) {
- #endif
- // whatever it is, it ain't playable
- MESS(10,WM_SETTEXT,0,"click here to open a file...");
- Error("Can't play the file");
- break;
- }
- MESS(10,WM_SETTEXT,0,file);
- { // setup the effects
- BASS_FXPARAMEQ p;
- fx[0]=BASS_ChannelSetFX(chan,BASS_FX_PARAMEQ,0);
- fx[1]=BASS_ChannelSetFX(chan,BASS_FX_PARAMEQ,0);
- fx[2]=BASS_ChannelSetFX(chan,BASS_FX_PARAMEQ,0);
- fx[3]=BASS_ChannelSetFX(chan,BASS_FX_REVERB,0);
- p.fGain=0;
- p.fBandwidth=18;
- p.fCenter=125;
- BASS_FXSetParameters(fx[0],&p);
- p.fCenter=1000;
- BASS_FXSetParameters(fx[1],&p);
- p.fCenter=8000;
- BASS_FXSetParameters(fx[2],&p);
- UpdateFX(0);
- UpdateFX(1);
- UpdateFX(2);
- UpdateFX(3);
- }
- BASS_ChannelPlay(chan,FALSE);
- }
- }
- break;
- }
- break;
-
- case WM_VSCROLL:
- if (l) {
- UpdateFX(GetDlgCtrlID((HWND)l)-20);
- }
- break;
-
- case WM_INITDIALOG:
- win=h;
- GetCurrentDirectory(MAX_PATH,path);
- memset(&ofn,0,sizeof(ofn));
- ofn.lStructSize=sizeof(ofn);
- ofn.hwndOwner=h;
- ofn.nMaxFile=MAX_PATH;
- ofn.lpstrInitialDir=path;
- ofn.Flags=OFN_HIDEREADONLY|OFN_EXPLORER;
- // setup output - default device
- if (!BASS_Init(-1,44100,0,win,NULL)) {
- Error("Can't initialize device");
- DestroyWindow(win);
- break;
- }
- {
- // check that DX8 features are available
- BASS_INFO bi={sizeof(bi)};
- BASS_GetInfo(&bi);
- if (bi.dsver<8) {
- BASS_Free();
- Error("DirectX 8 is not installed");
- DestroyWindow(win);
- }
- }
- /* initialize eq/reverb sliders */
- MESS(20,TBM_SETRANGE,FALSE,MAKELONG(0,20));
- MESS(20,TBM_SETPOS,TRUE,10);
- MESS(21,TBM_SETRANGE,FALSE,MAKELONG(0,20));
- MESS(21,TBM_SETPOS,TRUE,10);
- MESS(22,TBM_SETRANGE,FALSE,MAKELONG(0,20));
- MESS(22,TBM_SETPOS,TRUE,10);
- MESS(23,TBM_SETRANGE,FALSE,MAKELONG(0,20));
- MESS(23,TBM_SETPOS,TRUE,20);
- return 1;
-
- case WM_DESTROY:
- BASS_Free();
- break;
- }
- return 0;
- }
-
- int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
- {
- /* check that BASS 2.2 was loaded */
- if (BASS_GetVersion()!=MAKELONG(2,2)) {
- MessageBox(0,"BASS version 2.2 was not loaded","Incorrect BASS.DLL",0);
- return 0;
- }
-
- { // enable trackbar support
- INITCOMMONCONTROLSEX cc={sizeof(cc),ICC_BAR_CLASSES};
- InitCommonControlsEx(&cc);
- }
-
- DialogBox(hInstance,(char*)1000,0,&dialogproc);
-
- return 0;
- }
-