2023/07/18

IntegerArpeggio


Try IntegerArpeggio (github.io)
Read Source Code (github.com)

IntegerArpeggio is a synthesizer to render arpeggio. The arpeggio follows a musical scale which makes the period of oscillator to always be integer samples. It sounds more akin to just intonation rather than 12 equal temperament, especially at higher frequencies.

It's intended to be used with external slicer, for example slicex in FL. Start of each note is written in cue chunk of WAVE file, however it's not confirmed to work. It seems like FL Studio v21.0.3 doesn't support multiple cue or smpl point.

The idea is based on the observation that integer-sample periodic waveforms do not appear to be aliased when looking at the spectrum. In this case, aliasing isn't disappeared, but the aliased frequencies exactly overlaps to the original non-zero frequency. so it is not perceived as noise for human ears.

2023-07-18: Changed description about aliasing. I found that initial description was wrong with experiment.

---

IntegerArpeggio を試す (github.io)
ソースコードを読む (github.com)

IntegerArpeggio はオシレータの周期が整数のサンプル数となる音楽スケールに沿ってアルペジオを生成するシンセサイザです。高い周波数では 12 平均律よりも純正律に近い音程が得られます。

出力を slicex のようなスライサに読み込んで使うことを想定しています。WAVE の cue チャンクで各音程の開始位置を指定しているはずですが、 FL Studio v21.0.3 では複数の cue あるいは smpl ポイントがサポートされていないようなので動作確認はできていません。

アイデアとしては整数サンプルの周期波形は周波数成分を見てもエイリアシングが起きていないように見えるという観察に基づいています。実際にはエイリアシングは起こっているのですが、折り返してきた周波数成分が元の 0 でない周波数成分とちょうど重なるので、耳で聞き取れるようなノイズとはなりません。

2023-07-18: エイリアシングに関する記述を変更。実験して確認したところ間違いがあった。