package jass.generators; import jass.engine.*; /** Generate impulses with time intervals. @author Kees van den Doel (kvdoel@cs.ubc.ca) */ public class Impulse extends Out { /** time interval */ protected float t_pulse = 1.0f; // dt in samples private int dt_samples; // current time private long sampleTime=0; // last sample time impulse was generated private long lastImpulseTime = 0; public float srate; protected float volume=1; /** Construct @param srate sampling rate in Hertz. @param bufferSize bufferSize of this Out */ public Impulse(float srate,int bufferSize) { super(bufferSize); this.srate = srate; reset(); } public void reset() { sampleTime = 0; lastImpulseTime = 0; } /** Set magnitude. @param val Volume. */ public void setVolume(float val) { volume = val; } /** Set impulse period @param dt period */ public void setPeriod(float dt) { t_pulse = dt; dt_samples = (int)(t_pulse*srate); } /** Compute the next buffer. */ public void computeBuffer() { int bufsz = getBufferSize(); for(int k=0;k<bufsz;k++) { sampleTime++; if(sampleTime - lastImpulseTime > dt_samples) { lastImpulseTime = sampleTime; buf[k] = volume; } else { buf[k] = 0; } } } }