GoGPT Best VPN GoSearch

OnWorksファビコン

gramophone2 - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで gramophone2 を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの 2 つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド gramophoneXNUMX です。

プログラム:

NAME


gramophone2 - GRAMophone は、音楽作曲のアルゴリズム ジェネレーターです。

シノプシス


蓄音機2 [-c|-d] ソースファイル [midifile]

OPTIONS


-c を生成せずにソースの構文を制御できるオプションです。
音楽。

-d は、ビデオ出力を使用してデバッグ モードをアクティブ化できるオプションです。
構成とプレーヤーのパラメーターと生成されたノート。

DESCRIPTION


GRAMophone では、音楽は XNUMX 種類の正式な文法を使用して生成されます。
構成に対するトップダウンアプローチの文法 (またはタイプ 3) と、
ボトムアップアプローチのためのリンデンマイヤー文法。

BASIC Concept OF 蓄音機


GRAMophone は、部分的には、
バーチャルプレイヤー(バーチャルミュージシャン)。 問題のプレーヤーは MIDI トラックに関連付けられており、
そして何をすべきかを伝える指示を解釈します。 一般的に、彼らは「ノートを再生する(送信する)」と言います。
MIDI メッセージ)。 GRAMophone のプレイヤーが集まってオーケストラを構成し、音楽を演奏します。
組成。

任意の数のプレーヤーが作品を再生できますが、実際には使用されるハードウェアによって影響を受ける可能性があります。
上限を設ける。

一般に、すべての奏者が楽器を演奏し、それぞれが異なる文法規則を持っています。
個々のプレイヤーは、全体で共有される一連のパラメータによって特徴付けられます。
オーケストラや個人のパラメータセット。

オーケストラのパラメータは次のもので構成されます。

使用される文法の種類 (チョムスキーまたはリンデンマイヤー)。

メトロノーム。

尺度。

生産プロセスで使用される反復回数。

各プレイヤーのパラメータは次のもので構成されます。

使用される文法の種類 (チョムスキーまたはリンデンマイヤー)。

楽器;

プレーヤーに関連付けられた MIDI チャンネル。

生産プロセスで使用される反復回数。

プレイヤーのノートには、次のような現在の状態があります。

オクターブ

ボリューム

デュレーション

リリース

これらの特性は、プレイヤーが宣言することでパラメータ的に制御できます。
関連する変数。 したがって、GRAMophone では、非決定的な生成が可能になります。
チョムスキー文法またはリンデンマイヤー文法を使用した音楽。

ガイド 蓄音機


「Give Me A」(GRAMophone の「Hello, World!」)

基本的な考え方を紹介するために、以下に最も単純なアルゴリズム構成を示します。
GRAMophone で生成されます。この構成は単に音 A を生成するものであり、
チョムスキーとリンデンマイヤーの両方の方法で提示されます。

「シュローダー」の作曲「Give Me A」{

//この構成はチョムスキー文法で A ノートを生成します

文法チョムスキー
テンポ120
拍子記号 4/4
%
シュローダー選手 {
楽器0
%
@composition->A[,,,];
}
}

「シュローダー」の作曲「Give Me A」{
//この構成は、リンデンマイヤー文法を使用して A ノートを生成します
文法リンデンマイヤー
テンポ120
拍子記号 4/4
%
シュローダー選手 {
楽器0
%
公理->A[,,,];
}
}

キーワード構成 E

すべての構成は、キーワード構成で始まり、その後に文字列 (反転) が続く必要があります。
カンマ) にはコンポジションの名前が含まれます。 この後にはキーワードを続ける必要があります
次に、作品の著作権を含む別の文字列。

構成ブロック

構成ブロックは括弧内に配置されます。 これは XNUMX つのセクションに分かれています。
セクションではコンポジションのパラメータを定義し、グローバルなパラメータを宣言して開始します。
変数と、その曲を「演奏」する奏者がいるオーケストラセクション
定義されています。 最初の XNUMX つのセクションは % 記号で区切られています。

プレーヤーのキーワード

各プレーヤーは、キーワード player とそれに続く識別子で定義されます。

プレイヤーブロック

プレーヤー ブロックは括弧内に配置され、XNUMX つのセクションに分かれています。XNUMX つのセクション
プレーヤーに関連付けられたトラックのパラメーターを定義し、ローカルのパラメーターを宣言します。
XNUMX つはプレーヤー用の変数で、もう XNUMX つは正式なルール用です。 最初の XNUMX つのセクションは次のとおりです
%記号で区切ります。

コメント

GRAMophone では、コメントは C に似ています。コメントは文字ペア「/*」で始まり、終わる必要があります。
文字ペア '* を使用/.' アスタリスクとスラッシュの間にスペースを入れてはなりません。
これらのシンボルのペアの間にあるものはすべて、GRAMophone パーサーによって無視されます。 全体
コメント行も含めることができます。 コメント行は記号 // で始まり、終わります
最初の XNUMX つの例のように、行の最後にあります。

コンポジションのパラメータを定義するセクション

オーケストラのすべてのプレイヤーが共有するパラメータがここで宣言されます。 パラメータ
宣言できるものは次のとおりです。

文法

分解能

繰り返し

テンポ

拍子記号

このセクションは % 記号で終わる必要があります。

文法

このパラメータは必須であり、生成で使用される文法の種類を定義します。
これはチョムスキーまたはリンデンマイヤーのいずれかになります。

分解能

このパラメータは、1/4 継続時間の時間単位の数を定義します。 省略した場合、デフォルト
値 480 が使用されます。

繰り返し

このパラメータは、生成に含まれる反復の数を定義します。 その意味
以下で説明するように、選択した文法の種類によって異なります。 省略した場合、デフォルト値は 1
使用されます。

テンポ

このパラメータは、作品のリズムを定義します。 省略した場合、デフォルト値 120 が適用されます。
中古。

拍子記号

このパラメータは、コンポジションのメジャーを定義します。 省略した場合、デフォルト値 4/4 が適用されます。
利用される。

コンポジションのグローバル変数を宣言するセクション

以下で説明するように、変数はノートの属性のパラメータを制御します。

プレーヤーのパラメータを定義するセクション

各プレイヤーの個人パラメータと変数はここで宣言されます。 個人パラメータ
宣言できるものは次のとおりです。

楽器

チャンネル

繰り返し

このセクションは % 記号で終わる必要があります。

楽器

このパラメータはプレーヤーの楽器のタイプを示します。 GRAMophoneの楽器セットは、
ジェネラルMIDIと同じです。 値の許容範囲は 0 ~ 127 です。 がある
したがって、128 の楽器から選択できます。 機器コードを示す表が表示されます
以下:

0ピアノ

1 ブライトピアノ

2 ハンマーピアノ

3 ホンキートンク

4つの新しい歯

5 電子ピアノ

6チェンバロ

7クラビ

8チェレスタ

9 グロッケン

10オルゴール

11 バイブス

12マリンバ

13 木琴

14 チューブラーベル

15サントゥール

16 フ​​ルオルガン

17パーカッシブオルガン

18 BX-3 オルガン

19教会オルガン

20ポジティブ

21ミュゼット

22ハーモニカ

23タンゴ

24 クラシックギター

25 アコースティックギター

26ジャズギター

27クリーンギター

28 ミュートギター

29 オーバードライブギター

30 ディストーションギター

31高調波

32 ジャズベース

33ディープベース

34ピックベース

35フレットレスベース

36スラップベース1

37スラップベース2

38 シンセサイズドベース 1

39 シンセサイズドベース 2

40ヴァイオリン

41ヴィオラ

42チェロ

43 コントラバス

44 トレモロストリング

45 ピチカート

46ハープ

47ティンパニ

48マルカート

49 スローストリング

50アナログパッド

51 ストリングパッド

52 合唱団

53 ドゥーボイス

54の声

55オーケストラルヒット

56トランペット

57トロンボーン

58チューバ

59 ミュートトランペット

60フレンチホルン

61ブラスセクション

62 合成真鍮 1

63 合成真鍮 2

64ソプラノサックス

65アルトサックス

66テナーサックス

67バリトンサックス

68 スイートオーボエ

69イングリッシュホルン

70 ファゴット オーボエ

71クラリネット

72 Piccolo

73フルート

74レコーダー

75パンフルート

76ボトル

77 尺八

78ホイッスル

79オカリナ

80角リード

81 ソーリード

82 カリオペリード

83シフリード

84チャランリード

85 エアコーラス

86 レッツォ4ths

87ベース&リード

88ファンタジア

89ウォームパッド

90ポリシンセパッド

91 ゴーストパッド

92お辞儀パッド

93メタルパッド

94ハローパッド

95スイープパッド

96 アイスレイン

97サウンドトラック

98クリスタル

99雰囲気

100明るさ

101 ゴブリン

102 エコードロップ

103 スターのテーマ

104シタール

105バンジョー

106三味線

107琴

108カリンバ

109 スコットランド

110フィドル

111シャナイ

112 メタルベル

113アゴゴ

114スチールドラム

115 ウッドブロック

116太鼓

117メロディックトム

118 シンセトム

119リバースシンバル

120フレットノイズ

121 ノイズチフ

122海岸

123の鳥

124電話

125ヘリコプター

126スタジアム!!

127銃声

省略した場合、デフォルトの機器値 0 が使用されます。

チャンネル

このパラメータは、どの MIDI チャンネルをプレーヤーに関連付けるかを定義します。 16個あります
可能なチャネル。 チャンネル 10 は打楽器用に予約されています。 省略した場合、
デフォルトのチャネル値 1 が使用されます。

繰り返し

このパラメータは、生成における反復回数を定義します。 その意味は以下によって異なります
以下で説明するように、選択された文法の種類。 iterations パラメータが
構成宣言に含まれている場合、後者の宣言は無視されます。

プレーヤーのローカル変数を宣言するセクション

以下で説明するように、変数はノートの属性のパラメータを制御します。

GRAMophone のメモ

蓄音機でメモを書く方法

注記は、GRAMophone の端末記号の最初のカテゴリです。

GRAMophone は音符に英語表記を使用します。

ABCDEFG

音符の名前は大文字で記述する必要があります。 フラット記号とシャープ記号は、
それぞれ「b」と「#」で表されます。 これらの記号の間にスペースを入れてはなりません。
音名:A#、Gbなど。

ノートの属性

GRAMophone では、ノートにはオクターブ、ベロシティ、デュレーション、リリースという XNUMX つの属性を持つことができます。 の
オクターブ属性は -2 ~ 8 の間で変化し、ベロシティとリリース属性は変化します。
0 から 127 まで。メモが属性なしで書かれた場合、次のデフォルト
値が使用されます: オクターブには 3、ベロシティとリリースには 64。 現在のデフォルト値は、
期間はクロッチェットです。 この例では、「A をください」は単に A[,,,] と書かれています。 これ
は、A が 1 オクターブで、長さ 4/XNUMX、ベロシティで生成されることを意味します。
そして64のリリース。

ノートの属性の定義

ノートの属性は、角括弧内に記述することで定義されます。
ノート名の後にスペースを入れずに続けてください。 ノートには最大 XNUMX つの属性を含めることができます。
各属性タイプは値を XNUMX つだけ持つことができます。

属性は次の順序で定義する必要があります。

オクターブ

速度

デュレーション

リリース

XNUMX つの属性がすべて定義されていない場合、不足している属性にはデフォルト値が使用されます。

属性を含むメモの例をいくつか示します。

C[2, 50+60/2, 240*4,] - ベロシティ 80 で第 XNUMX オクターブの C を演奏します。
期間は 960 (解像度 480 の最小値)、リリースは 64 (デフォルト)
価値);

Db[4,,,] - のデフォルト値を使用して、第 XNUMX オクターブで D フラットを演奏します。
速度、持続時間、リリース。

F#[,,,] - すべての属性にデフォルト値を使用します。

間違った例は次のとおりです。

Db[3, 127, 960, 64, x] - 属性が多すぎます (x は変数です)。

PAUSE

一時停止は、GRAMophone の終端記号の別のカテゴリです。 それらは、
文字 R を持ち、期間タイプ属性のみを受け取ります。 指定しない場合、デフォルトの解像度
値が使用されます。 属性はメモの場合と同じ方法で定義されます。

一時停止の例をいくつか示します。

R[480/2] - 持続時間 240 で一時停止します。

R[] - 期間タイプの属性のデフォルト値を使用します。

コード

コードは、GRAMophone で使用される終端記号の最後のカテゴリです。 コードは系列です
同時に演奏されるノートの数。 GRAMophone では、コードで演奏された音符が囲まれています。
XNUMX つの「^」記号の間。

コードの例をいくつか示します。

^C[,,,]E[,,,]G[,,,]^ - 各ノートのデフォルト値を使用して C メジャーコードを演奏します。

^A[2,80,240,]C[2,,240,]E[2,,240,]^ - 長さ 1/8 の A マイナーコードを演奏します。
すべてのノートは 64 オクターブ、ベロシティ XNUMX (デフォルト値)、最初のノートは
コードの 80 つはベロシティ 64 で演奏され、残りの XNUMX つはベロシティ XNUMX で演奏されます。
(デフォルト値)。

複雑なコードにおける R の役割

コードの音の長さは常に同じであるとは限りません。 たとえば、それは可能です
つまり、長さ 2/1920 の音 C[4,,4,] が演奏されている間、音楽家は XNUMX つ演奏しなければなりません。
C[,,,]、E[,,,]、G[,,,]、Bb[,,,]の順に編みます。 方法があるはずです
C[2,,1920,] と C[,,,] は同時に開始しなければならないと GRAMophone に指示する場合、
E[,,,]は1/4の休止の後に始まり、G[,,,]は2/4の後に、Bb[,,,]は3/4の後に開始しなければなりません。 で
GRAMophone では次のように記述されます。

^C[2,,1920,]C[,,,]R[]E[,,,]R[960]G[,,,]R[1440]Bb[,,,]^

言い換えれば、コード内のすべての音符の前に、ポーズを表すポーズ定義を置くことができます。
ノートを演奏するまでの待ち時間。 どの順番で書いても大丈夫です
コード内の音を下げます。 上の例のコードは次のように書くこともできます。

^R[]E[,,,]C[2,,1920,]R[1440]Bb[,,,]C[,,,]R[960]G[,,,]^

識別子

GRAMophone の言語エンティティ、変数、マクロ、および非終端記号の一部
たとえば、チョムスキー文法には、それを識別できる名前が必要です。 これらの名前
は識別子と呼ばれ、作曲者によって選択されます。 GRAMophone の識別子は次のとおりです
プログラミング言語 Pascal で使用される識別子のシステム。 実際には識別子
は、文字とそれに続く一連の文字または数字で構成されます。 グラモフォンの
識別子も小文字で記述する必要があります。

チョムスキー文法

非終端記号

チョムスキー文法では、非終端記号は構造または「スタイル」を与えるために使用されます。
楽曲。 これらは、「@」の直後に識別子が続いて書かれます。
GRAMophone が使用するチョムスキー文法は文脈に依存しないため、制作責任者は次のことを行うことができます。
非端末のみである必要があります。

非終端記号 @composition

この非終端記号は、単一のプレーヤーの最終的な構成に対応し、
義務的です。

生産オペレーター

これは文字シーケンス「->」によって定義され、プロダクションの先頭を区切ります。
体から。

作品の本体

これには終端 (音符、ポーズ、コード) と終端以外のシーケンスが含まれる場合があります。
シンボル。 各プロダクションはセミコロンで終わる必要があります。

| (または) 演算子

制作物は非決定的である可能性があります。言い換えれば、制作物は XNUMX つ以上の選択肢を提示する可能性があります。
世代中。 非決定的なプロダクションの本体は、さまざまな要素で構成されます。
| で区切られた選択肢オペレーター。 例えば

@non_det->A[,,,]B[,,,]@Seq1|^A[,,,]B[,,,]C[,,,]^@Seq2R[]C[,,,];

は非決定的な生産です。

チョムスキー文法における反復の意味

チョムスキー文法では、生産物にはサイクルが含まれる場合があります。つまり、生産物体には非要素が含まれます。
実際に生産される生産物を指す終端記号。 例えば:

@Sequenza1->B[,,,]A[,,,]C[,,,]@Sequenza1;

生成中の無限ループを回避するために、非終端シンボル @Sequenza1 は次のようになります。
iterations パラメーターと同じ回数だけ処理されます。

リンデンマイヤー文法

リンデンマイヤー文法は終端記号のみを扱い、GRAMophone のバージョンでは次のことが可能です。
コンテキストフリーまたはポリフォニックコンテキストでの作業。 したがって、単音またはコードが表示されることがあります。
制作の先頭に立って。 すべてのプロダクションはセミコロンで区切られます。

オキサンドロロン

これは、生成が開始される最初の生産です。 それは義務です。 生産
オペレーター

これは文字シーケンス「->」によって定義され、プロダクションの先頭を区切ります。
体から。

| (または) 演算子

制作物は非決定的である可能性があります。言い換えれば、制作物は XNUMX つ以上の選択肢を提示する可能性があります。
世代中。 非決定的なプロダクションの本体は、さまざまな要素で構成されます。
| で区切られた選択肢オペレーター。 例えば

A[,,,]->A[,,,]B[,,,]|C[,,,]D[,,,];

は非決定的な生産です。

リンデンマイヤー文法における反復の意味

各ステップで、すべての文法の生成が同時に音符列に適用されます。
この場合、iterations パラメーターは実行されるステップの数を表します。

変数の使用

変数の宣言と初期化

GRAMophone は、以下を使用してノートの属性をパラメトリックに制御できます。
変数。 これらの変数はプレーヤーの宣言セクションで宣言されており、
次のタイプ: オクターブ、ベロシティ、デュレーション、MSB。 変数は次のように書くことで宣言されます。
そのタイプの後に、カンマで区切られた XNUMX つ以上の識別子が続きます。 宣言は必ず
セミコロンで終わります。 プレーヤーの識別子は XNUMX 回だけ宣言する必要があります。

以下は正しい宣言です。

速度x、y;

オクターブ oct、z;

期間 w;

以下は間違った宣言です。

速度 x、x;

オクターブz;

持続時間z;

宣言セクションの後、文法の前に初期化することができます。
= 演算子を使用して変数を取得します。

以下は宣言と初期化の例です。

速度x;

x = 0。

注記付きの変数の使用

変数は音符の属性式で使用されます。 GRAMophone は内部の型を制御します
式のため、オクターブ変数をベロシティ変数に追加することはできません。
例。

以下は note 変数の例です。

速度x;

持続時間z、w;

A[4,x,z+w,]。

実施例
「シュローダー」の作曲「クレッシェンド」{

//このコンポジションでは、速度が増加しながら 64 個の A ノートが生成されます

文法チョムスキー
テンポ120
拍子記号 4/4
反復 64
%
シュローダー選手 {
楽器40
%
速度 x=0;

@composition->A[,x=x+1,,]@composition;
}
}

条件

チョムスキー文法とリンデンマイヤー文法の両方で、次の条件を定義できます。
プロダクション本体内の変数。 条件が true の場合、プロダクションが実行されます。
それ以外の場合はそうではありません。 条件はプロダクション名の直後に定義されます。
「?」を使って記号の後に XNUMX つ以上のブール式が続きます。

ブール演算子は次のとおりです。

! ない

&& と

|| また

関係演算子は次のとおりです。

== ウグアレ

!= ディベルソ

< マイナー

> マッジョーレ

<= ミノレ・オ・ウグアレ

>= マッジョーレ・オ・ウグアレ

以下は条件付きプロダクションの例です。

@battuta?x!=0->A[,x=x-10,,]@battuta;

これは、x がゼロに等しくない間、@battuta プロダクションを生成することを意味します。 それ以外の場合はそうする
ではありません。

ディスコグラフィー、GRAMophone のライブラリ

GRAMophone には、ディスコグラフィーと呼ばれる外部ライブラリを含めることができます。 を含めるには
ソース ファイル内のディスコグラフィーでは、キーワード discography の後にファイル名を使用します。 あ
ディスコグラフィーは、内容が一致する限り、ソース ファイルの任意の位置に含めることができます。
含まれているソースの位置。

マクロ

マクロは、キーワードdefineの後に小文字の識別子と
逆カンマで区切られた文字列。 マクロはソースの先頭で定義する必要があります
構成、構成キーワードの前。 たとえば、単に次のように書くには、
A[,,,] の代わりに、次のマクロを定義する必要があります: "A[,,,]" を定義する

GRAMophoneの機能

repeat() 関数

repeat() 関数は、msb タイプの値とチョムスキーまたはリンデンマイヤーシーケンスを受け取ります。 それ
含まれているシーケンスを msb と同じ回数だけ繰り返すことができます。
型の値。

rand() 関数

rand() 関数は式を受け取り、次の値より小さいランダムな値を返します。
式の値。

GRAMophone のメロディック演算子

転置()

transpose() 演算子は、msb 型の値とチョムスキー シーケンスまたはリンデンマイヤー シーケンスを受け取ります。
関連するシーケンス内のすべてのノートが次のようにトランスポーズされるシーケンスを生成します。
msb タイプの値に等しい半音数。

反転()

inversion() 演算子は、Chomsky シーケンスまたは Lindenmayer シーケンスを受け取ります。 シーケンスを生成します
ここで、取られるシーケンスの最初の音符と他の音符の間の間隔は次のようになります。
逆算してみると。

逆行()

Retrograde() 演算子は、Chomsky シーケンスまたは Lindenmayer シーケンスを受け取ります。 シーケンスを生成します
これは挿入されたシーケンスの逆です。

onworks.net サービスを使用して、gramophone2 をオンラインで使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。