REAKTOR (native instruments) でライブコーディング!?ができる!無料のライブラリをご紹介!

投稿日:2019-11-23



ナカジ(@cp_nakajun)です。

NIのREAKTORでLive Codingをするためのモジュールのライブラリなるものの存在を知ってしまったのでご紹介。

まったくと言っていいほど使ってないですが、一応「REAKTOR 5」を持っています。

使おう、使おうと思いながら全然取り組んでない系です。

ご紹介するものは「for REAKTOR 6」とあるので、試しては…いない…

REAKTORってなに?

という人もいるかと思いますのでwikiより

Reaktor(リアクター)は、独ネイティヴ インストゥルメンツ社が開発した、グラフィカルな統合開発環境(ビジュアルプログラミング言語)で、音響合成、音響効果、数式処理などを、あらかじめ用意されたモジュールを組み合わせることによって、視覚的に構成できるソフトウェアである。

wikipediaより

すごくざっくり言うと、単純な機能をもつモジュールを線でつないでいくことでシーケンサー、ドラムマシン、シンセサイザーやエフェクターを作れる開発環境です。

そして作ったものはReaktorのスタンドアロンで使うこともできますし、DAWからVstプラグインとしても使える。

と言った感じでしょうか。

「線でつないで」というスタイルなのでMax8やPureDataのようなイメージですね。

一般的に「LiveCoding」というと、コードベース(テキスト記述)ですが

ノードベースのMax8やPureDataでも「できるといえば、出来る」…

じゃあReaktorは「できないのか?」と言われれば、僕はやろうとしたこともないのでわかりません。

ですが今日ご紹介するプロジェクト「LiveCore」はReaktorでMax8やPureDataのようにライブコーディングする為のライブラリです。

【LiveCore】Reaktor用LiveCodingライブラリ

まずはデモ映像から紹介します。



LiveCoreプロジェクトはGitHubで公開されていて、無料です。
https://github.com/freeeco/livecore

  • 開発:David Alexander (@freeeco) 、Jack Armitage (@jarmitage)
  • 動作環境:REAKTOR 6

上記のGitHubから説明部分を抜粋するとLiveCoreは

In this work we introduce LiveCore: a macro library for the low-level dataflow environment Reaktor Core enabling live coding. LiveCore manages program state at audio rates and provides a suite of modules for musical pattern generation, sequencing and synthesis. LiveCore increases liveness in Reaktor Core from an editable dataflow program, to one with continuous audio suitable for musical performance.

この作業では、ライブコーディングを可能にする低レベルのデータフロー環境Reaktor CoreのマクロライブラリであるLiveCoreを紹介します。 LiveCoreは、オーディオレートでプログラムの状態を管理し、音楽パターンの生成、シーケンス、合成のための一連のモジュールを提供します。 LiveCoreは、編集可能なデータフロープログラムから音楽パフォーマンスに適した連続オーディオを備えたものまで、Reaktor Coreの活性を向上させます。

LiveCore is a library of modules for live coding in Reaktor Core and consists of macros or Blocks containing code with sets of input and output ports. Each macro contains as few operations as possible thus keeping the code efficient and compact. Macros that are connected and therefor should execute are compiled into a few dozen bytes each. Disconnected macros are ignored by the compiler. The result is a single block of executable code that can sit inside the CPU’s program cache without any calls to external functions.

LiveCoreは、Reaktor Coreでのライブコーディング用のモジュールのライブラリであり、入力ポートと出力ポートのセットを持つコードを含むマクロまたはブロックで構成されています。 各マクロには可能な限り少ない操作が含まれているため、コードを効率的かつコンパクトに保ちます。 接続されているため実行する必要があるマクロは、それぞれ数十バイトにコンパイルされます。 切断されたマクロは、コンパイラーによって無視されます。 結果は、外部関数を呼び出さずにCPUのプログラムキャッシュ内に配置できる実行可能コードの単一ブロックです。

The fundamental building block of the library is a Phase Driver: a ramp waveform generator that represents a musical period, which could be for example two measures long. The Phase Driver is based on a simple phase accumulator that increments every audio clock and wraps back to 0 when it reaches 1. Additional blocks can subdivide this cycle into smaller periods, which can be quantised and used to look up tables of values for parameter modulation or note data. The output of the ramp generator can be modified using a waveshaper to achieve different grooves or more complex rhythmic patterns. It can also function as an audio-rate oscillator by using a further waveshaper to create different wave-forms or by using it to read samples from a wavetable using the Sample Reader described later in this section. If wrapping is disabled, ramps can be triggered in oneshot mode to drive sample playback or be used as envelopes if followed by a function generator or another waveshaper.

ライブラリの基本的な構成要素はフェーズドライバーです。音楽の周期を表すランプ波形ジェネレーターで、たとえば2小節の長さです。 フェーズドライバーは、すべてのオーディオクロックをインクリメントし、1に達すると0に戻るシンプルなフェーズアキュムレータに基づいています。追加のブロックは、このサイクルをより小さな期間に細分化できます。 またはメモデータ。 ランプジェネレーターの出力は、ウェーブシェイパーを使用して変更し、さまざまなグルーブまたはより複雑なリズムパターンを実現できます。 また、別のウェーブシェイパーを使用して異なる波形を作成するか、このセクションで後述するサンプルリーダーを使用してウェーブテーブルからサンプルを読み取ることにより、オーディオレートオシレーターとして機能することもできます。 ラッピングが無効になっている場合、ランプをワンショットモードでトリガーしてサンプルの再生を駆動したり、関数ジェネレーターや別のウェーブシェイパーが続く場合はエンベロープとして使用したりできます。

という感じです。

セットアップの方法は

  1. 上記GitHubのリポジトリをクローン or ダウンロード
  2. LiveCoreアンサンブルに解凍する
  3. REAKTORでアンサンブルを開く

ちなみにLiveCoreはまだまだ開発中らしく、モジュールが結構少ない印象です。

  • Phase Driver:「ワンショット」または「ループ」モードで実行できるランプジェネレーター。
  • Sequencer:フェーズドライバーの出力を量子化し、その結果を使用して、その入力からパターンデータを選択します。
  • Splitter:入力フェーズをサブフェーズに分割します。
  • Gate:関数out = x < gate lengthを使用して、Phase Driverからゲートを作成します。
  • Mixer:すべての入力を合計する単純なモジュール。
  • Limiter:入力のレベルに達するまでアップランプを作成してから、ダウンランプを作成します。 ゲートからトリガーされ、エンベロープとして使用でき、信号スムーザーまたはフィルターとしても使用できます。
  • Waveshaper:フェーズドライバーの出力からさまざまなオシレーター形状を作成します。 シーケンサーの前に配置して、テンポの変調や加速を作成したり、ジッターやスイングをシミュレートしたり、パターンのタイミングを変更したりできます。 また、フェーズドライバーとサンプルリーダーの間に配置して、再生速度や方向などを変更することもできます。
  • Reader:テーブルからサンプルを読み取り、 Table ReferenceとPosition入力があります。 位相入力を位置入力に接続すると、サンプル全体で再生されます。 短いサンプルは、Waveshaperよりも複雑なオシレーター形状のウェーブテーブルとして使用できます。

と、こんなところです。

最初に書いたように、僕の所有はREAKTOR 5なので現状試してみてはないのですが

今、これを書いているのはBlack Friday…アップデート半額中!!

まぁ、試したらまたレポートします。

サポート募集中

この記事はお役に立てましたか。
よかったら、コーヒー ☕ をご馳走いただけたら励みになります。



おすすめのクリエイティブ・コーディング関連カテゴリー

クリエイティブコーディング系 講座


ウェブツール

機能はシンプルなものですが、p5.jsやTone.jsで描画したり音が出たりするので遊んでみてください。
・【Midi Number Tools】:MIDIナンバーから音名と周波数を判定します
・【Delay Time Calculator】:テンポに応じた音符の長さを判定します