Skip to content

This macro package simplifies the arrangement input structure in the Mathematica platform sound module, reducing the amount of code keyed in by the composer and removing a lot of repetitive code structure and functional flaws in the original synthesis on special sounds.|此宏包可简化Mathematica平台声音模块中的编曲输入结构,降低作曲者键入代码量,去除原有合成中大量重复的代码结构和特殊音效上的功能缺陷。

License

Notifications You must be signed in to change notification settings

Genius-Society/mathematica_music_pack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
admin
Jan 15, 2025
83da65d · Jan 15, 2025

History

22 Commits
Nov 4, 2024
Nov 4, 2024
Nov 4, 2024
Jan 15, 2025
Nov 4, 2024
Nov 4, 2024
Nov 4, 2024

Repository files navigation

Mathematica Music Package 编曲简化宏包

license Netlify Status bilibili

A macro package for simplifying composition on Mathematica

Maintenance 维护

git clone git@github.com:Genius-Society/mathematica_music_pack.git
cd mathematica_music_pack

User manual 用户手册

We use vectors and numbers to replace complicated SoundNote[] functions. A complete song has many sections, its format is as follow: 我们使用向量和数字来代替复杂的 SoundNote[] 系列函数。 经简化后的一首完整歌曲格式如下:

track1 = {
    {params of section 1}, (*{片段1参数}*)
    {notes  of section 1}, (*{片段1乐谱}*)

    {params of section 2}, (*{片段2参数}*)
    {notes  of section 2}, (*{片段2乐谱}*)

    ...

    {params of section m}, (*{片段m参数}*)
    {notes  of section m}  (*{片段m乐谱}*)
};

track2 = {
    {params of section 1}, (*{片段1参数}*)
    {notes  of section 1}, (*{片段1乐谱}*)

    {params of section 2}, (*{片段2参数}*)
    {notes  of section 2}, (*{片段2乐谱}*)

    ...

    {params of section n}, (*{片段n参数}*)
    {notes  of section n}  (*{片段n乐谱}*)
};

...

player[track1, soundfont1, track2, soundfont2, ...]
(*player[track1, 音色1, track2, 音色2, ...]*)

One section consists of an info part and a note part, the info part includes 4 required params(tonality, central note, transposition, tempo) and one optional param(volume number or volume change vector); While the note part contains melodies and chords. The info part follows below format rules: 一个片段由参数域和乐谱域组成,参数域包含4个必要参数(音调、中心音、移调、速度)和一个可选参数(音量 或 音量变化);其中参数域遵循以下规则:

Table 1: Param part format (表 1: 参数域格式)
Format 格式
Remark 符号
{m, c, s, t} m is 0(major) or 1(minor) 为大小调(0大调,1小调);
c is central note integer 为中心音 ([0, 11]);
s is transposing(The whole piece moves up s semitones) 为移调(片段整体移动s个半音);
t is tempo(the number = a quarter note) 为速度(即乐谱左上角标记的一个四分音符所等于的数字);
{m, c, s, t, v} v is volume 为音量 ([0, 1]);
{m, c, s, t, {vs, vt}} Volume fades from vs to vt (音量从 vs 渐变到 vt)

The central note list is as follow:

Table 2: Central note list (表 2: 中心音表)
C C#/Db D Eb/D# E F F#/Gb G Ab/G# A Bb/A# B
0 1 2 3 4 5 6 7 8 9 10 11

The note part has melodies and chords, which consists of different kinds of notes: 乐谱域由不同种类的音符组成:

Table 3: Input formats of notes (表 3: 音符的输入格式)
Effect 音效 Format 格式 Remark 符号
Rest 休止符 {l} l is duration (为时值);
Tone 音符 {n, l} n is note value (为音高);
Chord 和弦 {{n1, n2, ...}, l} nk are chord note values (为和弦上各音符音高);
Staccato 跳音 {n, {l1, l2}} l1 is real duration (为时值), l2 is duration ratio (为缩短后时值占真实时值比率);
Vibrato 颤音 {{n1, n2}, l1, tn} tn is trill number (为抖动次数);
Arpeggio 波音 {{n1, n2, ...}, l1, l2} l2 is duration ratio (为琶音变化时值占真总时值比);
Tenuto 延音 {bottom note, top notes} Bottom note can be a tone or a chord, top notes consist of any above type. 背景音可以是一个音符或一个和弦, 主题旋律可以由上述任何类型组成

With these rules, we can get a concise format of notes. 根据以上规则,给出以下音效示例:

Table 4: Sound effect demos (表 4: 音效示例)

For notes in the note part, 12-note scheme is unfriendly to us, it can be transferred into 7-note scheme once the tonality is fixed: 对于乐谱域的音符,12音模式使用起来并不方便,一旦调性固定,可将其转为7音模式:

Table 5: The 12-note scheme(left) & 7-note scheme(right) 表 5: (左)12音模式 与 (右)7音模式

Please refer to the demo code Demo_BWV-1079.nb or visit our song library https://mathmusic.netlify.app for more details; Before compiling songs, please run the macro package first. 可参考示例代码 Demo_BWV-1079.nb 或浏览 我的Mathematica音乐库 来弄清具体用法; 生成乐谱之前请先运行 mathematica_music_pack.nb

Besides, the e-piano.nb is a piano keyboard UI, you can play it as a virtual piano on Mathematica. 另外,e-piano.nb 是一个编写于 Mathematica 上的钢琴键盘,可作为虚拟钢琴来弹奏。

About

This macro package simplifies the arrangement input structure in the Mathematica platform sound module, reducing the amount of code keyed in by the composer and removing a lot of repetitive code structure and functional flaws in the original synthesis on special sounds.|此宏包可简化Mathematica平台声音模块中的编曲输入结构,降低作曲者键入代码量,去除原有合成中大量重复的代码结构和特殊音效上的功能缺陷。

Topics

Resources

License

Stars

Watchers

Forks