 		time_start(&roundtrip);
 		m_multiply(MatrixCA, *pointer_state_read, &output_chunk);
 
-		for(j = 0; j < synth.blocksize; j++) {
-			output[i+j] = m_get(output_chunk,j,0);
-		}
+		memcpy(&output[i], output_chunk.elements, sizeof(float) * synth.blocksize);
+
 		m_multiplyblockdiag(MatrixAp, *pointer_state_read, pointer_state_write, 2);
 		m_swap(&pointer_state_read, &pointer_state_write);
 		if(i == 0) {

			cudaMemcpyAsync(pointer_output_chunk_write->elements, pointer_device_output_chunk_read->elements, m_size(output_chunk_write), cudaMemcpyDeviceToHost, streams[2]);
			cudaEventRecord(Memcpy_stop, streams[2]);

			for(j = 0; j < synth.blocksize; j++) {
				output[i+j] = m_get(*pointer_output_chunk_read,j,0);
			}

			if(i == 0) {
				time_stop(&turnaround);

 */

void generateSignalCPU(float * output, String string, Synthesizer synth) {
	int i;
	Matrix state_tmp, output_chunk;
	Matrix *pointer_state_read, *pointer_state_write;
	Timer roundtrip;
