Ihmisellä on kuusi aistia: tunto, näkö, maku ja haju. Taiteen avulla pyritään tyydyttämään kutakin aistia. Tämä koodiesimerkki opettaa, kuinka saat kirkonkello-ääntä, joka ensin muodostetaan äänikortissa ja sitten se tulee ulos kaiuttimistasi, mikäli sinulla on semmoiset / mikäli ne ovat päällä.
Varoitus! Makuasioista ei voi kiistellä, joten jos et tykkää minun biisistä, tee omasi!
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#include <math.h>
int debugbiisinpituus=12000; // 6000ms, sitten ohjelma loppuu;
// 15000 ==15s
// ok, eli eka num meinaa soundin pituutta (44100 on yks sekunti eli toi on soundin värähtelytaajuus)
// toinen, desimaaliluku on sitten äänen arvo (kokeile kaikkea, eka vaikka välillä 0.05f-0.2f
/* float music[] = {
		20000,0.105f,
		20000,0.115f,
		20000,0.125f,
		20000,0.135f,
		20000,0.145f,
		20000,0.155f,
};	*/
unsigned short music[]=
{
	20000,100,
	20000,200,
	10000,10,
	10000,5,
	20000,0,
	20000,100,
	20000,200,
	10000,10,
	10000,20,
	20000,100,
};
void writeAudioBlock(HWAVEOUT hWaveOut, short int *block, DWORD size)
   {
    WAVEHDR header;
    ZeroMemory(&header, sizeof(WAVEHDR));
    header.dwBufferLength = size;
    header.lpData = (LPSTR)block;
    waveOutPrepareHeader(hWaveOut, &header, sizeof(WAVEHDR));
    waveOutWrite(hWaveOut, &header, sizeof(WAVEHDR));
}
 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
 {
	HWAVEOUT hWaveOut;
    WAVEFORMATEX wfx;
    wfx.nSamplesPerSec = 44100;
    wfx.wBitsPerSample = 16;
    wfx.nChannels = 1;
    wfx.cbSize = 0;
    wfx.wFormatTag = WAVE_FORMAT_PCM;
    wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels;
    wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec;
    if(waveOutOpen(
    &hWaveOut,
    WAVE_MAPPER,
    &wfx,
    0,
    0,
    CALLBACK_NULL
        ) != MMSYSERR_NOERROR) {
        fprintf(stderr, "häa");
        exit(1);
    }
		int len=1188200;
		short int *jot=new short int[len];
		static bool dir=false;
		int l=1;
		int kohta=0;
		int kaka=0;
		float rad, ra,raba,wp;
		for(int i=0;i<len;i++)
		{
			if( kaka >= music[kohta]*4 )
			{
				kaka=0;
				kohta+=2;
				if(kohta>64) kohta=0;
			}
			raba=sinf(kaka/100.0f);
			rad=cosf(kaka/50000.0f);
			float fade=((float(music[kohta]*5)-(float)kaka))/float(music[kohta]*4);
			// ra=cosf(kaka*music[kohta+1]);
			ra=cosf(kaka*float(music[kohta+1])*0.001f);
			wp=cosf(i/10000.0f)*31000;
			jot[i]=(ra*rad*raba+wp*ra)*sinf(kaka*0.04f);
			++kaka;
		}
		writeAudioBlock(hWaveOut,jot,len);
	Sleep(debugbiisinpituus);
    waveOutClose(hWaveOut);
    return 0;
 }kiitti
ainii tää oliki mun tekemä
Tää on kyllä tosi hyödyllinen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.