英语法语西班牙语

Ad


OnWorks 网站图标

midge - 云端在线

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

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

程序:

您的姓名


midge - 从音乐的文本描述生成midi文件

概要


[选项] [文件名]

商品描述


从音乐的文本描述生成类型 1 的 MIDI 文件。 需要它的
来自标准输入的输入,除非 文件名 已指定。

配置


-h or - 帮帮我

显示帮助文本。

- 版 or - 保修单 或者 - 关于

显示版本和许可证信息。

-v or --详细

将详细输出打印到标准输出。

-d or -调试

将调试输出打印到标准输出(自动设置详细模式)。

-q or - 安静的

安静的。 没有标准输出。

-o 文件 or --输出文件 文件

MIDI输出到 文件. 否则到 a.out.mid

-c or - 查看

只检查输入; 没有midi输出。

-u or --展开循环

在解析之前展开所有重复块并将展开的源代码保存到
新文件 (*.long.mg)。 如果需要,应自动设置。

-U or --不展开保存

不要将展开的源保存到文件中。

-R or --无重置

不要在曲目开头插入“重置所有控制器”事件。

-t BPM or - 速度 BPM

将速度设置为 BPM 每分钟节拍次数,覆盖输入文件中设置的值。

-b 步骤 or --弯曲步骤 步骤

为简单的弯音语法设置每四分音符的步数。

--不安全

不要使用 Safe.pm 来运行 Perl 代码 %评估 块。

-s or - 种子

使用 作为随机数生成器的种子。

-S [规模 [根]] or --显示比例 [规模 [根]]

列出笔记 规模 启动 。 如果 省略 c4 使用。 如果 规模 is
省略,显示支持的规模列表。

-I or - 包括

地址 包括路径。 可以指定多次或 可以是一个列表
用冒号或逗号分隔。

INPUT 语言


播放 E 音阶的示例源文件。

================开始文件======================

# 这一行是注释

@头 { # 必须正好有 1 个@head 部分

# 设置时间签名

$time_sig 4/4

# 在 BPM 中设置节奏

$节奏 120

} #@head部分结束

@身体 { # 必须正好有 1 个@body 部分

# 在频道 1 上开始音乐曲目

# 多个音轨可以使用同一个频道

@渠道 1{

# 将补丁设置为电贝司

$补丁 34

# 笔记。 请参阅下面的说明。

/l4/e3 # 第三个八度的四分音符 e

f+ # f 尖相同的八度音程相同的长度

# 使用`-' 用于平面

g+ ab # 剩余的音符

c+4 d+ e # c 处的八度变化

} # 曲目结束

} #@body部分结束

========================结束文件====================

更多示例包含在存档的 examples/ 目录中。

在下面的, 是必需参数,[name] 是可选参数。

笔记。

注释的格式为:[/选项/]<姓名>[+|-][八度]

/选项/ 部分可以包含以下内容:

l[分子:]

将音符的长度设置为 (分子 或一)除以 分母. IE。 l4 = 四分之一
音符,l1 = 全音符,l3:4 = 3/4 音符(并列 3 个四分音符)。 一个大写的`L' 也许
用于将其与“1”区分开来。

r

设置重复音符的次数。 例如

/l8r16 /

使音符持续时间为 1/8 并重复音符 16 次。

a

设置音符的力度(起音)

d

设置音符的音符关闭速度(衰减)

z[+|-] [%]

将音符偏移 midi 点击。 正值演奏晚音符和负值
价值观发挥它早。 如果 后跟一个`%´ 字符它被视为一个百分比
当前音符长度。 偏移值是 不能 由后续笔记继承。

Z[+|-] [%]

如上`z´ 选项,但使用随机值。 如果 是消极的还是积极的
(加号 必须),一个介于零和 用来。 如果没有标志,一个
正负之间的值 用来。

偏移选项不适用于 r重复音符选项,但同样的效果可以
使用一个 %重复 块。

除非前面有休止符,否则音符不能向后偏移(即提前弹奏)。 到
解决这个问题我已经添加了 $缩短 关键字,如下所述。 也可以看看 $取消量化.

姓名 是笔记的名称,即。 [ag] 必须.

+ 尖锐。

- 平面。

八度 是midi 八度,即。 [1-11]。 虽然大多数midi软件使用0表示最低
八度,我使用了 1 来与 MIDI 通道和乐器名称保持一致
两者都从 1 开始计数。

如果没有指定,长度、八度、起音和衰减​​都继承自之前的
注意。

在鼓轨道中,可以使用别名代替音符名称。 例如,要获得一个
打开嗨帽,而不是`f+3'你可以使用`呵呵'。 有关完整列表,请参阅 README.drums
别名。

休息。

休息写成注释`r', 和 /选项/ 与笔记相同,但只有
使用的长度和重复选项。 长度值从音符继承到休止符,反之亦然
反之亦然。

酒吧。

管道符号 (`|') 可用于表示条形。 不检查条的长度-
这只是为了允许更多可读的源文件。 条可以通过附加一个编号
数字到管道符号。 它们可以用下划线分隔,但不能用空格分隔。

简单的条形示例: | cdef | 加布

编号条形示例:|1 cdef |2 gabc

|_1 cdef |_2 gabc

可以使用以下命令检查条形的一致性 $bar_strict 中的关键字 @头
部分。 这会给出错误或警告,除非所有轨道都具有相同的条数和
编号条同时出现在每个轨道中:

$bar_strict 警告 # 打印不一致条的警告消息。

$bar_strict 错误 # 以不一致的柱线的错误消息退出。

顶级关键字。

@头 { 内容 }

必须只有一个 @头 部分。 见下面的描述 内容.

@身体 { 内容 }

必须只有一个 @身体 部分。 见下面的描述 内容.

中的关键字 @头 部分。

$time_sig

b 值必须是 4、8、16、32、64 之一。

$节奏

t 是 BPM 中的节奏。

以上皆是 $time_sig$节奏 也允许在 @channel 块中(如下所述)。

$ 标题

将歌曲的标题设置为 标题。 如果 标题 包含空格,它必须在 double 内
引号。

$分辨率

将每四分音符的 MIDI 点击次数设置为 n. 默认值为 96。

中的关键字 @身体 部分。

%定义 {笔记}

定义一个序列 笔记,将其分配给 姓名 在音乐曲目中被召回。 已定义
使用序列包括:

~[/转置/]

在轨道内包含序列 姓名, 转置 半音。 之前
定义的序列可用于后续 %定义 块。 例如:

%定义 a_riff { a3 a c4 d }

%定义 d_riff { d4 dfg }

%定义 主重复段{ ~一个_riff ~d_riff }

虽然我们可以通过调换第一个即兴演奏来获得相同的结果
第二:

%定义 a_riff { a3 a c4 d }

%定义 主重复段{ ~一个_riff ~一个_riff/ 5 / }

定义 块也可能包含重复块、弯曲块和 $volume/patch/reverb 等。

@渠道 [名称] { 内容 }

在频道上开始一个 MIDI 曲目 , 可选择将仪器名称设置为 姓名。 如果
姓名 包含空格,它必须在双引号内。

内容 可以包括音符、休止符、先前定义的序列以及以下内容
关键字:

$time_sig

更改歌曲的拍号(影响所有曲目)。 这 b 值必须是其中之一
4 8,16,32,64。

$节奏

更改歌曲速度(影响所有曲目)。 t 在 BPM 中。

$补丁 [[bank_LSB,]bank_MSB,]

将此通道的补丁编号设置为 or 姓名。 哪里 是从 1 到 128 和
姓名 是 README.patches 中定义的别名。 可选地选择银行号码 银行_MSB.
可选地选择银行 LSB 编号 银行_LSB (用于外接MIDI键盘)。 每个值
必须在 1-128 的范围内。

$银行 [最低标准,]

选择银行号码 MSB. 可选择设置 LSB 值(用于外部 MIDI
键盘)到 LSB. 这两个值都必须在 1-128 的范围内。

$长度 [n:]

设置默认音符长度。 该值的指定格式与注释选项中的格式相同。

$缩短

将每个音符缩短 midi 咔哒声,以允许音符向后偏移的空间。

$取消量化 [+|-] [%]

对每个音符应用随机偏移量。 具有相同的含义 Z 注意选项
以上。

$八度

将默认八度设置为

$体积

将曲目音量设置为

$攻击

将音符的起音设置为

$衰减

将音符的衰减设置为

$混响

将混响深度设置为 在当前频道。

$合唱团

将合唱深度设置为 在当前频道。

$盘

将平移值设置为 . 0 是左边 127 是右边。

音量、起音、衰减、混响、合唱和声相值必须是 0 到 127 之间的整数。
它们也可以指定为一个范围(例如`8-64'),在这种情况下,随机值在
范围被使用。

%pan_all { 注意值 ... }

为每个后续实例设置平移值 注意 在当前曲目中。 这是
主要用于平移架子鼓,但也可用于其他轨道。 折扣值
一个整数或一个范围(例如`8-64')。 多种的 注意 折扣值 允许配对。 如果两个音符
使用不同的 pan_all 值同时播放任何事情都可能发生。

要使用范围影响通道中的每个音符,请使用 `*' 或`任何' 为了 注意。 该
/r4/重复音符的方法不适用于此选项,但效果相同
可以使用重复块来实现。

$ marker

添加一个标记事件 文本 因为它的内容。 如果 文本 包含必须用引号引起来的空格
使用双引号字符。

%重复 {笔记}

重复新密码 笔记 倍。 笔记 可以包括音符、休止符、预定义的序列和其他
%重复 块。

%弯曲 { 事件 ... }

播放 注意 并以multiple描述的方式移动音轮 活动s,其中有
以下格式:

[n:] <+|->

哪里 nd 指定从音符开始或从前一个事件开始的时间,在
与音符长度相同的格式,以及 折扣值 是将音符弯曲的量(加号
或减号是必需的)。 默认的音轮范围为 +/- 2 个半音一个值
32 等于一个半音。 请注意,弯曲量是相对的。 最大值
累积的 弯曲量正负64。

例如以下内容:

%弯曲 a3 { 4+32 4-32 2+0 }

弹奏 3/1 音符的 a4 音符,向上弯曲 1/4 的整个音调,然后返回到 a3 并
保持 1/2 音符。

$弯曲范围

将音轮范围更改为 +/- . 这设置了最大的上下弯曲,所以如果
它设置为 4,弯曲值 64 将向上弯曲 4 个半音,-64 将向下弯曲 4
半音。 大多数 MIDI 设备的默认范围是 2 个半音。

$间距

将音轮值设置为 VAL. 这可以与单独的注释结合使用
并记下事件(参见下面的“同时注释”)以创建复杂的弯曲
效果。 不像 %弯曲 上面的语法,这确实 不能 将音轮重置为空档
位置 (64)

可以使用以下语法创建更简单的弯音:

/l8/e4=>g4=>e4

这在一个持续时间内以线性步长从 e4 向上弯曲到 g4 并返回到 e4
八分音符。 默认情况下,每个四分音符持续时间有 16 个步骤(这里有 8 个步骤)
例如),但可以使用“-b”命令行开关设置不同的值。 任何数字
可以使用的音符,但第一个必须有一个长度值,每个必须
有一个八度值。

%选择 [时间] { 加权项 ... }

其中 time 是格式 [n:] 的长度值与长度选项中使用的相同,
省略了“l”。

If 未指定:

选一个 项目 从列表中,其中每个 项目 可以是音符、休止符或预定义的即兴演奏,并且
每个项目都有一个 权重 这定义了它被选择的可能性。 例如:

%选择 { 2 a3 4 c5 3 e4 1 g3 }

给 a3 20% 的机会,c5 - 40% ; e4 - 30% 和 g3 - 10% 每项 必须 有一个权重。
另请参阅下面的比例。

if 指定:

选择多个 项目s 从列表到长度 。 如果所有 项目s 太长了
结束即兴演奏 ,余数充满了休止符。 使用时选择
这样,每个音符或休止符都必须有一个长度值,并且使用的任何预定义的即兴演奏都必须
有一个固定的长度(即第一个音符必须有一个长度值),以及
整个 riff 必须以与音符相同的格式在选择块中指定。 为了
例:

%define riff_1 { /l2/a3 /l4/b c4 } # riff 是 1 小节长

%选择 4:1 { # 选择 4 个小节

1 /l8/d4 3 /l8/e4 2 /l4/g4 1 /l1/~riff_1

}

If is 0 or - 然后midge 寻找如下形式的块:

韵律 { n[:d] ... }

它被视为一系列音符长度值,其音高是从
列表。 其他标记通过,因此您可以插入特定的音符,预定义的即兴演奏
或休息。 块中以下划线开头的任何标记都将通过
删除了下划线。 有关示例,请参见 examples/tutorial/choose_scale.mg。

指定音符/权重列表的另一种方法是使用 规模 关键词:

规模 次要 /l8/g4-6 [重量...]

这将选择从第 4 到第 6 个八度(即 g4 到 g6)的 G 小调音阶。 长度值
如果您使用的是节奏块,则没有必要。 如果 -6 省略了一个八度音程
用过的。

权重块按顺序指定音符权重。 如果省略所有权重
平等的。 要输入一个音符,使用 0 的权重,但有 必须 成为每个音符的权重
如果块存在。

-S 开关可用于在音阶或支持的音阶列表中显示音符。

%链 {
开始
注1 [重量注...]
...
节奏[重量长度...] or 节奏 { 长度 ... } }

定义一个“链”结构,其中每个音符都有一个加权的音符列表,可以
跟着它。 从所有使用的音符中随机挑选一个起点,或指定
开始 关键字,然后从适当的列表中选择后续的音符,直到
总长度 .

韵律 关键字有两种形式: 使用方括号`[]',一个带权重的笔记列表
可以定义长度,将随机选择。 使用大括号“{}”,一个列表
可以定义将按顺序使用的长度值(必要时重复)。 到
只播放一次节奏块,设置 0 or -. 在这种情况下,节奏
块的解析方式与上述相同 %选择 时间设置为零。 这
关键词 可以用作同义词 韵律.

开始 关键字指定使用链时开始的音符。 如果 开始 is
省略,开始音符是随机选择的。

另一种定义注释的方法 block 是使用内置比例尺之一。 然后
权重以矩阵的形式指定,每个“来自”注释都有一行(一个
对于音阶的每个音符)和每个“到”音符的列。 这种形式的一个例子可以
在文件 examples/tutorial/chain_scale.mg 中找到

要使用选择或链块,必须使用 unroll-loops 选项编译文件
(当找到一个选择块或链块时它会自动设置)。 此选项保存
在一个新文件中展开源代码,所以如果它产生特别好的输出,你有一个
您可以对其进行其他更改而不会丢失生成的曲目的精确副本。

请注意,选择和链块不能在 %define 内或在另一个选择或
链块。

%评估 { Perl 代码}

运行 Perl 代码块并用 Perl 返回的值替换 %eval 块
码。

%评估 - { Perl 代码}

运行一段 Perl 代码而不读取返回值。

Perl 代码使用 Safe 模块(如果存在)运行,包括 :base_core、:base_math 和
:base_mem 允许。 如果 Safe.pm 不可用或需要更多权限,则 --unsafe
选项导致蠓在它自己的 perl 进程中运行 %eval 块。

在源中的任何点都允许使用关键字。

%包括

包括以下内容 文件 就好像它们是在源代码中的那个时候写的一样
文件中。 必须 在源文件中独占一行。

同时注。

同时演奏音符的最灵活方式是使用单独的音轨(您可以使用
相同的通道/补丁),或使用单独的音符打开和音符关闭事件(见下文)。
但是,有一种更简单的方法,但有一些限制。 例如: ( c e g ) 会玩
c、e 和 g 同时发出 C 和弦。 所有同时的长度
注释与第一个相同(由它自己的长度值或
从前一个音符、休止符或 $length 声明继承而来。

使用它来制作和弦的一种方法如下:

%定义 未成年人 { ( c e- g ) } # 将小调定义为 c-小调

%定义 主要 { ( c e g ) } # 将专业定义为 c 专业

%定义 7日 { ( c e g b- ) } # 将 7th 定义为 c-7th

然后您可以在您的音乐曲目中使用:

$length 4 $octave 4 # 设置默认长度和八度

~主要 # 演奏 c 大调

~次要/9/ # 演奏一个小调

~7日/5/ # 播放 f-7

为了使和弦听起来被弹奏, 可以使用关键字:

$弹奏 5

这会将后续和弦中每个音符之间的间隔设置为 5 次 midi 咔嗒声。

要在一个轨道上创建复杂的同步音符模式,请将音符和音符分开
可以使用关闭事件。 这些以与普通音符相同的方式指定,但带有 +
预先为注意和一个 - 预先准备好笔记。 长度和重复选项不能
使用。 以这种方式输入的音符长度由放置休止符或其他
音符开和音符关事件之间的音符。 例如:

+c4/l4/r ++克/升/升 -c -e -g

弹奏并保持 c4,在 1/4 个音符弹奏并保持 e4 之后,在另一个 1/4 个音符弹奏之后
并保持 g4,在进一步的 1/2 音符后释放所有三个。

连音。

虽然可以通过选择合适的音符长度来创建连音,但它们也可以
使用更传统的方式编写 %连音 关键词:

%连音 n:d { 注释... }

扮演 n 空间中的注释 d. 笔记 可以包含@channel 块中允许的任何内容。
然后音符值会自动更改以创建连音。 例如:

%tuplet 5:3 { /l8/e4 fgfe }

在三个空间中演奏五个八分音符。 连音可以嵌套到任何深度。 看
examples/tutorial/tuplet.mg 示例。 蠓 不能 检查音乐的长度
连音块内部是正确的。

按键

如果您想将您的 MIDI 文件导入符号编辑器,您将需要设置密钥。
这是通过以下方式完成的:

$键 [+|-][米]

其中 姓名 是 ag,+|- 是尖锐和平坦的,而 m 是次要的。 如果整块留在
您可以在@head 部分中设置相同的键,否则它可以出现在
@channel 部分,并将影响所有曲目。

如果您习惯于常规的乐谱并希望音符自动变尖或变平
根据密钥,使用 $key_strict 关键字代替。 要获得自然的音符,请使用 =
符号,例如在 G 中, f= 发挥f自然。 这 $key_strict 关键字只能用于
@head 部分。 仍然可以使用常规更改密钥 $键 关键词。

$控制

设置控制器编号 NUMVAL.

$rpn [数字-msb,] [,val-lsb]

设置rpn控制器 NUMVAL

$nrpn [数字-msb,] [,val-lsb]

设置 nrpn 控制器 NUMVAL

%逐字 {字节值...}

将一串字节插入到 MIDI 文件中。 每个 字节值 可以是十进制 (0-255)
或十六进制 (0x00-0xFF)。 关键字 字节 可以代替 逐字.

$打印

打印 文本 到标准输出。 如果 文本 包含空格,必须使用双引号 (").

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


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad