int main(int argc, char *argv[]) { SID sid; sound_open(); sid.reset(); if (fcntl(0, F_SETFL, O_NONBLOCK) != 0) fatal("fcntl failed: %d", errno); int i = 0; while (1) { int n = read(0, &in_buf[i], sizeof(in_buf) - i); if (n < 0) { if (errno != EAGAIN && errno != EWOULDBLOCK) fatal("read failed: %d", errno); sound_emit(sid, SID_CLOCK / LOOP_FREQ); } else if (n > 0) { n += i; for (i = 0; i < n; i += 2) { if (n - i >= 2) sid.write(in_buf[i], in_buf[i + 1]); } if (n & 1) i = 1; } else { break; } } sound_close(); }
int main() { float * out_buffer_f; int16_t * out_buffer_i; int n_frames=256; int i; int fd; int polyphony=1; FILE * FD; SID mysid; cycle_count cycles; //cycle_count delta_t = CLOCKFREQ / (SAMPLERATE / AUDIO_BLOCK_SAMPLES); cycle_count delta_t = CLOCKFREQ / (SAMPLERATE / AUDIO_BLOCK_SAMPLES); int nbsample=0; int j=1; int goup=1; //cycle_count delta_t=AUDIO_BLOCK_SAMPLES; out_buffer_f=(float*)malloc(sizeof(float)*8192); out_buffer_i=(int16_t*)malloc(sizeof(int16_t*)*8192); mysid.set_chip_model(MOS8580); //mysid.set_chip_model(MOS6581); mysid.set_sampling_parameters(CLOCKFREQ, SAMPLE_FAST, SAMPLERATE); mysid.reset(); mysid.write(0x18, 0x08); // MODE/VOL mysid.write(0x00,0x0); // v1 freq lo mysid.write(0x01,0x4); // v1 freq hi mysid.write(0x05,0x0F); // ATK/DCY mysid.write(0x06,0xFF); // STN/RLS mysid.write(0x04,0x21); // CONTROL //mysid.write(0x18, 0x08); // MODE/VOL //mysid.write(0x17,0xF7); // filter mysid.write(0x18,0x1F); // MODE/VOL mysid.write(0x0e,0x1); // v1 freq lo mysid.write(0x0f,0x4); // v1 freq hi mysid.write(0x13,0x0F); // ATK/DCY mysid.write(0x14,0xFF); // STN/RLS //mysid.write(0x10,0x3F); // PULSEWIDTH mysid.write(0x12,0x41); // CONTROL mysid.write(0x17,0xFF); // filter //mysid.write(0x16,j--); // Cutoff mysid.write(0x16,0xFF); // Cutoff //mysid.write(0x18,0x1F); //FD=fopen("audioout","w+"); for (i=0;i<NBBLOCKS;i++) { delta_t=CLOCKFREQ / (SAMPLERATE / AUDIO_BLOCK_SAMPLES); nbsample=mysid.clock(delta_t,out_buffer_i,AUDIO_BLOCK_SAMPLES); mysid.write(0x16,j); // Cutoff //mysid.write(0x01,i); // v1 freq hi mysid.write(0x10,j); // PULSEWIDTH mysid.write(0x02,j-128); // PULSEWIDTH //printf("nbsample:%d delta_t:%d j:%d\n",nbsample,delta_t,j); //fwrite(out_buffer_i,sizeof(int16_t),AUDIO_BLOCK_SAMPLES,FD); if (goup) { j++; if (j>64) goup=0; } else { j--; if (j<1) goup=1; } } //fclose(FD); }
SID::SID( const SID &sid ) { setSID( sid.getSID() ); }