int sample_playing(int channel) { if (Machine->sample_rate == 0) return 0; if (channel >= numchannels) { logerror("error: sample_playing() called with channel = %d, but only %d channels allocated\n",channel,numchannels); return 0; } return mixer_is_sample_playing(channel + firstchannel); }
static void playsam3(int param){ // timer 3 (q3) is easy wave if ((gps_locals.cr3 & 0x80) && (gps_locals.timlat3 > 0) && (gps_locals.reset == 0)) { // output is enabled... if (mixer_is_sample_playing(gps_locals.channel+2)) { // is already playing mixer_set_sample_frequency(gps_locals.channel+2,(gps_locals.tfre3*sizeof(sineWaveinp) / 2) ); } else { mixer_play_sample_16(gps_locals.channel+2,sineWaveinp, sizeof(sineWaveinp), gps_locals.tfre3*sizeof(sineWaveinp) / 2 , 1); logerror("*** playsam Q3 start %04d ***\n",gps_locals.tfre3); } } }
static void playsam1(int param){ // timer 1 (q1) is easy wave if ((gps_locals.cr1 & 0x80) && (gps_locals.timlat1 > 0) && (gps_locals.reset == 0)) { // output is enabled... mixer_play_sample_16(gps_locals.channel,sineWaveinp, sizeof(sineWaveinp), (int)(gps_locals.tfre1*sizeof(sineWaveinp) / 2 / 1.137), 1); if (mixer_is_sample_playing(gps_locals.channel)) { // is already playing mixer_set_sample_frequency(gps_locals.channel,(gps_locals.tfre1*sizeof(sineWaveinp) / 2) ); } else { mixer_play_sample_16(gps_locals.channel,sineWaveinp, sizeof(sineWaveinp), gps_locals.tfre1*sizeof(sineWaveinp) / 2, 1); logerror("*** playsam Q1 start %04d ***\n",gps_locals.tfre1); } } }
static WRITE_HANDLER(play2s_ctrl_w) { if (!sndlocals.enSn && (data & 1)) { // sound on to full volume timer_adjust(sndlocals.timer, TIME_NEVER, 0, 0); if (!mixer_is_sample_playing(sndlocals.channel)) { mixer_play_sample(sndlocals.channel, (signed char *)squareWave, sizeof(squareWave), 2950000.0 / 4 / (sndlocals.freq + 1), 1); } sndlocals.volume = 100; mixer_set_volume(sndlocals.channel, sndlocals.volume); } else if (!(data & 1) && sndlocals.enSn) { // start fading timer_adjust(sndlocals.timer, TIME_IN_HZ(120), 0, TIME_IN_HZ(120)); } sndlocals.enSn = data & 1; }
static void stopSound(void) { if (mixer_is_sample_playing(atarilocals.channel)) mixer_stop_sample(atarilocals.channel); }
static void stopNoise(void) { if (mixer_is_sample_playing(atarilocals.noisechannel)) mixer_stop_sample(atarilocals.noisechannel); }
static WRITE_HANDLER(play2s_data_w) { sndlocals.freq = data; if (mixer_is_sample_playing(sndlocals.channel)) { mixer_set_sample_frequency(sndlocals.channel, 2950000.0 / 4 / (sndlocals.freq + 1)); } }
int votrax_status_r(void) { return mixer_is_sample_playing(VotraxChannel); }