X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=example%2Fexample.cxx;h=f12ca2939089f7c3254c8be25f05eb695becd93c;hb=62e85640da0793941648560078d76ec68bc12608;hp=ae519786d935f8e1440c9ab5e6d60c38d67de1ac;hpb=fca7a8fa47b60fb80108d4302c11872c05020331;p=simgear.git diff --git a/example/example.cxx b/example/example.cxx index ae519786..f12ca293 100644 --- a/example/example.cxx +++ b/example/example.cxx @@ -55,15 +55,39 @@ int main () int tim = 0 ; /* My periodic event timer. */ + slEnvelope pitch_envelope ( 3, SL_SAMPLE_LOOP ) ; + slEnvelope p_envelope ( 1, SL_SAMPLE_ONE_SHOT ) ; + slEnvelope volume_envelope ( 3, SL_SAMPLE_LOOP ) ; + while ( SL_TRUE ) { - tim++ ; /* Time passes */ + + tim++ ; /* Time passes */ if ( tim % 200 == 0 ) sched.playSample ( s1 ) ; if ( tim % 180 == 0 ) sched.playSample ( s2 ) ; if ( tim % 150 == 0 ) sched.playSample ( s3 ) ; if ( tim % 120 == 0 ) sched.playSample ( s4 ) ; + if ( tim == 60 ) { + // introduce an envelope for our engine noise after 10 seconds + + pitch_envelope.setStep ( 0, 0.0, 1.0 ) ; + pitch_envelope.setStep ( 1, 5.0, 2.0 ) ; + pitch_envelope.setStep ( 2, 10.0, 1.0 ) ; + + p_envelope.setStep ( 0, 5.0, 2.0 ) ; + + volume_envelope.setStep ( 0, 0.0, 1.0 ) ; + volume_envelope.setStep ( 1, 5.0, 2.0 ) ; + volume_envelope.setStep ( 2, 10.0, 1.0 ) ; + + // scheduler -> playSample ( my_sample ) ; + sched.addSampleEnvelope( s, 0, 0, &p_envelope, SL_PITCH_ENVELOPE ); + sched.addSampleEnvelope( s, 0, 1, &volume_envelope, SL_VOLUME_ENVELOPE); + } + + /* For the sake of realism, I'll delay for 1/30th second to simulate a graphics update process.