+ case LTC:
+ while (_ltcbuf->read_space () < n_samples) {
+ // we should pre-allocate (or add a zero-copy libltc API), whatever.
+ ltcsnd_sample_t* enc_buf = (ltcsnd_sample_t*) malloc (ltc_encoder_get_buffersize (_ltc) * sizeof (ltcsnd_sample_t));
+ for (int byteCnt = 0; byteCnt < 10; byteCnt++) {
+ if (_ltc_rand != 0.f) {
+ _ltc_spd += randf () * _ltc_rand;
+ _ltc_spd = std::min (1.5f, std::max (0.5f, _ltc_spd));
+ }
+ ltc_encoder_encode_byte (_ltc, byteCnt, _ltc_spd);
+ const int len = ltc_encoder_get_buffer (_ltc, enc_buf);
+ for (int i = 0; i < len; ++i) {
+ const float v1 = enc_buf[i] - 128;
+ Sample v = v1 * 0.002;
+ _ltcbuf->write (&v, 1);
+ }
+ }
+ ltc_encoder_inc_timecode (_ltc);
+ free (enc_buf);
+ }
+ _ltcbuf->read (_buffer, n_samples);
+ break;