예제 #1
0
int audioport_process (uint32_t nframes, void *arg) {

	int s;
	float *buffer;
	kr_audioport_t *audioport;
	static int32_t total_frames = 0;
	
	total_frames += nframes;
	
	if (total_frames > 35000) {
		krad_tone_add_preset (krad_tone, "dialtone");
		krad_tone_add_preset (krad_tone2, "6");
	  total_frames = 0;
	}
	
	audioport = (kr_audioport_t *)arg;
	
	buffer = kr_audioport_get_buffer (audioport, 0);
	if (1) {
		krad_tone_run (krad_tone, buffer, nframes);
		buffer = kr_audioport_get_buffer (audioport, 1);
		krad_tone_run (krad_tone2, buffer, nframes);
	} else {
		for (s = 0; s < 1600; s++) {
			if (buffer[s] > 0.3) {
				printf("signals!\n");
				break;
			}
		}
	}
	
	return 0;
}
예제 #2
0
static void portgroup_get_samples (krad_mixer_portgroup_t *portgroup, uint32_t nframes) {

  int c;
  float *samples[KRAD_MIXER_MAX_CHANNELS];

  switch ( portgroup->io_type ) {
    case KRAD_TONE:
      krad_tone_run (portgroup->io_ptr, *portgroup->mapped_samples[0], nframes);
      break;
    case MIXBUS:
      break;
    case KRAD_AUDIO:
      krad_audio_portgroup_samples_callback (nframes, portgroup->io_ptr, samples);
      
      for (c = 0; c < KRAD_MIXER_MAX_CHANNELS; c++ ) {
        portgroup->samples[c] = samples[portgroup->map[c]];
      }
      break;
    case KRAD_LINK:
      if (portgroup->direction == INPUT) {
        krad_link_audio_samples_callback (nframes, portgroup->io_ptr, portgroup->mapped_samples[0]);
      }
      break;
    case KLOCALSHM:
      if (portgroup->direction == INPUT) {
        krad_mixer_local_audio_samples_callback (nframes, portgroup->io_ptr, portgroup->mapped_samples[0]);
      }
      break;
  }
}