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.