/** * @brief Colled every 0.3 secinds and update text field where represented recording size. */ void Widget::timerProc() { // update the recording/playback counter QString text = "no data"; if (rchan) // recording text = QString::number(BASS_ChannelGetPosition(rchan,BASS_POS_BYTE)); else if (chan) { if (BASS_ChannelIsActive(chan)) // playing text = QString::number(BASS_ChannelGetPosition(chan,BASS_POS_BYTE))+"/"+QString::number(BASS_ChannelGetLength(chan,BASS_POS_BYTE)); else text = QString::number(BASS_ChannelGetLength(chan,BASS_POS_BYTE)); } ui->lineEdit->setText(text); }
QW Player::GetPosition() const { if (stream != NULL) return BASS_ChannelGetPosition(stream, BASS_POS_BYTE); else return 0; }
int GetTime(HSTREAM stream) { QWORD pos = BASS_ChannelGetPosition(stream); float secs = BASS_ChannelBytes2Seconds(stream, pos); secs *= 1000.0f; return (int)secs; }
// window procedure LRESULT CALLBACK SpectrumWindowProc(HWND h, UINT m, WPARAM w, LPARAM l) { switch (m) { case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MOUSEMOVE: if (w&MK_LBUTTON) SetLoopStart(LOWORD(l)*bpp); // set loop start if (w&MK_RBUTTON) SetLoopEnd(LOWORD(l)*bpp); // set loop end return 0; case WM_MBUTTONDOWN: BASS_ChannelSetPosition(chan,LOWORD(l)*bpp,BASS_POS_BYTE); // set current pos return 0; case WM_TIMER: InvalidateRect(h,0,0); // refresh window return 0; case WM_PAINT: if (GetUpdateRect(h,0,0)) { PAINTSTRUCT p; HDC dc; if (!(dc=BeginPaint(h,&p))) return 0; BitBlt(dc,0,0,WIDTH,HEIGHT,wavedc,0,0,SRCCOPY); // draw peak waveform DrawTimeLine(dc,loop[0],0xffff00,12); // loop start DrawTimeLine(dc,loop[1],0x00ffff,24); // loop end DrawTimeLine(dc,BASS_ChannelGetPosition(chan,BASS_POS_BYTE),0xffffff,0); // current pos EndPaint(h,&p); } return 0; case WM_CREATE: win=h; // initialize output if (!BASS_Init(-1,44100,0,win,NULL)) { Error("Can't initialize device"); return -1; } if (!PlayFile()) { // start a file playing BASS_Free(); return -1; } SetTimer(h,0,100,0); // set update timer (10hz) break; case WM_DESTROY: KillTimer(h,0); if (scanthread) { // still scanning killscan=TRUE; WaitForSingleObject((HANDLE)scanthread,1000); // wait for the thread } BASS_Free(); if (wavedc) DeleteDC(wavedc); if (wavebmp) DeleteObject(wavebmp); PostQuitMessage(0); break; } return DefWindowProc(h, m, w, l); }
DWORD CBSoundBuffer::GetPosition() { if (m_Stream) { QWORD len = BASS_ChannelGetPosition(m_Stream, BASS_POS_BYTE); return 1000 * BASS_ChannelBytes2Seconds(m_Stream, len); } else return 0; }
void MusicSelection::checkThatMusicIsPlayingWithinRange() { double currentPosition = BASS_ChannelBytes2Seconds(bgm, (BASS_ChannelGetPosition(bgm, BASS_POS_BYTE))); if (currentPosition > beatMaps[currentSelectedMusicIndex].musicEndPosition || currentPosition < beatMaps[currentSelectedMusicIndex].musicStartPosition) { BASS_ChannelSetPosition(bgm, BASS_ChannelSeconds2Bytes(bgm, beatMaps[currentSelectedMusicIndex].musicStartPosition), BASS_POS_BYTE); BASS_ChannelPlay(bgm, false); } }
unsigned int CClientSound::GetPlayPosition ( void ) { if ( m_pSound ) { QWORD pos = BASS_ChannelGetPosition( m_pSound, BASS_POS_BYTE ); if ( pos != -1 ) return static_cast <unsigned int> ( BASS_ChannelBytes2Seconds( m_pSound, pos ) * 1000 ); } return 0; }
// Non-streams only double CBassAudio::GetPlayPosition ( void ) { // Only relevant for non-streams, which are always ready if valid if ( m_pSound ) { QWORD pos = BASS_ChannelGetPosition( m_pSound, BASS_POS_BYTE ); if ( pos != -1 ) return BASS_ChannelBytes2Seconds( m_pSound, pos ); } return 0; }
// get the beat position in seconds void CALLBACK beatTimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) { if (BASS_FX_TempoGetRateRatio(chan)){ double beatpos; char c[30]; beatpos = BASS_ChannelBytes2Seconds(chan, BASS_ChannelGetPosition(chan, BASS_POS_BYTE)) / BASS_FX_TempoGetRateRatio(chan); sprintf(c,"Beat pos: %0.2f", beatpos); MESS(IDC_SBEAT,WM_SETTEXT,0,c); } timeKillEvent(uTimerID); }
void BASS_AudioInterface::update(float time_increase) { // control playback and return time position int state = BASS_ChannelIsActive(mStream); mTime = BASS_ChannelBytes2Seconds(mStream, BASS_ChannelGetPosition(mStream, BASS_POS_BYTE)); float duration = mClip->getDuration(); if (mTime > duration) { mTime=duration; } }
int CAudio::GetAt() { if (m_bIsOnlineStream) return -1; // Do we have a valid channel? if (m_dwChannel) { long length = BASS_ChannelGetPosition(m_dwChannel, BASS_POS_BYTE); return BASS_ChannelBytes2Seconds (m_dwChannel, length); } return -1; }
pascal void TimerProc(EventLoopTimerRef inTimer, void *inUserData) { float ratio=BASS_FX_TempoGetRateRatio(chan); if (!ratio) return; SetControl32BitValue(GetControl(15),(DWORD)BASS_ChannelBytes2Seconds(chan,BASS_ChannelGetPosition(chan,BASS_POS_BYTE))); // update position { // show the approximate position in MM:SS format char c[50]; DWORD totalsec=GetControl32BitMaximum(GetControl(15))/ratio; DWORD posec=GetControl32BitValue(GetControl(15))/ratio; sprintf(c,"Playing position: %02u:%02u / %02u:%02u",posec/60,posec%60,totalsec/60,totalsec%60); SetStaticText(14,c); } }
void logic() { if (music_started == -1) { BASS_ChannelPlay(music_channel,FALSE); music_started = 1; } QWORD bytepos = BASS_ChannelGetPosition(music_channel, BASS_POS_BYTE); double pos = BASS_ChannelBytes2Seconds(music_channel, bytepos); millis = (float)pos*1000; //printf("millis:%f\n", millis); UpdateShaderParams(); glutPostRedisplay(); }
void PlaybackWidget::update() { //Check if the song is finished, and request the next one from playlist if(state == PLAYING && !BASS_ChannelIsActive(curchan)) { state = STOPPED; emit songOver(); } //Now update the gui elements QWORD pos = BASS_ChannelGetPosition(curchan, BASS_POS_BYTE); int ms = BASS_ChannelBytes2Seconds(curchan, pos); float ratio = (float)ms/cursonglength; ui.playedLbl->setText(msToString(ms)); ui.totalLbl->setText("-" + msToString(cursonglength - ms)); int val = ratio*ui.playSlider->maximum(); ui.playSlider->setValue(val); }
// --[ Method ]--------------------------------------------------------------- // // - Class : CSoundStream // - prototype : bool GetPlayPos(float* pfSeconds) const // // - Purpose : Gets the current playing position (seconds) of the stream. // // ----------------------------------------------------------------------------- bool CSoundStream::GetPlayPos(float* pfSeconds) const { if(!IsValid()) { return false; } QWORD pos = BASS_ChannelGetPosition(m_handle); if(pos == -1) { return false; } *pfSeconds = BASS_ChannelBytes2Seconds(m_handle, pos); return true; }
void PlayIntro() { //WriteDebug("Play Start.\n"); if (setupcfg.music) { #ifdef RELEASETYPE_DEMO BASS_StreamPlay(str,FALSE,0); #else mvxSystem_Play(); #endif //WriteDebug("Music Start.\n"); } int StartTime=timeGetTime(); int Time=0; while (!Done) { if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else if (Keys[VK_ESCAPE]) Done=true; else { glDisable(GL_SCISSOR_TEST); glClear(0x4100); #ifdef RELEASETYPE_DEMO if (setupcfg.music) Time=(int)(BASS_ChannelBytes2Seconds(str,BASS_ChannelGetPosition(str))*100.0f); #else if (setupcfg.music) Time=(int)(mvxSystem_GetSync()/10.0f); #endif else Time=(int)((timeGetTime()-StartTime)/10); //Time+=10; DisplayFrame(Time, MaterialList, SceneList, WorldList, EventList, EventNum); SwapBuffers(hDC); //Sleep(10); //if (Time>10140) Done=true; } } }
// scan the peaks void __cdecl ScanPeaks(DWORD decoder) { DWORD cpos=0,peak[2]={0}; while (!killscan) { DWORD level=BASS_ChannelGetLevel(decoder); // scan peaks DWORD pos; if (peak[0]<LOWORD(level)) peak[0]=LOWORD(level); // set left peak if (peak[1]<HIWORD(level)) peak[1]=HIWORD(level); // set right peak if (!BASS_ChannelIsActive(decoder)) pos=-1; // reached the end else pos=BASS_ChannelGetPosition(decoder,BASS_POS_BYTE)/bpp; if (pos>cpos) { DWORD a; for (a=0;a<peak[0]*(HEIGHT/2)/32768;a++) wavebuf[(HEIGHT/2-1-a)*WIDTH+cpos]=1+a; // draw left peak for (a=0;a<peak[1]*(HEIGHT/2)/32768;a++) wavebuf[(HEIGHT/2+1+a)*WIDTH+cpos]=1+a; // draw right peak if (pos>=WIDTH) break; // gone off end of display cpos=pos; peak[0]=peak[1]=0; } } BASS_StreamFree(decoder); // free the decoder scanthread=0; }
int main(){ MSG message; HSTREAM stream = 0; object *room; object *sphere; object *sphere_copy; rtt_target *rendertarget; rtt_target *fucking_shit; int loading; int bjork_texture; int yo_plus; int carlb; int i; int veldig_kule; int greets; int mothafuckas; vector particles[PARTICLE_COUNT]; make_random_particles(particles, PARTICLE_COUNT, 200); if(!mumps_open("CARL B!!!!1",WIDTH,HEIGHT,32,32,-1,FULLSCREEN)) error("kunne ikke lage bartevindu"); if(!init_extensions()){ mumps_close(); error("kunne ikke bruke fet opengl-extension"); } if (!BASS_Init(-1, 44100, 0, 0, 0)) { mumps_close(); error("kunne ikke åpne fet lyd"); } stream = BASS_StreamCreateFile(FALSE, "data/uglespy.ogg", 0, 0, BASS_MP3_SETPOS | BASS_STREAM_PRESCAN | 0); if (!stream) { BASS_Free(); mumps_close(); error("kunne ikke åpne fet lyd 2.0"); } loading = load_texture("loading.jpg", FALSE); if(loading==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } glClearColor(0,0,0,0); glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); fullscreen_image(loading); glFlush(); mumps_update(); room = load_object("cylinder01.kro"); if(!room){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett objekt"); } sphere = load_object("sphere01.kro"); if(!sphere){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett objekt"); } sphere_copy = copy_object(sphere); bjork_texture = load_texture("bjork.jpg", FALSE); if(bjork_texture==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } yo_plus = load_texture("yo_plus.jpg", FALSE); if(yo_plus==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } carlb = load_texture("carlb.jpg", FALSE); if(carlb==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } veldig_kule = load_texture("veldig_kule.jpg", FALSE); if(veldig_kule==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } greets = load_texture("greets.jpg", FALSE); if(greets==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } mothafuckas = load_texture("mothefuckas.jpg", FALSE); if(mothafuckas==-1){ BASS_StreamFree(stream); BASS_Free(); mumps_close(); error("kunne ikke åpne fett bilde"); } rendertarget = init_rtt(512,256,(float)WIDTH/(float)HEIGHT, FALSE, FALSE); fucking_shit = init_rtt(512,256,(float)WIDTH/(float)HEIGHT, FALSE, TRUE); init_blur(256,256); glEnable(GL_NORMALIZE); BASS_Start(); BASS_ChannelPlay(stream, FALSE); do { QWORD pos = BASS_ChannelGetPosition(stream, BASS_POS_BYTE); double time = BASS_ChannelBytes2Seconds(stream, pos); glViewport(0,0,mumps_width,mumps_height); if(time<25.55f){ glClearColor(1,1,1,0); glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(120, ASPECT, 1.f, 500); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glFogi(GL_FOG_MODE, GL_EXP2); glFogfv(GL_FOG_COLOR,black_color); glFogf(GL_FOG_DENSITY, 0.02f); glEnable(GL_FOG); set_camera( vector_make( // pos (float)sin(time*0.1f)*50, (float)sin(time*1.2f*0.1f+1)*50, (float)cos(sin(time*0.1f)-time*0.1f)*50 ), vector_make( // look_at 0, 0, 0 ), 0 ); draw_particles(particles,PARTICLE_COUNT,yo_plus, (float)15); if(time<2){ float alpha = 1.f-time*0.5f; glPushAttrib(GL_ALL_ATTRIB_BITS); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); glColor4f(1,1,1, alpha ); glEnable(GL_BLEND); fullscreen_image(loading); glPopAttrib(); } if(time>17.5f){ float alpha = (time-17.5); glPushAttrib(GL_ALL_ATTRIB_BITS); glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT); glBlendFunc( GL_SRC_ALPHA, GL_ONE ); glColor4f(1,1,1, alpha ); glEnable(GL_BLEND); fullscreen_image(carlb); glPopAttrib(); } }else if(time<51.0f){ float flash = 1.f-(time-25.55f); glClearColor(1,1,1,0); glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(90, ASPECT, 1.f, 500); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glDisable(GL_FOG); gluLookAt( sin(time*0.1f)*90,-50,cos(time*0.1f)*90, 0,-30,0, 0,1,0 ); start_rtt(rendertarget); set_light(0, (float)sin(time)*50,0,(float)cos(time)*50,TRUE); set_light(1, (float)sin(time+1)*50,0,(float)cos(time+1)*50,TRUE); glEnable(GL_LIGHTING); glEnable(GL_DEPTH_TEST); glPushMatrix(); glTranslatef(100,0,-100); draw_object(room); glPopMatrix(); glPushMatrix(); glTranslatef(0,-30,0); glScalef(0.7f,0.7f,0.7f); glRotatef(time*15,1,0,1); glRotatef(time*15,1,0,0); glRotatef(time*15.2f,0,1,0); glRotatef(time*15,0,0,1); glRotatef(time*25,1,0,0); glRotatef(time*15.2f,0,1,0); blob_distort(sphere, sphere_copy, vector_make((float)sin(time),time,-time), vector_make( (float)(1+sin(time))*0.1f, (float)(1+sin(time))*0.1f, (float)(1+sin(time))*0.1f ),vector_make(0.3f,0.3f,0.3f) ); draw_object(sphere_copy); glPopMatrix(); end_rtt(rendertarget); i = blur((float)sin(time*0.3f)*0.3f, 0.1f+(1+(float)sin(time*0.1f))*0.2f, 0.2f, FALSE, rendertarget->texture); fullscreen_image(i); glEnable(GL_COLOR_MATERIAL); glColor4f(1,1,1, (1+(float)sin(time*0.5f))*0.3f ); glBlendFunc( GL_SRC_ALPHA, GL_ONE ); glEnable(GL_BLEND); fullscreen_image(bjork_texture); glDisable(GL_BLEND); if(time>38.35f){ flash = 1.f-(time-38.4f); if(time>44.75f){ flash = 1.f-(time-44.75f); } } if(flash<0) flash = 0; superflash(flash); if(time>38.35f){ overlay(veldig_kule, 1); } }else if(time<(60+16.8f)){ float flash = (1.f-(time-51.f)); float flash2 = sin(-(3.1415f/2)+(time-51.f)*(117.5f/60.f)*8); if(flash<0) flash = 0; flash *= flash; flash2 *= (1+flash2)*0.5f; flash2 *= 20; start_rtt(fucking_shit); draw_dilldallscene(room, sphere, sphere_copy,time,flash,flash2); end_rtt(fucking_shit); glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); draw_dilldallscene(room, sphere, sphere_copy,time,flash,flash2); glLoadIdentity(); glEnable(GL_COLOR_MATERIAL); glColor4f(1,1,1, 0.5+(1+(float)sin(time*0.5f))*0.5f ); glBlendFunc( GL_SRC_ALPHA, GL_ONE ); glEnable(GL_BLEND); fullscreen_image_flip(fucking_shit->texture,1); fullscreen_image_flip(fucking_shit->texture,2); fullscreen_image_flip(fucking_shit->texture,3); glDisable(GL_BLEND); fuss(50,time, 1, 1, 0.1f); if(time>(60+3.9f)){ flash=(1.f-(time-(60+3.9f))); overlay(greets, 1); } superflash(flash); }else{ float flash = (1.f-(time-(60+16.8f))); fullscreen_image(mothafuckas); superflash(flash); if(time>(60+23.f)){ float flash = (time-(60+23.f)); superflash2(flash*0.5f); } } glFlush(); mumps_update(); if(time>60+30) PostQuitMessage(0); while(PeekMessage(&message,NULL,0,0,PM_REMOVE)){ TranslateMessage(&message); DispatchMessage(&message); if(message.message == WM_QUIT) break; } }while(message.message!=WM_QUIT && !GetAsyncKeyState(VK_ESCAPE)); BASS_StreamFree(stream); BASS_Free(); mumps_close(); MessageBox(NULL,"Frigi minnet ditt sjøl, taper","In your face",MB_OK); return 0; }
void CALLBACK GetBeatPos_Callback(DWORD handle, double beatpos, DWORD user) { double curpos; curpos = BASS_ChannelBytes2Seconds(handle, BASS_ChannelGetPosition(handle, BASS_POS_BYTE)); timeSetEvent((UINT)((beatpos - curpos) * 1000.0f), 0, (LPTIMECALLBACK)beatTimerProc, user, TIME_ONESHOT); }
qint64 BassPlayer::position() const { return BASS_ChannelBytes2Seconds(chan, BASS_ChannelGetPosition(chan, BASS_POS_BYTE)) * BASS_POSITION_MULTIPLIER - startPosition(); }
int main(){ BOOL done = FALSE; MSG msg; IDirect3DDevice9 *device = NULL; IDirect3DSurface9 *main_rendertarget = NULL; D3DFORMAT format; float old_time = 0; /* render-to-texture-stuff */ IDirect3DTexture9 *rtt_texture; IDirect3DSurface9 *rtt_surface; IDirect3DTexture9 *rtt_32_texture; IDirect3DSurface9 *rtt_32_surface; /* textures used from mainloop */ int white, black; int odd_is_back_again[4]; int at_the_gathering_2003[4]; int o_d_d_in_your_face[4]; int world_domination[4]; int back_once_again[3]; int were_back; int cred[4]; int mad_props[4]; int not_eph[4]; int piss_the_fuck_off[11]; int hardcore; int refmap, refmap2; int eatyrcode; int code_0, code_1; int overlaytest; int circle_particle; /* special-textures */ int rtt_texture_id; int rtt_32_texture_id; int video_texture_id; int dilldall,dilldall2; int metaball_text; /* videos */ video *vid; /* 3d-scenes */ scene *fysikkfjall; scene *startblob; scene *inni_abstrakt; scene *korridor; scene *skjerm_rom; scene *bare_paa_lissom; format = D3DFMT_X8R8G8B8; device = d3dwin_open(TITLE, WIDTH, HEIGHT, format, FULLSCREEN); if(!device){ format = D3DFMT_A8R8G8B8; device = d3dwin_open(TITLE, WIDTH, HEIGHT, format, FULLSCREEN); if(!device){ format = D3DFMT_X1R5G5B5; device = d3dwin_open(TITLE, WIDTH, HEIGHT, format, FULLSCREEN); if(!device){ format = D3DFMT_R5G6B5; device = d3dwin_open(TITLE, WIDTH, HEIGHT, format, FULLSCREEN); if(!device) error("failed to initialize Direct3D9"); } } } #ifdef BIGSCREEN set_gamma(device,1.05f); #endif if (!BASS_Init(1, 44100, BASS_DEVICE_LATENCY, win, NULL)) error("failed to initialize BASS"); fp = file_open("worlddomination.ogg"); if (!fp) error("music-file not found"); music_file = BASS_StreamCreateFile(1, fp->data, 0, fp->size, 0); /*** music ***/ // if(!pest_open(win)) error("failed to initialize DirectSond"); // if(!pest_load("worlddomination.ogg",0)) error("failed to load music-file"); /*** subsystems ***/ init_tunnel(); video_init(); if(!init_particles(device)) error("failed to initialize"); if(!init_overlays(device)) error("f**k a duck"); if(!init_marching_cubes(device)) error("screw a kangaroo"); make_random_particles(particles, PARTICLES, vector_make(0,-180,0), 500); make_random_particles(particles2, PARTICLES2, vector_make(0,-180,0), 500); make_random_particles(particles3, PARTICLES3, vector_make(0,0,0), 800); /*** rendertextures ***/ if (IDirect3DDevice9_CreateTexture(device, 512, 256, 0,D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &rtt_texture, NULL)!=D3D_OK) error("failed to create rendertarget-texture"); if (IDirect3DTexture9_GetSurfaceLevel(rtt_texture,0,&rtt_surface)!=D3D_OK) error("could not get kvasi-backbuffer-surface"); if ((rtt_texture_id=texture_insert(device, "rendertexture.jpg", rtt_texture))==-1) error("fakk off!"); if(IDirect3DDevice9_CreateTexture(device,16,16,0,D3DUSAGE_RENDERTARGET|D3DUSAGE_AUTOGENMIPMAP,D3DFMT_X8R8G8B8,D3DPOOL_DEFAULT, &rtt_32_texture, NULL)!=D3D_OK) error("failed to create rendertarget-texture"); if(IDirect3DTexture9_GetSurfaceLevel(rtt_32_texture,0,&rtt_32_surface)!=D3D_OK) error("could not get kvasi-backbuffer-surface"); if((rtt_32_texture_id=texture_insert(device, "rendertexture2.jpg", rtt_32_texture))==-1) error("fakk off!"); /*** textures ***/ /* solid colors for fades etc */ if((white=texture_load(device,"white.png",FALSE))==-1) error("shjit!"); if((black=texture_load(device,"black.png",FALSE))==-1) error("shjit!"); /* textoverlays */ if((odd_is_back_again[0]=texture_load(device,"odd_is_back_again_0.png",FALSE))==-1) error("failed to load image"); if((odd_is_back_again[1]=texture_load(device,"odd_is_back_again_1.png",FALSE))==-1) error("failed to load image"); if((odd_is_back_again[2]=texture_load(device,"odd_is_back_again_2.png",FALSE))==-1) error("failed to load image"); if((odd_is_back_again[3]=texture_load(device,"odd_is_back_again_3.png",FALSE))==-1) error("failed to load image"); if((at_the_gathering_2003[0]=texture_load(device,"at_the_gathering_2003_0.png",FALSE))==-1) error("failed to load image"); if((at_the_gathering_2003[1]=texture_load(device,"at_the_gathering_2003_1.png",FALSE))==-1) error("failed to load image"); if((at_the_gathering_2003[2]=texture_load(device,"at_the_gathering_2003_2.png",FALSE))==-1) error("failed to load image"); if((at_the_gathering_2003[3]=texture_load(device,"at_the_gathering_2003_3.png",FALSE))==-1) error("failed to load image"); if((back_once_again[0]=texture_load(device,"back_once_again_0.png",TRUE))==-1) error("failed to load image"); if((back_once_again[1]=texture_load(device,"back_once_again_1.png",TRUE))==-1) error("failed to load image"); if((back_once_again[2]=texture_load(device,"back_once_again_2.png",TRUE))==-1) error("failed to load image"); if((o_d_d_in_your_face[0]=texture_load(device,"o_d_d_in_your_face_0.png",TRUE))==-1) error("failed to load image"); if((o_d_d_in_your_face[1]=texture_load(device,"o_d_d_in_your_face_1.png",TRUE))==-1) error("failed to load image"); if((o_d_d_in_your_face[2]=texture_load(device,"o_d_d_in_your_face_2.png",TRUE))==-1) error("failed to load image"); if((o_d_d_in_your_face[3]=texture_load(device,"o_d_d_in_your_face_3.png",TRUE))==-1) error("failed to load image"); if((world_domination[0]=texture_load(device,"world_domination_0.png",TRUE))==-1) error("failed to load image"); if((world_domination[1]=texture_load(device,"world_domination_1.png",TRUE))==-1) error("failed to load image"); if((world_domination[2]=texture_load(device,"world_domination_2.png",TRUE))==-1) error("failed to load image"); if((world_domination[3]=texture_load(device,"world_domination_3.png",TRUE))==-1) error("failed to load image"); if((were_back=texture_load(device,"were_back.png",TRUE))==-1) error("failed to load image"); if((cred[0]=texture_load(device,"cred_0.png",TRUE))==-1) error("failed to load image"); if((cred[1]=texture_load(device,"cred_1.png",TRUE))==-1) error("failed to load image"); if((cred[2]=texture_load(device,"cred_2.png",TRUE))==-1) error("failed to load image"); if((cred[3]=texture_load(device,"cred_3.png",TRUE))==-1) error("failed to load image"); if((mad_props[0]=texture_load(device,"mad_props_0.png",TRUE))==-1) error("failed to load image"); if((mad_props[1]=texture_load(device,"mad_props_1.png",TRUE))==-1) error("failed to load image"); if((mad_props[2]=texture_load(device,"mad_props_2.png",TRUE))==-1) error("failed to load image"); if((mad_props[3]=texture_load(device,"mad_props_3.png",TRUE))==-1) error("failed to load image"); if((not_eph[0]=texture_load(device,"not_eph_0.png",TRUE))==-1) error("failed to load image"); if((not_eph[1]=texture_load(device,"not_eph_1.png",TRUE))==-1) error("failed to load image"); if((not_eph[2]=texture_load(device,"not_eph_2.png",TRUE))==-1) error("failed to load image"); if((not_eph[3]=texture_load(device,"not_eph_3.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[0]=texture_load(device,"piss_the_fuck_off_0.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[1]=texture_load(device,"piss_the_fuck_off_1.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[2]=texture_load(device,"piss_the_fuck_off_2.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[3]=texture_load(device,"piss_the_fuck_off_3.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[4]=texture_load(device,"piss_the_fuck_off_4.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[5]=texture_load(device,"piss_the_fuck_off_5.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[6]=texture_load(device,"piss_the_fuck_off_6.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[7]=texture_load(device,"piss_the_fuck_off_7.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[8]=texture_load(device,"piss_the_fuck_off_8.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[9]=texture_load(device,"piss_the_fuck_off_9.png",TRUE))==-1) error("failed to load image"); if((piss_the_fuck_off[10]=texture_load(device,"piss_the_fuck_off_10.png",TRUE))==-1) error("failed to load image"); if((hardcore=texture_load(device,"hardcore.png",TRUE))==-1) error("failed to load image"); /* other textures */ if((circle_particle=texture_load(device,"circle_particle.jpg",FALSE))==-1) error("shjit!"); if((refmap=texture_load(device,"fysikkfjall/refmap.jpg",FALSE))==-1) error("shjit!"); if((refmap2=texture_load(device,"refmap2.jpg",FALSE))==-1) error("shjit!"); if((eatyrcode=texture_load(device,"eatyrcode.jpg",FULLSCREEN_HACK))==-1) error("shjit!"); if((code_0=texture_load(device,"code-0.jpg",FALSE))==-1) error("shjit!"); if((code_1=texture_load(device,"code-1.jpg",FALSE))==-1) error("shjit!"); if((overlaytest=texture_load(device,"overlaytest.jpg",FALSE))==-1) error("shjit!"); if((dilldall=texture_load(device,"dilldall.png",FALSE))==-1) error("shjit!"); if((dilldall2=texture_load(device,"dilldall2.png",FALSE))==-1) error("shjit!"); if((metaball_text=texture_load(device,"metaballs.png",TRUE))==-1) error("shjit!"); /*** video ***/ if(!(vid=video_load(device,"test.kpg"))) error("fæck!"); video_texture_id = texture_insert(device, "skjerm_rom/skjerm_tom.tga", vid->texture); /*** misc stuff ***/ /* main rendertarget */ IDirect3DDevice9_GetRenderTarget(device,0,&main_rendertarget); /* default state */ IDirect3DDevice9_CreateStateBlock(device, D3DSBT_ALL, &default_state); init_defaultstate(device); IDirect3DStateBlock9_Capture(default_state); /*** 3d scenes ***/ if(!(fysikkfjall=load_scene(device,"fysikkfjall/fysikkfjall.krs"))) error("failed to load 3d scene"); if(!(startblob=load_scene(device,"startblob/startblob.krs"))) error("failed to load 3d scene"); if(!(inni_abstrakt=load_scene(device,"inni_abstrakt/inni_abstrakt.krs"))) error("failed to load 3d scene"); if(!(korridor=load_scene(device,"korridor/korridor.krs"))) error("failed to load 3d scene"); if(!(skjerm_rom=load_scene(device,"skjerm_rom/skjerm_rom.krs"))) error("failed to load 3d scene"); if(!(bare_paa_lissom=load_scene(device,"bare_paa_lissom/bare_paa_lissom.krs"))) error("failed to load 3d scene"); // pest_play(); BASS_Start(); BASS_StreamPlay(music_file, 1, 0); do{ grid g; int i; matrix m, temp, temp_matrix; matrix marching_cubes_matrix; long long bytes_played = BASS_ChannelGetPosition(music_file); float time = bytes_played * (1.0 / (44100 * 2 * 2)); // float time = pest_get_pos()+0.05f; float delta_time = time-old_time; int beat = (int)(time*((float)BPM/60.f)); if(time_index<(sizeof(timetable)/4)){ while(timetable[time_index]<time) time_index++; } #ifdef _DEBUG printf("time: %2.2f, delta_time: %2.2f, time_index: %i, beat: %i \r",time,delta_time,time_index,beat); #endif IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); IDirect3DStateBlock9_Apply(default_state); IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL, 0, 1.0f, 0); // IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_ZBUFFER, 0, 1.0f, 0); IDirect3DDevice9_BeginScene(device); #if 1 if(time_index<40){ if(time_index>0&&time_index<5){ draw_overlay(device,odd_is_back_again[time_index-1],0,0,1,FALSE); }else if(time_index>4&&time_index<19){ float itime = time*10; grid_flat(g,0,0); for(i=0;i<7;i++){ int scale = (time_index&1); grid_wave(g,(float)sin(itime-i+sin(i-itime))*0.3f*scale,(float)cos(itime*0.69f+i*0.733f)*0.3f*scale,7,(float)sin(itime+i*0.1f)*0.5f*scale); } draw_grid(device, g, odd_is_back_again[3], FALSE); }else if(time_index>=19){ float itime = (time-timetable[18])*0.5f; grid_flat(g,0,0); for(i=0;i<7;i++){ grid_wave(g,(float)sin(time-i+sin(i-time))*0.3f,(float)cos(time*0.69f+i*0.733f)*0.3f,7, itime*itime); } draw_grid(device, g, odd_is_back_again[3], FALSE); } if(time_index>20&&time_index<25){ draw_overlay(device,at_the_gathering_2003[(time_index-21)%4],0,0,1,TRUE); }else if(time_index>=25&&time_index<38){ float itime = time*10; grid_flat(g,0,0); for(i=0;i<10;i++){ int scale = (time_index&1); grid_wave(g,(float)sin(itime-i+sin(i-itime))*0.3f*scale,(float)cos(itime*0.69f+i*0.733f)*0.3f*scale,7,(float)sin(itime+i*0.1f)*0.5f*scale); } draw_grid(device,g,at_the_gathering_2003[3],TRUE); }else if(time_index>=38){ float itime = (time-timetable[37])*0.5f; grid_flat(g,0,0); for(i=0;i<10;i++){ grid_wave(g,(float)sin(time-i+sin(i-time))*0.3f,(float)cos(time*0.69f+i*0.733f)*0.3f,7, itime*itime); } draw_grid(device,g,at_the_gathering_2003[3],TRUE); } }else if(time_index<52){ animate_scene(inni_abstrakt,(time-timetable[39])); draw_scene(device,inni_abstrakt,0,TRUE); flash(device,white,time,timetable[39],1); if(time_index<43){ draw_overlay(device, back_once_again[(time_index-40)%3],0,0,1,FALSE); }else if(time_index<47){ draw_overlay(device, o_d_d_in_your_face[(time_index-43)%4],0,0,1,FALSE); }else if(time_index<51){ draw_overlay(device, world_domination[(time_index-47)%4],0,0,1,FALSE); }else{ draw_overlay(device, were_back,0,0,(time-timetable[51]),FALSE); } draw_overlay(device,dilldall,sin(sin(time)*0.07f+(((beat+1)/2)*0.8f)),sin(time*0.03337f+(((beat+1)/2)*0.14f)),0.5f,TRUE); draw_overlay(device,dilldall2,sin(sin(time*0.1f)*0.07f+time*0.1f+(((beat+1)/2)*0.8f)),sin(time*0.01337f+(((beat+1)/2)*0.14f)),0.5f,TRUE); }else if(time_index<69){ animate_scene(startblob,(time-timetable[39]-0.27f+((beat+1)&2))*0.74948f); startblob->cameras[0].fog = TRUE; startblob->cameras[0].fog_start = 100.f; startblob->cameras[0].fog_end = 700.f; if(time_index>=53 && time_index<66 && time_index&1 ){ float f = fade(timetable[time_index-1],1.7f,time,0.5f,0); f *= f; f *= 2; if(f>0.f) IDirect3DDevice9_SetRenderTarget(device,0,rtt_surface); draw_scene(device,startblob,0,TRUE); draw_particles(device, particles3, PARTICLES3, code_0); if(f>0.f){ IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); draw_radialblur(device,0,0,f,0,rtt_texture_id, FALSE); } if(time_index<61) draw_overlay(device,cred[((time_index/2)-2)%4],0,0,f*3,FALSE); }else{ draw_scene(device,startblob,0,TRUE); draw_particles(device, particles3, PARTICLES3, circle_particle); } if(time_index>=54&& !(time_index&1)){ float f = fade(timetable[time_index-1],1.8f,time,1.f,0)*0.8f; IDirect3DDevice9_SetRenderTarget(device,0,rtt_32_surface); draw_scene(device,startblob,0,TRUE); draw_particles(device, particles3, PARTICLES3, code_0); IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT); draw_overlay(device,rtt_32_texture_id,0,0,f,TRUE); draw_overlay(device,rtt_32_texture_id,0,0,f,TRUE); IDirect3DDevice9_SetSamplerState(device, 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); } flash(device,were_back,time,timetable[51],2); flash(device,white,time,timetable[51],1); }else if(time_index<79){ for(i=0;i<BALLS;i++){ balls[i].pos.x = (float)sin(time+i-sin((float)i*0.1212111f))*0.35f; balls[i].pos.y = (float)cos(time-(float)i*0.29342111f)*0.35f; balls[i].pos.z = (float)sin(time*0.31121f+sin(i-time))*0.35f; balls[i].r = 0.15f + (float)sin(time+i)*0.01f; balls[i].pos = vector_normalize(balls[i].pos); balls[i].pos = vector_scale(balls[i].pos, (float)(cos(i*0.11131f-time*0.55311f)+sin(time+(float)sin(time-i+time*0.3f)))*0.2f ); } animate_scene(korridor,(time-timetable[68])*0.65f ); draw_scene(device,korridor,(beat/4)&1,TRUE); memcpy(temp,korridor->objects[korridor->object_count-1]->mat,sizeof(matrix)); matrix_scale(marching_cubes_matrix,vector_make(120,120,120)); matrix_multiply(marching_cubes_matrix,temp,marching_cubes_matrix); matrix_rotate(temp,vector_make(time,-time,time*0.5f+sin(time))); matrix_multiply(marching_cubes_matrix,marching_cubes_matrix,temp); IDirect3DDevice9_SetTransform( device, D3DTS_WORLD, (D3DMATRIX*)&marching_cubes_matrix ); fill_metafield_blur(balls, BALLS,0.98f); march_my_cubes_opt(balls, BALLS, 0.9f); IDirect3DDevice9_SetRenderState(device, D3DRS_CULLMODE, D3DCULL_NONE); set_texture(device,0,refmap2); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR ); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_ADD); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG2, D3DTA_CURRENT); draw_marched_cubes(device); flash(device,white,time,timetable[68],1); if(time_index>69&&time_index<74){ draw_overlay(device,mad_props[(time_index+2)%4],0,0,1,FALSE); }else if(time_index>73&&time_index<77){ draw_overlay(device,not_eph[(time_index+2)%4],0,0,1,FALSE); }else if(time_index==77){ float f = fade(timetable[76],2.5f,time,1,0); draw_overlay(device,not_eph[3],0,0,f,FALSE); } } if(time_index>77&&time_index<92){ float f = fade(timetable[77],timetable[78]-timetable[77],time,0,1); draw_overlay(device,eatyrcode,0,0,f,FALSE); if(time>109.5f){ IDirect3DStateBlock9_Apply(default_state); animate_particles(particles, PARTICLES, delta_time*30); animate_particles(particles2, PARTICLES2, delta_time*28); draw_particles(device, particles, PARTICLES, code_0); draw_particles(device, particles2, PARTICLES2, code_1); } if(time_index>79&&time_index<90){ draw_overlay(device,piss_the_fuck_off[(time_index-80)%11],0,0,1,FALSE); }else if(time_index==90){ float f = fade(timetable[89],2,time,1,0); draw_overlay(device,piss_the_fuck_off[10],0,0,f,FALSE); } if(time_index==91){ float f = fade(timetable[90],2,time,1,0); draw_overlay(device,hardcore,0,0,f,FALSE); } }else if(time_index>91 && time_index<97){ animate_scene(skjerm_rom,time); video_update(vid, time); draw_scene(device,skjerm_rom,((beat/4)&1),TRUE); draw_overlay(device,dilldall,sin(sin(time)*0.07f+(((beat+1)/2)*0.8f)),sin(time*0.03337f+(((beat+1)/2)*0.14f)),0.5f,TRUE); draw_overlay(device,dilldall2,sin(sin(time*0.1f)*0.07f+time*0.1f+(((beat+1)/2)*0.8f)),sin(time*0.01337f+(((beat+1)/2)*0.14f)),0.5f,TRUE); if(time_index>92) draw_overlay(device, world_domination[(time_index-93)%4],0,0,1,FALSE); }else if(time_index>96&&time_index<104){ grid_zero(g); matrix_translate(m, vector_make(cos(time)*1.5f, sin(time)*1.5f,time*10)); matrix_rotate(temp_matrix, vector_make(sin(time*0.8111f)*0.2f,sin(time*1.2f)*0.2f,time)); matrix_multiply(m,m,temp_matrix); render_tunnel(g,m); matrix_rotate(temp_matrix, vector_make(0,M_PI,0)); matrix_multiply(m,m,temp_matrix); render_tunnel(g,m); matrix_rotate(temp_matrix, vector_make(M_PI,0,0)); matrix_multiply(m,m,temp_matrix); render_tunnel(g,m); grid_add_noice(g,sin(time)*0.1f); draw_grid(device, g, circle_particle, FALSE); if(time_index>97&&time_index<102){ float f = 1; if(time_index==101) f = fade(timetable[100],3,time,1,0); draw_overlay(device, o_d_d_in_your_face[(time_index-42)%4],0,0,f,FALSE); } } if(time_index>101 && time_index<104){ float f = fade(timetable[101],8,time,0,1); float f2 = fade(timetable[101],4,time,0,1); draw_overlay(device,black,0,0,f2,FALSE); IDirect3DDevice9_SetRenderTarget(device,0,rtt_surface); IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0, 1.0f, 0); IDirect3DStateBlock9_Apply(default_state); animate_scene(bare_paa_lissom,time-timetable[101]); draw_scene(device,bare_paa_lissom,0,TRUE); time *=0.5f; for(i=0;i<BALLS2;i++){ balls2[i].pos.x = (float)sin(time+i-sin((float)i*0.1212111f))*0.35f; balls2[i].pos.y = (float)cos(time-(float)i*0.29342111f)*0.35f; balls2[i].pos.z = (float)sin(time*0.31121f+sin(i-time))*0.35f; balls2[i].r = 0.15f + (float)sin(time+i)*0.01f; balls2[i].pos = vector_normalize(balls2[i].pos); balls2[i].pos = vector_scale(balls2[i].pos, (float)(cos(i*0.11131f-time*0.55311f)+sin(time+(float)sin(time-i+time*0.3f)))*0.2f ); } memcpy(temp,bare_paa_lissom->objects[bare_paa_lissom->object_count-1]->mat,sizeof(matrix)); matrix_scale(marching_cubes_matrix,vector_make(120,120,120)); matrix_multiply(marching_cubes_matrix,temp,marching_cubes_matrix); IDirect3DDevice9_SetTransform( device, D3DTS_WORLD, (D3DMATRIX*)&marching_cubes_matrix ); fill_metafield(balls2, BALLS2); march_my_cubes_opt(balls2, BALLS2, 0.9f); IDirect3DDevice9_SetRenderState(device, D3DRS_CULLMODE, D3DCULL_NONE); set_texture(device,0,refmap); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR ); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_ADD); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG2, D3DTA_CURRENT); draw_marched_cubes(device); IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); draw_overlay(device,rtt_texture_id,0,0,f,TRUE); if(time_index==103){ float f; time *= 2; f = fade(timetable[time_index-1],3,time,1,0); draw_overlay(device,metaball_text,0,0,f,FALSE); flash(device,white,time,timetable[time_index-1],1); } } if(time_index==104){ float f = fade(timetable[103],timetable[104]-timetable[103],time,0,1); animate_scene(korridor,180-(time-timetable[time_index-1])*0.8f ); draw_scene(device,korridor,(beat/4)&1,TRUE); draw_overlay(device,black,0,0,f,FALSE); } if(time_index==105){ float f = fade(timetable[104],timetable[105]-timetable[104],time,0,1); float t = (time-timetable[time_index-1])*0.6f+2.2f; animate_scene(fysikkfjall,t); draw_scene(device,fysikkfjall,0,TRUE); draw_overlay(device,black,0,0,f,FALSE); } #endif /* */ /* draw_overlay(device, were_back, (1+sin(time))*0.5f, TRUE); */ // animate_scene(risterom,time); // draw_scene(device,risterom,0,TRUE); #if 0 //helvete_har_frosset draw_overlay(device, eatyrcode, 1,FALSE); IDirect3DStateBlock9_Apply(default_state); animate_particles(particles, PARTICLES, delta_time*30); animate_particles(particles2, PARTICLES2, delta_time*28); draw_particles(device, particles, PARTICLES, code_0); draw_particles(device, particles2, PARTICLES2, code_1); #endif #ifdef pikk // IDirect3DDevice9_SetRenderTarget(device,0,rtt_surface); IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0, 1.0f, 0); draw_overlay(device, eatyrcode, TRUE); animate_scene(startblob,(time-timetable[39]-0.27f)*0.7453f); draw_scene(device,startblob,0,FALSE); draw_particles(device, particles, PARTICLES, code_0); draw_particles(device, particles2, PARTICLES2, code_1); // IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); /* draw_radialblur(device, (float)sin(time)*0.2f, (float)sin(-time*0.331f)*0.13f, (float)(2+(float)sin(time*0.5f))*0.2f, 0,//sin(time)*0.25f, rtt_texture_id, TRUE); animate_scene(fysikkfjall,time); draw_scene(device,fysikkfjall,0,FALSE); */ // draw_overlay(device, rtt_texture_id, TRUE); #endif // draw_overlay(device, eatyrcode, FALSE); // video_update(vid, time); #if 0 // IDirect3DDevice9_SetRenderTarget(device,0,rtt_surface); animate_scene(testscene,time); // morph_object(testscene->objects[0], time ); draw_scene(device,testscene,0,TRUE); // draw_particles(device, particles, PARTICLES, particle); // IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); #endif #if 0 time *=0.5f; for(i=0;i<BALLS2;i++){ balls2[i].pos.x = (float)sin(time+i-sin((float)i*0.1212111f))*0.35f; balls2[i].pos.y = (float)cos(time-(float)i*0.29342111f)*0.35f; balls2[i].pos.z = (float)sin(time*0.31121f+sin(i-time))*0.35f; balls2[i].r = 0.15f + (float)sin(time+i)*0.01f; balls2[i].pos = vector_normalize(balls2[i].pos); balls2[i].pos = vector_scale(balls2[i].pos, (float)(cos(i*0.11131f-time*0.55311f)+sin(time+(float)sin(time-i+time*0.3f)))*0.2f ); // balls2[i].pos.x *= 2.8f; } matrix_translate(temp,vector_make(0,0,87)); matrix_scale(marching_cubes_matrix,vector_make(50,50,50)); matrix_multiply(marching_cubes_matrix,temp,marching_cubes_matrix); IDirect3DDevice9_SetTransform( device, D3DTS_WORLD, (D3DMATRIX*)&marching_cubes_matrix ); fill_metafield(balls2, BALLS2); // fill_metafield_blur(balls, BALLS,0.98f); march_my_cubes_opt(balls2, BALLS2, 0.9f); // march_my_cubes(0.9f); IDirect3DDevice9_SetRenderState(device, D3DRS_CULLMODE, D3DCULL_CW); set_texture(device,0,refmap); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR ); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_ADD); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE); IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLORARG2, D3DTA_CURRENT); draw_marched_cubes(device); #endif #if 0 // time *= 0.5f; grid_zero(g); // for(i=0;i<10;i++) // grid_wave(g,sin(time-i+sin(i-time))*0.3f,cos(time*0.69f+i*0.733f)*0.3f,7,sin(time+i*0.1f)*0.5f); matrix_translate(m, vector_make(cos(time)*1.5f, sin(time)*1.5f,time*10)); matrix_rotate(temp_matrix, vector_make(sin(time*0.8111f)*0.2f,sin(time*1.2f)*0.2f,time)); matrix_multiply(m,m,temp_matrix); // empty_grid( grid ); render_tunnel(g,m); matrix_rotate(temp_matrix, vector_make(0,M_PI,0)); matrix_multiply(m,m,temp_matrix); render_tunnel(g,m); matrix_rotate(temp_matrix, vector_make(M_PI,0,0)); matrix_multiply(m,m,temp_matrix); render_tunnel(g,m); // tyfuus_expand_grid( screen, grid, texture ); grid_add_noice(g,sin(time)*0.1f); draw_grid(device, g, circle_particle, FALSE); #endif // IDirect3DDevice9_SetRenderTarget(device,0,main_rendertarget); // video_update(vid,time); /* draw_radialblur(device, (float)sin(time)*0.2f, (float)sin(-time*0.331f)*0.13f, (float)(1+(float)sin(time*0.5f))*0.2f, 0,//sin(time)*0.25f, rtt_texture_id, FALSE); */ // IDirect3DStateBlock9_Apply(default_state); // draw_overlay(device,rtt_texture_id,FALSE); // draw_overlay(device,fullscreen,FALSE); // draw_radialblur(device,0,sin(time*0.2f)*2.f, rtt_texture_id); // IDirect3DDevice9_StretchRect(device,main_rendertarget,NULL,rtt_surface,NULL,D3DTEXF_NONE); // IDirect3DBaseTexture9_GenerateMipSubLevels(rtt_texture); IDirect3DDevice9_EndScene(device); if(IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL)==D3DERR_DEVICELOST) error("fakkin lost device. keep your hands off alt-tab, looser."); old_time = time; while (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){ TranslateMessage(&msg); DispatchMessage(&msg); if (msg.message == WM_QUIT || msg.message == WM_KEYDOWN && LOWORD(msg.wParam) == VK_ESCAPE) done = TRUE; } }while(!done); deinit_marching_cubes(); deinit_overlays(); deinit_particles(); free_scene(fysikkfjall); free_scene(startblob); free_scene(inni_abstrakt); free_scene(korridor); free_scene(skjerm_rom); free_scene(bare_paa_lissom); free_materials(); free_textures(); free_video(vid); rtt_surface->lpVtbl->Release(rtt_surface); rtt_32_surface->lpVtbl->Release(rtt_32_surface); main_rendertarget->lpVtbl->Release(main_rendertarget); IDirect3DStateBlock9_Release(default_state); d3dwin_close(); if (music_file) BASS_StreamFree( music_file ); if (fp) file_close( fp ); BASS_Free(); // pest_close(); return 0; }
uint64_t Player::pos(uint16_t bytesPerSample, uint16_t numOfChannels) { return (BASS_ChannelGetPosition(_output, BASS_POS_BYTE)/(bytesPerSample*numOfChannels)); }
pascal void TimerProc(EventLoopTimerRef inTimer, void *inUserData) { SetControl32BitValue(GetControl(12),(DWORD)BASS_ChannelBytes2Seconds(chan,BASS_ChannelGetPosition(chan,BASS_POS_BYTE))); // update position }
int WINAPI WinMain( HINSTANCE instance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) //void entrypoint(void) { MSG msg; int done=0; WININFO *info = &wininfo; window_init(info); long st = GetTickCount(); CLogger* myLogger; myLogger = new CLogger(); GraphicsClass* m_Graphics; m_Graphics = new GraphicsClass(); m_Graphics->Initialize(XRES,YRES,info->hWnd); // BASS BASS_Init(-1,44100,0,0,NULL); //char filename[400]="C:\\My_Projects\\frmwrk\\Debug\\lemonade-merry_xmas_nectas.xm"; char filename[400]="C:\\My_Projects\\frmwrk\\Debug\\bass_system-questa_sera.xm"; //char * filename= "dark_rat-xmas.xm"; DWORD chan; float time; //chan=BASS_MusicLoad(FALSE,"dark_rat-xmas.xm",0,0,BASS_SAMPLE_LOOP|BASS_MUSIC_RAMPS|BASS_MUSIC_PRESCAN,0); if (!(chan=BASS_MusicLoad(FALSE,filename,0,0,BASS_MUSIC_RAMPS|BASS_MUSIC_PRESCAN,0))) { int k=5; } float dummy; int a; for (a=0;BASS_ChannelGetAttribute(chan,BASS_ATTRIB_MUSIC_VOL_CHAN+a,&dummy);a++); QWORD pos; pos=BASS_ChannelGetLength(chan,BASS_POS_BYTE); BASS_ChannelPlay(chan,FALSE); // programm loop long to=0; while( !done ) { pos=BASS_ChannelGetPosition(chan,BASS_POS_BYTE); time=BASS_ChannelBytes2Seconds(chan,pos); myLogger->LogThis("pos"); myLogger->LogThisFloat((float)pos); myLogger->LogThis("time"); myLogger->LogThisFloat((float)time); if (time!=0) { int k=6; } long t = GetTickCount(); if( !to ) to=t; t-=to; while( PeekMessage(&msg,0,0,0,PM_REMOVE) ) { if( msg.message==WM_QUIT ) done=1; TranslateMessage( &msg ); DispatchMessage( &msg ); } DrawTime( info, .001f*t ); m_Graphics->Frame(); m_Graphics->Render(); } window_end(info); ExitProcess( 0 ); }
//----------------------------------------------------------------------------- void LLFFTSound::update(float addedTime) { if(!m_bInitialized || !m_bPlaying) return; #ifdef _WINDOWS // update current waveform level #if BASSVERSION == 0x204 DWORD pos = BASS_ChannelGetPosition(m_dChannel, BASS_POS_BYTE); if (pos == BASS_ChannelGetLength(m_dChannel, BASS_POS_BYTE)) #else DWORD pos = BASS_ChannelGetPosition(m_dChannel); if (pos == BASS_ChannelGetLength(m_dChannel)) #endif { m_fCurrLevelLeft = 0.0f; m_fCurrLevelRight = 0.0f; m_bPlaying = false; BASS_ChannelStop(m_dChannel); // reset bands values for (int i=0; i< BANDS; i++) m_fBands[i] = 0.0f; // reset events queue resetEvent(); } else { // update lever for each channel DWORD level = BASS_ChannelGetLevel(m_dChannel); m_fCurrLevelLeft = ((double)LOWORD(level) / 32768); // range 0 to 1: left channel is low word m_fCurrLevelRight = ((double)HIWORD(level) / 32768); // range 0 to 1: right channel is high word // update band spectrum float fft[1024]; BASS_ChannelGetData(m_dChannel,fft,BASS_DATA_FFT2048); // get the FFT data int b0=0; int x,y; #define FFTCAP 256.0f for (x=0; x<BANDS; x++) { float sum=0; int sc,b1 = pow(2,x*10.0/(BANDS-1)); if (b1>1023) b1=1023; if (b1<=b0) b1=b0+1; // make sure it uses at least 1 FFT bin sc = 10 + b1 - b0; for (;b0<b1;b0++) sum+=fft[1+b0]; y=(sqrt(sum/log10((double)sc))*1.7*FFTCAP)-4; // scale it if (y>FFTCAP) y=FFTCAP; // cap it // store band value m_fBands[x] = y; m_fBands[x] /= FFTCAP; // normalized band value (0.0 - 1.0) } // check event associated with this sound file: use pos variable to detect timing... float elapsedTime = BASS_ChannelBytes2Seconds(m_dChannel,pos); if (m_iNumEvents && !m_bEventDone) { if (elapsedTime > 0.0f) { // there is possibility that multiple events have the same timestamp... // should do some kind of iteration. bool running = true; while(running) { if (m_fNextEventTime < elapsedTime) { // execute callback function i_CharacterEventCallback.execute(m_vEventVec[m_iNextEvent]); // move to next event m_iNextEvent++; if (m_iNextEvent == m_iNumEvents) { // reached the last event m_iNextEvent = 0; m_bEventDone = true; running = false; } m_fNextEventTime = m_vEventVec[m_iNextEvent]->eTime; } else running = false; } } } } #endif }
qint64 KNMusicBackendBassThread::position() { return (qint64)(BASS_ChannelBytes2Seconds(m_channel, BASS_ChannelGetPosition(m_channel, BASS_POS_BYTE)) *1000)-m_startPosition; }
float getTime() { return float(BASS_ChannelBytes2Seconds(stream, BASS_ChannelGetPosition(stream, BASS_POS_BYTE))); }
INT_PTR 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.lpstrFile=file; ofn.nMaxFile=MAX_PATH; if (GetOpenFileName(&ofn)) { BASS_StreamFree(chan); // free the old stream if (!(chan=BASS_StreamCreateFile(FALSE,file,0,0,BASS_SAMPLE_LOOP))) { // it ain't playable MESS(10,WM_SETTEXT,0,"click here to open a file..."); MESS(11,WM_SETTEXT,0,""); Error("Can't play the file"); break; } MESS(10,WM_SETTEXT,0,file); { // display the file type and length QWORD bytes=BASS_ChannelGetLength(chan,BASS_POS_BYTE); DWORD time=BASS_ChannelBytes2Seconds(chan,bytes); BASS_CHANNELINFO info; BASS_ChannelGetInfo(chan,&info); sprintf(file,"channel type = %x (%s)\nlength = %I64u (%u:%02u)", info.ctype,GetCTypeString(info.ctype,info.plugin),bytes,time/60,time%60); MESS(11,WM_SETTEXT,0,file); MESS(12,TBM_SETRANGE,1,MAKELONG(0,time)); // update scroller range } BASS_ChannelPlay(chan,FALSE); } } break; } break; case WM_HSCROLL: if (l && LOWORD(w)!=SB_THUMBPOSITION && LOWORD(w)!=SB_ENDSCROLL) { // set the position int pos=SendMessage((HWND)l,TBM_GETPOS,0,0); BASS_ChannelSetPosition(chan,BASS_ChannelSeconds2Bytes(chan,pos),BASS_POS_BYTE); } break; case WM_TIMER: MESS(12,TBM_SETPOS,1,(DWORD)BASS_ChannelBytes2Seconds(chan,BASS_ChannelGetPosition(chan,BASS_POS_BYTE))); // update position break; case WM_INITDIALOG: win=h; // initialize default output device if (!BASS_Init(-1,44100,0,win,NULL)) { Error("Can't initialize device"); DestroyWindow(win); break; } // initialize file selector memset(&ofn,0,sizeof(ofn)); ofn.lStructSize=sizeof(ofn); ofn.hwndOwner=h; ofn.Flags=OFN_HIDEREADONLY|OFN_EXPLORER; ofn.lpstrFilter=filter; memcpy(filter,"BASS built-in (*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif)\0*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif\0",88); { // look for plugins (in the executable's directory) WIN32_FIND_DATA fd; HANDLE fh; char path[MAX_PATH],*fp=filter+88; GetModuleFileName(0,path,sizeof(path)); strcpy(strrchr(path,'\\')+1,"bass*.dll"); fh=FindFirstFile(path,&fd); if (fh!=INVALID_HANDLE_VALUE) { do { HPLUGIN plug; if (plug=BASS_PluginLoad(fd.cFileName,0)) { // plugin loaded... const BASS_PLUGININFO *pinfo=BASS_PluginGetInfo(plug); // get plugin info to add to the file selector filter... int a; for (a=0;a<pinfo->formatc;a++) { fp+=sprintf(fp,"%s (%s) - %s",pinfo->formats[a].name,pinfo->formats[a].exts,fd.cFileName)+1; // format description fp+=sprintf(fp,"%s",pinfo->formats[a].exts)+1; // extension filter } // add plugin to the list MESS(20,LB_ADDSTRING,0,fd.cFileName); } } while (FindNextFile(fh,&fd)); FindClose(fh); } if (!MESS(20,LB_GETCOUNT,0,0)) // no plugins... MESS(20,LB_ADDSTRING,0,"no plugins - visit the BASS webpage to get some"); memcpy(fp,"All files\0*.*\0\0",15); } SetTimer(h,0,500,0); // timer to update the position return 1; case WM_DESTROY: // "free" the output device and all plugins BASS_Free(); BASS_PluginFree(0); break; } return 0; }
/************************************************************************* * Main entrypoint for debug build *************************************************************************/ int WINAPI WinMain(HINSTANCE instance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; g_hInstance = GetModuleHandle(0); OutputDebugString("Starting...\n"); if (!WindowOpen()) { OutputDebugString("Failed to open window\n"); WindowClose(); return 0; } if (FAILED(InitDevice())) { CleanupDevice(); return 0; } IntroInit(); InitSound(); while (!g_done) { g_currentFrame++; g_lastTime = g_currentTime; g_currentPos = BASS_ChannelGetPosition(g_stream, BASS_POS_BYTE); g_currentTime = BASS_ChannelBytes2Seconds(g_stream, g_currentPos); if (g_pause) { Sleep(100); } while (PeekMessage(&msg,0,0,0,PM_REMOVE)) { if (msg.message == WM_QUIT) { g_done = true; } TranslateMessage(&msg); DispatchMessage(&msg); if (WM_KEYDOWN == msg.message && VK_SPACE == LOWORD(msg.wParam)) { if (!g_pause) { BASS_ChannelPause(g_stream); g_pause = true; } else { BASS_ChannelPlay(g_stream, false); g_pause = false; } } if (WM_KEYDOWN == msg.message && VK_LEFT == LOWORD(msg.wParam)) { if (g_pause) { BASS_ChannelSetPosition(g_stream, g_currentPos-44100, BASS_POS_BYTE); } else { BASS_ChannelSetPosition(g_stream, g_currentPos-44100*4, BASS_POS_BYTE); } } if (WM_KEYDOWN == msg.message && VK_RIGHT == LOWORD(msg.wParam)) { if (g_pause) { BASS_ChannelSetPosition(g_stream, g_currentPos+44100, BASS_POS_BYTE); } else { BASS_ChannelSetPosition(g_stream, g_currentPos+44100*4, BASS_POS_BYTE); } } if (WM_KEYDOWN == msg.message && VK_DOWN == LOWORD(msg.wParam)) { BASS_ChannelSetPosition(g_stream, g_currentPos-44100*20, BASS_POS_BYTE); } if (WM_KEYDOWN == msg.message && VK_UP == LOWORD(msg.wParam)) { BASS_ChannelSetPosition(g_stream, g_currentPos+44100*20, BASS_POS_BYTE); } if (WM_KEYDOWN == msg.message && VK_F1 == LOWORD(msg.wParam)) { g_repeatStart = g_currentPos; g_repeatEnd = LONG_MAX; } if (WM_KEYDOWN == msg.message && VK_F2 == LOWORD(msg.wParam)) { g_repeatEnd = g_currentPos; } if (WM_KEYDOWN == msg.message && VK_RETURN == LOWORD(msg.wParam)) { g_repeatStart = 0; g_repeatEnd = LONG_MAX; } } IntroLoop((long)(g_currentTime*44100.0)); UpdateTitle(); if (g_currentPos > g_repeatEnd) { BASS_ChannelSetPosition(g_stream, g_repeatStart, BASS_POS_BYTE); } BASS_Update(0); } BASS_StreamFree(g_stream); BASS_Free(); WindowClose(); return 0; }
INT_PTR CALLBACK dialogproc(HWND h,UINT m,WPARAM w,LPARAM l) { switch (m) { case WM_TIMER: { // update the recording/playback counter char text[30]=""; if (rchan) // recording sprintf(text,"%d",reclen-44); else if (chan) { if (BASS_ChannelIsActive(chan)) // playing sprintf(text,"%I64d / %I64d",BASS_ChannelGetPosition(chan,BASS_POS_BYTE),BASS_ChannelGetLength(chan,BASS_POS_BYTE)); else sprintf(text,"%I64d",BASS_ChannelGetLength(chan,BASS_POS_BYTE)); } MESS(20,WM_SETTEXT,0,text); } break; case WM_COMMAND: switch (LOWORD(w)) { case IDCANCEL: DestroyWindow(h); break; case 10: if (!rchan) StartRecording(); else StopRecording(); break; case 11: BASS_ChannelPlay(chan,TRUE); // play the recorded data break; case 12: WriteToDisk(); break; case 13: if (HIWORD(w)==CBN_SELCHANGE) { // input selection changed int i; input=MESS(13,CB_GETCURSEL,0,0); // get the selection // enable the selected input for (i=0;BASS_RecordSetInput(i,BASS_INPUT_OFF,-1);i++) ; // 1st disable all inputs, then... BASS_RecordSetInput(input,BASS_INPUT_ON,-1); // enable the selected UpdateInputInfo(); } break; case 16: if (HIWORD(w)==CBN_SELCHANGE) { // device selection changed int i=MESS(16,CB_GETCURSEL,0,0); // get the selection // initialize the selected device if (InitDevice(i)) { if (rchan) { // continue recording on the new device... HRECORD newrchan=BASS_RecordStart(FREQ,CHANS,0,RecordingCallback,0); if (!newrchan) Error("Couldn't start recording"); else rchan=newrchan; } } } break; } break; case WM_HSCROLL: if (l) { // set input source level float level=SendMessage((HWND)l,TBM_GETPOS,0,0)/100.f; if (!BASS_RecordSetInput(input,0,level)) // failed to set input level BASS_RecordSetInput(-1,0,level); // try master level instead } break; case WM_INITDIALOG: win=h; MESS(14,TBM_SETRANGE,FALSE,MAKELONG(0,100)); { // get list of recording devices int c,def; BASS_DEVICEINFO di; for (c=0;BASS_RecordGetDeviceInfo(c,&di);c++) { MESS(16,CB_ADDSTRING,0,di.name); if (di.flags&BASS_DEVICE_DEFAULT) { // got the default device MESS(16,CB_SETCURSEL,c,0); def=c; } } InitDevice(def); // initialize default recording device } SetTimer(h,0,200,0); // timer to update the position display return 1; case WM_DESTROY: // release all BASS stuff BASS_RecordFree(); BASS_Free(); break; } return 0; }