GoGPT Best VPN GoSearch

OnWorks 网站图标

gramophone2 - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 gramophone2

这是命令 gramophone2,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


gramophone2 - GRAMophone 是一种音乐创作的算法生成器。

综合系统


留声机2 [-c|-d] 源文件 [midifile]

配置


-c 是一个选项,允许您控制源的语法而不生成
音乐。

-d 是一个选项,允许您激活调试模式,视频输出
作曲和播放器参数以及生成的音符。

商品描述


在 GRAMophone 中,音乐是使用两种形式语法生成的:乔姆斯基正则
语法(或类型 3)用于自上而下的组合方法和简化版本
BOTTOM UP 方法的 Lindenmayer 语法。

基础课程 概念 OF 留声机


GRAMophone 部分基于 Jon McCormack 的想法,他发明了
虚拟播放器(虚拟音乐家)。 有问题的播放器与 MIDI 轨道相关联,
并解释告诉它该做什么的指令。 通常,他们说播放笔记(发送
MIDI 信息)。 GRAMophone 的演奏者共同组成一个管弦乐队,演奏
组成。

任意数量的演奏者都可以演奏一首乐曲,但实际上所使用的硬件可能
施加一个上限。

一般来说,每个演奏者都会演奏一种乐器,并且每个人都有一套不同的语法规则。
单个玩家的特征在于一组参数,这些参数由整个玩家共享
管弦乐队和/或个人参数集。

管弦乐队的参数包括:

使用的语法类型(乔姆斯基或林登迈耶);

节拍器;

的措施;

生产过程中使用的迭代次数。

每个玩家的参数包括:

使用的语法类型(乔姆斯基或林登迈耶);

这个仪器;

与播放器关联的 MIDI 通道;

生产过程中使用的迭代次数;

玩家笔记的当前状态包括:

八度

体积

为期

释放

这些特征可以通过玩家声明其参数来控制
相关变量。 然后,GRAMophone 允许非确定性生成
音乐,使用乔姆斯基或林登迈尔语法。

GUIDE TO 留声机


“Give Me A”(GRAMophone 的“Hello, World!”)

为了向您介绍基本思想,这里是最简单的算法组合,可以
用 GRAMophone 生成:这个组合简单地生成音符 A 并且是
通过 Chomsky 和 ​​Lindenmayer 方法呈现。

“施罗德”的组成“给我一个”{

//这个作文用乔姆斯基文法生成A音符

语法乔姆斯基
步伐120
时间签名 4/4
%
球员施罗德{
仪器 0
%
@composition->A[,,,];
}
}

“施罗德”的组成“给我一个”{
//这个组合使用Lindenmayer语法生成A音符
语法林登迈尔
步伐120
时间签名 4/4
%
球员施罗德{
仪器 0
%
公理->A[,,,];
}
}

关键词组合E

所有作品都必须以关键字组合开头,后跟一个字符串(倒排
逗号)包含组合的名称。 这后面必须跟关键字 of
然后是另一个包含该作品版权的字符串。

组合块

组合块放在括号中。 分为三部分:一
部分定义组合的参数,一个声明并启动任何全局
变量和管弦乐部分,其中将“演奏”这首曲子的演奏者
定义。 前两个部分由 % 符号分隔。

玩家关键词

每个玩家都用关键字 player 定义,后跟一个标识符。

玩家区块

播放器块放在括号中,分为三个部分:一个部分
定义与播放器关联的轨道的参数,一个声明任何本地
玩家的变量,一个是正式规则。 前两节是
用 % 符号分隔。

评论

在 GRAMophone 中,注释类似于 C:它们必须以字符对 '/*' 开始并结束
使用字符对 '*/.' 星号和斜线之间不能有空格。
GRAMophone 解析器将忽略这些符号对之间的所有内容。 所有的
也可以包括评论行。 注释行以符号 // 开始并结束
在行的末尾,就像在两个初始示例中一样。

定义组合参数的部分

所有管弦乐队的演奏者共享的参数都在此处声明。 参数
可以声明的是:

语法

分辨率

迭代

速度

时间签名

此部分必须以 % 符号结尾。

语法

此参数是必需的,它定义了生成中要使用的语法类型。
这可以是乔姆斯基或林登迈尔。

分辨率

该参数定义了 1/4 持续时间的时间单位数。 如果省略,则默认
将使用值 480。

迭代

此参数定义生成中包含的迭代次数。 它的意义
取决于所选择的语法类型,如下所述。 如果省略,则默认值 1
将被使用。

速度

此参数定义乐曲的节奏。 如果省略,默认值为 120
用过的。

时间签名

此参数定义组合的度量。 如果省略,默认值 4/4 将
使用。

声明组合的全局变量的部分

变量控制音符属性的参数,如下所述。

定义播放器参数的部分

每个玩家的个人参数和变量都在这里声明。 个人参数
可以声明的是:

仪器

渠道

迭代

此部分必须以 % 符号结尾。

仪器

该参数表示演奏者的乐器类型。 GRAMophone 的乐器组是
与通用 MIDI 相同。 可接受的值范围是 0 到 127; 有
因此有 128 种乐器可供选择。 出现显示仪器代码的表格
下面:

0 钢琴

1 Brite 钢琴

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短笛

73笛

74记录器

75 排箫

76瓶

77 尺八

78吹口哨

79陶笛

80方铅

81 锯铅

第82话

第83话

第84话

第85话

第86话

87 贝司和主音

88幻想曲

89暖垫

90 Poly 合成垫

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 Cy片

120品噪音

第121话

122海滨

123鸟

124电话

125直升机

第126话体育场!!

127枪声

如果省略,则使用默认仪器值 0。

渠道

此参数定义哪个 Midi 通道将与播放器相关联。 有 16 个
可能的渠道。 通道 10 为打击乐器保留。 如果省略,则
使用默认通道值 1。

迭代

此参数定义生成中的迭代次数。 它的含义取决于
选择的语法类型,如下所述。 如果迭代参数已经
包含在组合声明中,后面的声明将被忽略。

声明玩家局部变量的部分

变量控制音符属性的参数,如下所述。

留声机中的音符

如何在留声机中记录笔记

音符是 GRAMophone 的第一类终结符。

GRAMophone 使用英文符号表示音符:

ABCDEFG

笔记名称必须用大写字母书写。 扁平和尖锐的符号是
分别用'b'和'#'表示; 这些符号之间不应出现空格,并且
音符名称:A#、Gb 等。

注意属性

GRAMophone 中的音符可以有四个属性:八度、力度、持续时间和释音。 这
八度属性在 -2 和 8 之间变化,而速度和释放属性则变化
从 0 到 127。如果笔记是没有属性写的,那么下面的默认
使用的值:3 表示八度,64 表示力度和释放。 当前的默认值
持续时间是一个钩针。 在示例中,“给我 A”简单地写为 A[,,,]。 这个
表示 A 在第三个八度音阶产生,持续时间为 1/4,速度为
并发布 64。

定义笔记的属性

注释的属性是通过将它们写在方括号内来定义的
跟随笔记的名称,没有空格。 一个音符最多可以有四个属性,并且
每个属性类型可能只有一个值。

必须按以下顺序定义属性:

八度

速度

为期

释放

如果所有三个属性都没有定义,则默认值用于缺少的属性。

以下是一些带有属性的笔记示例:

C[2, 50+60/2, 240*4,] - 在第二个八度演奏 C,力度为 80,
持续时间为 960(最低分辨率为 480)和发布时间为 64(默认
价值);

Db[4,,,] - 在第四个八度演奏降 D,使用默认值
速度、持续时间和释放;

F#[,,,] - 对所有属性使用默认值;

不正确的例子是:

Db[3, 127, 960, 64, x] - 属性太多(x 是一个变量)。

暂停

暂停是 GRAMophone 中的另一类终结符。 它们由
字母 R 并且只采用持续时间类型属性。 如果未指定,则默认分辨率
值被使用。 属性的定义方式与注释相同。

以下是暂停的一些示例:

R[480/2] - 暂停时间为 240;

R[] - 使用持续时间类型属性的默认值。

合唱

和弦是 GRAMophone 中使用的最后一类终结符。 和弦是一个系列
的音符同时演奏。 在 GRAMophone 中,在和弦中演奏的音符是封闭的
两个“^”符号之间。

下面是一些和弦的例子:

^C[,,,]E[,,,]G[,,,]^ - 使用每个音符的默认值演奏 C 大调和弦。

^A[2,80,240,]C[2,]E[240,]^ - 演奏一个 A 小调和弦,持续时间为 2/240,
第二个八度和力度 64(默认值)的所有音符,第一个音符
的和弦以 80 的力度演奏,其余两个以 64 的力度演奏
(默认值)。

R 在复和弦中的作用

和弦的音符并不总是具有相同的持续时间。 例如有可能
也就是说,当演奏持续时间为 2/1920 的音符 C[4,,4,] 时,音乐家必须演奏四个
分叉按以下顺序排列:C[,,,], E[,,,], G[,,,], Bb[,,,]。 必须有办法
告诉 GRAMophone 音符 C[2,,1920,] 和 C[,,,] 必须同时开始,
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

这个非终结符,对应于单个玩家的最终组合,
是必须的。

生产经营者

这是由字符序列 '->' 定义的,并分隔产生式的头部
从身体。

生产主体

这可能包含终结符(音符、停顿和和弦)和非终结符的序列
符号。 每个产生式必须以分号结束。

| (或)运营商

一个产生式可能是不确定的:换句话说,它可能提供两个或多个选择
在一代。 非确定性生产的主体由各种
由 | 分隔的选项操作员。 例如

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

是非确定性的生产。

CHOMSKY 语法中迭代的含义

在乔姆斯基文法中,产生式可能包括循环,即产生式包含非
指代实际生产的产品的终端符号。 例如:

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

为了避免生成过程中的无限循环,非终结符@Sequenza1 是
处理与迭代参数相同的次数。

林登迈耶语法

Lindenmayer 语法只处理终结符,GRAMophone 的版本可以
上下文无关或在和弦上下文中工作。 因此,可以出现单个音符或和弦
在生产的负责人。 所有作品都用分号分隔。

AXIOM

这是一代开始的初始生产。 这是强制性的。 生产
操作员

这是由字符序列 '->' 定义的,并分隔产生式的头部
从身体。

| (或)运营商

一个产生式可能是不确定的:换句话说,它可能提供两个或多个选择
在一代。 非确定性生产的主体由各种
由 | 分隔的选项操作员。 例如

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

是非确定性的生产。

LINDENMAYER 语法中迭代的含义

在每一步,所有的语法产生式都同时应用于音符串。
在这种情况下,迭代参数表示要执行的步骤数。

变量的使用

变量的声明和初始化

GRAMophone 能够通过使用参数来控制音符的属性
变量。 这些变量在玩家的声明部分声明,可能是
以下类型:八度、力度、持续时间和 msb。 一个变量是通过写来声明的
它的类型后跟一个或多个以逗号分隔的标识符。 声明必须
以分号结尾。 玩家的标识符只能声明一次。

以下是正确的声明:

速度 x, y;

八度八度,z;

持续时间 w;

以下是不正确的声明:

速度 x, x;

倍频程 z;

持续时间 z;

在声明部分之后和语法之前,可以初始化
变量通过 = 运算符。

下面是一个声明和初始化的例子:

速度 x;

x = 0;

使用带注释的变量

变量用于音符属性表达式。 GRAMophone 控制其中的类型
表达式,因此不可能将八度变量添加到速度变量,因为
例。

下面是一个音符变量的例子:

速度 x;

持续时间 z, w;

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


“施罗德”的组成“渐强”{

//此乐曲生成 64 个 A 音符,并且速度越来越快

语法乔姆斯基
步伐120
时间签名 4/4
迭代 64
%
球员施罗德{
仪器 40
%
速度 x=0;

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

条件

在 Chomsky 和 ​​Lindenmayer 语法中,都可以定义条件
生产主体中的变量。 如果条件为真,则执行生产;
否则不是。 紧接在生产名称之后定义条件
通过“?” 符号,后跟一个或多个布尔表达式。

布尔运算符是:

! 不是

&& 和

|| 或者

关系运算符是:

== 乌瓜莱

!= 不同

< 次要

> 马焦雷

<= 未成年人

>= maggiore ouguale

下面是一个条件产生式的例子。

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

这意味着:当 x 不等于零时,生成 @battuta 产品; 否则做
不是。

唱片,GRAMophone 的图书馆

GRAMophone 能够包含外部库,称为唱片。 包括一个
在源文件中,使用关键字 discography 后跟其文件名。 一种
可以在源文件中的任何位置包含唱片,只要其内容匹配
包含它的源的位置。



宏可以使用关键字define定义,后跟小写标识符和
字符串放在引号中。 宏必须在源代码的开头定义
组合,在组合关键字之前。 例如,为了简单地写一个
代替 A[,,,],必须定义以下宏:定义一个“A[,,,]”

留声机中的功能

repeat() 函数

repeat() 函数采用 msb 类型值加上 Chomsky 或 Lindenmayer 序列。 它
允许包含的序列重复与 msb 相等的次数
类型值。

rand() 函数

rand() 函数接受一个表达式并返回一个小于
表达式的值。

GRAMophone 中的旋律运算符

转置()

transpose() 运算符采用 msb 类型值加上 Chomsky 或 Lindenmayer 序列。
它生成一个序列,其中相关序列中的所有音符都由
等于 msb 类型值的半音数。

倒置()

inversion() 运算符采用 Chomsky 或 Lindenmayer 序列。 它生成一个序列
其中序列中第一个和其他音符之间的间隔是
反向计算。

逆行()

retrograde() 运算符采用 Chomsky 或 Lindenmayer 序列。 它生成一个序列
这与插入的序列相反。

使用 onworks.net 服务在线使用 gramophone2


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。