memcpyをC#で利用するには
お世話になります。
BASSというオーディオライブラリで三角波の再生を行いたいと考えております。
How can I generate a triangle wave with "BASS_SampleCreate"?を参考にC++のソースコードをC#で書き直そうとしています。
C#には「Buffer.BlockCopy」というのがあり、データをコピーできそうなことはわかったのですが、「srcOffset」、「dstOffset」、「count」はどのように指定すればよいのでしょうか。
そもそもC++コード内の
memcpy(&data[a * period], data, period * sizeof(*data));
というのがいまいち理解できていません。
C++のコードは全くといっていいくらい読んだことがないため、的外れなことを書いていたら申し訳ないのですが、何かアドバイスを頂けないでしょうか。
C++のソースコード
int period = 64;
int cycles = 100 * 440;
short *data = new short[cycles * period];
int a;
int period4 = period / 4;
for (a = 0; a < period4; a++) {
data[a] = 32767 * a / period4;
data[period4 + a] = 32767 - data[a];
data[2 * period4 + a] = -data[a];
data[3 * period4 + a] = -32767 + data[a];
}
for (a = 1; a < cycles; a++)
memcpy(&data[a * period], data, period * sizeof(*data));
delete[] data;
現状のC#のソースコード
int period = 64;
int cycles = 100 * 440;
short[] data = new short[cycles * period];
int a;
int period4 = period / 4;
for (a = 0; a < period4; a++){
data[a] = 32767 * a / period4;
data[period4 + a] = 32767 - data[a];
data[2 * period4 + a] = -data[a];
data[3 * period4 + a] = -32767 + data[a];
}
for (a = 1; a < cycles; a++){
// ここでつまずいています
}