Magenta之note

发布时间:2025-11-16 06:25

Magenta 中的所有内容都以 NoteSequences(音符序列) 为中心。这是一系列音符的抽象表示,每个音符都有不同的音高、乐器和敲击速度,很像 MIDI。

下面就是一个 NoteSequence 的代码实现,播放出来就是“一闪一闪小星星(Twinkle Twinkle Little Star)”这首歌。

import note_seq import note_seq.protobuf.music_pb2 twinkle_twinkle = note_seq.protobuf.music_pb2.NoteSequence() twinkle_twinkle.notes.add(pitch=60, start_time=0.0, end_time=0.5, velocity=80) twinkle_twinkle.notes.add(pitch=60, start_time=0.5, end_time=1.0, velocity=80) twinkle_twinkle.notes.add(pitch=67, start_time=1.0, end_time=1.5, velocity=80) twinkle_twinkle.notes.add(pitch=67, start_time=1.5, end_time=2.0, velocity=80) twinkle_twinkle.notes.add(pitch=69, start_time=2.0, end_time=2.5, velocity=80) twinkle_twinkle.notes.add(pitch=69, start_time=2.5, end_time=3.0, velocity=80) twinkle_twinkle.notes.add(pitch=67, start_time=3.0, end_time=4.0, velocity=80) twinkle_twinkle.notes.add(pitch=65, start_time=4.0, end_time=4.5, velocity=80) twinkle_twinkle.notes.add(pitch=65, start_time=4.5, end_time=5.0, velocity=80) twinkle_twinkle.notes.add(pitch=64, start_time=5.0, end_time=5.5, velocity=80) twinkle_twinkle.notes.add(pitch=64, start_time=5.5, end_time=6.0, velocity=80) twinkle_twinkle.notes.add(pitch=62, start_time=6.0, end_time=6.5, velocity=80) twinkle_twinkle.notes.add(pitch=62, start_time=6.5, end_time=7.0, velocity=80) twinkle_twinkle.notes.add(pitch=60, start_time=7.0, end_time=8.0, velocity=80) twinkle_twinkle.total_time = 8 twinkle_twinkle.tempos.add(qpm=60) note_seq.sequence_proto_to_midi_file(twinkle_twinkle, '11.mid')

歌曲
一闪一闪的小星星

需要导入note-seq 这个专注于音乐序列生成的工具。

pip install note-seq

note-seq 是 Google AI 开发的一个用于表示和操作音乐序列的序列化格式。它可以用于存储和传输音乐数据,以及进行音乐生成、编辑和分析。

Note-seq 的核心是 Note 对象,它表示一个音乐音符。
Note-seq 还支持 NoteSequence 对象,它表示一个音乐序列。一个 NoteSequence 对象包含一个或多个 Note 对象,并可以指定序列的开始时间和结束时间。

音乐音符 Note 对象常见属性如下:

小星星示例代码参数说明

pitch 音符的音高

pitch 参数是音符的音高,以 MIDI 音符编号的形式表示。

MIDI 音符编号的范围是 0 到 127,其中 0 表示最低音的 C 音,127 表示最高音的 G 音。

MIDI 音符编号 音符 0 C1 1 C#1 2 D1 3 D#1 4 E1 5 F1 6 F#1 7 G1 8 G#1 9 A1 10 A#1 11 B1 12 C2 13 C#2 ... ... 127 G7

上面示例代码中,pitch 参数的值分别是 69、71、73、74、76 和 81,这意味着这九个音符的音高分别是:

E4 G4 B4 C5 E5 G5 E6 G6 E6

注意,MIDI 音符编号是相对于中音 C 音而言的,因此 E4 的音高比中音 C 音高一个八度。

velocity 音符的力度

velocity 参数是音符的力度,范围是 0 到 127。其中 0 表示最弱的力度,127 表示最强的力度。

在 MIDI 中,velocity 参数表示的是音符被击打的力度。力度越大,音符的音量越大,音色也越明亮。

前面代码中,所有音符的 velocity 参数都设置为 80,这意味着所有音符的力度都是中等的。

velocity 参数值 力度 0 最弱 30 弱 60 中等 90 强 127 最强

qpm 节拍

teapot.tempos.add(qpm=60) 表示节拍。qpm 是每分钟拍数的缩写,60 表示每分钟 60 拍。

在 MIDI 中,节拍是用来表示音乐的速度的。节拍越快,音乐的速度就越快。

示例代码中,qpm=60 表示音乐的速度是每分钟 60 拍。这意味着,每分钟有 60 个音符被演奏,每个音符的持续时间是 60 / 60 = 1 秒。

常见的节拍设置:

节拍设置 速度 60 每分钟 60 拍 80 每分钟 80 拍 120 每分钟 120 拍 160 每分钟 160 拍

架子鼓独奏

您可以将其他乐器用于您的序列。例如,下面的序列听起来应该像架子鼓独奏

import note_seq import note_seq.protobuf.music_pb2 drums = note_seq.protobuf.music_pb2.NoteSequence() drums.notes.add(pitch=36, start_time=0, end_time=0.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=38, start_time=0, end_time=0.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=0, end_time=0.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=46, start_time=0, end_time=0.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=0.25, end_time=0.375, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=0.375, end_time=0.5, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=0.5, end_time=0.625, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=50, start_time=0.5, end_time=0.625, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=36, start_time=0.75, end_time=0.875, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=38, start_time=0.75, end_time=0.875, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=0.75, end_time=0.875, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=45, start_time=0.75, end_time=0.875, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=36, start_time=1, end_time=1.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=1, end_time=1.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=46, start_time=1, end_time=1.125, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=42, start_time=1.25, end_time=1.375, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=48, start_time=1.25, end_time=1.375, is_drum=True, instrument=10, velocity=80) drums.notes.add(pitch=50, start_time=1.25, end_time=1.375, is_drum=True, instrument=10, velocity=80) drums.total_time = 1.375 drums.tempos.add(qpm=60) note_seq.sequence_proto_to_midi_file(drums, '12.mid')

额外参数说明

is_drum 是否为鼓音符

is_drum 参数指定该音符是否为鼓音符。

如果 is_drum 为 True,则该音符将在鼓通道上播放。 如果 is_drum 为 False,则该音符将在旋律通道上播放。

instrument 音色/播放乐器

instrument 参数指定用于播放音符的 MIDI 乐器。MIDI 乐器编号是一个从 0 到 127 的整数。不同乐器具有不同的声音。例如,乐器 0 是钢琴,乐器 1 是明亮的钢琴,乐器 2 是电钢琴。

示例中 instrument 参数对于所有音符都设置为 10,这对应于 MIDI 乐器“高音鼓”。

以下是 MIDI 乐器编号与乐器名称的对应关系:

编号 英文名 中文名 0 Acoustic Grand Piano 钢琴 1 Bright Acoustic Piano 明亮钢琴 2 Electric Grand Piano 电钢琴 3 Honky-tonk Piano 乡村钢琴 4 Electric Piano 1 电钢琴 1 5 Electric Piano 2 电钢琴 2 6 Harpsichord 羽管键琴 7 Clavinet 电子琴 8 Celeste 钢片琴 9 Glockenspiel 钟琴 10 Music Box 音乐盒 11 Vibraphone 颤音琴 12 Marimba 马林巴琴 13 Xylophone 木琴 14 Tubular Bells 管钟 15 Dulcimer 扬琴 16 Drawbar Organ 拉杆风琴 17 Church Organ 管风琴 18 Reed Organ 簧风琴 19 Accordion 手风琴 20 Harmonica 口琴 21 Tango Accordion 探戈手风琴 22 Acoustic Guitar (nylon) 尼龙弦吉他 23 Acoustic Guitar (steel) 钢弦吉他 24 Electric Guitar (jazz) 爵士电吉他 25 Electric Guitar (clean) 清音电吉他 26 Electric Guitar (muted) 闷音电吉他 27 Overdriven Guitar 失真电吉他 28 Distortion Guitar 失真电吉他 29 Acoustic Bass 原声贝斯 30 Electric Bass (finger) 指弹电贝斯 31 Electric Bass (pick) 拨片电贝斯 32 Fretless Bass 无品贝斯 33 Slap Bass 1 拨片贝斯 1 34 Slap Bass 2 拨片贝斯 2 35 Synth Bass 1 合成贝斯 1 36 Synth Bass 2 合成贝斯 2 37 Violin 小提琴 38 Viola 中提琴 39 Cello 大提琴 40 Contrabass 低音提琴 41 Tremolo Strings 颤音弦乐 42 Pizzicato Strings 撥奏弦乐 43 Orchestral Harp 管弦乐竖琴 44 Timpani 定音鼓 45 Strings 弦乐 46 Synth Strings 1 合成弦乐 1 47 Synth Strings 2 合成弦乐 2 48 Choir Aahs 合唱啊 49 Choir Oohs 合唱哦 50 Synth Choir 合成合唱 51 Orchestral Hit 管弦乐打击乐 52 Trumpet 小号 53 Trombone 长号 54 Tuba 大号 55 French Horn 法国号 56 Brass Section 铜管乐组 57 Synth Brass 1 合成铜管乐 1 58 Synth Brass 2 合成铜管乐 2 59 Soprano Sax 高音萨克斯管 60 Alto Sax 中音萨克斯管 61 Tenor Sax 次中音萨克斯管 62 Baritone Sax 低音萨克斯管 63 Oboe 双簧管 64 English Horn 英国管 65 Clarinet 单簧管 66 Bassoon 巴松管 67 Clarinet Bass 低音单簧管 68 Contrabassoon 大管 69 Flute 长笛 70 Pan Flute 排笛 71 Recorder 竖笛 72 Blown Bottle 吹瓶 73 Shakuhachi 尺八 74 Whistle 哨子 75 Ocarina 葫芦丝 76 Synth Pad 1 合成垫 1 77 Synth Pad 2 合成垫 2 78 Synth Pad 3 合成垫 3 79 Synth Pad 4 合成垫 4 80 Synth Pad 5 合成垫 5 81 Synth Pad 6 合成垫 6 82 Synth Pad 7 合成垫 7 83 Synth Pad 8 合成垫 8 84 Synth Pad 9 合成垫 9 85 Synth Pad 10 合成垫 10 86 Synth Drum 1 合成鼓 1 87 Synth Drum 2 合成鼓 2 88 Synth Drum 3 合成鼓 3 89 Synth Drum 4 合成鼓 4 90 Synth Drum 5 合成鼓 5 91 Synth Drum 6 合成鼓 6 92 Synth Drum 7 合成鼓 7 93 Synth Drum 8 合成鼓 8 94 Synth Drum 9 合成鼓 9 95 Synth Drum 10 合成鼓 10 96 Reverse Cymbal 反向镲 97 Guitar Fret Noise 吉他弦噪音 98 Breath Noise 呼吸声 99 Seashore 海滩 100 Bird Tweet 鸟鸣 101 Telephone Ring 电话铃声 102 Doorbell 门铃 103 Ambulance 救护车 104 Fire Engine 消防车 105 Siren 警报声 106 Train 火车 107 Car 汽车 108 Horse 马 109 Footsteps 脚步声 110 Applause 掌声 111 Gunshot 枪声 112 Explosion 爆炸 113 Hi-hat 踩镲 114 Crash Cymbal 落镲 115 Ride Cymbal 骑马镲 116 Open Hi-hat 开放踩镲 117 Low Tom 低音鼓 118 Mid Tom 中音鼓 119 High Tom 高音鼓 120 Crash Cymbal 1 落镲 1 121 Crash Cymbal 2 落镲 2 122 Ride Cymbal 1 骑马镲 1 123 Ride Cymbal 2 骑马镲 2 124 Chinese Cymbal 中国镲 125 Ride Bell 骑马铃 126 Tambourine 手鼓 127 Splash Cymbal 溅水镲

上述代码鼓点由以下四个部分组成:

一个由 4 个连续音符组成的低音鼓打击,持续时间为 0.25 秒。 一个由 4 个连续音符组成的高音鼓打击,持续时间为 0.25 秒。 一个由 4 个连续音符组成的军鼓打击,持续时间为 0.25 秒。 一个由 4 个连续音符组成的闭合 Hi-hat 打击,持续时间为 0.25 秒。

总结

Magenta 中的 NoteSequences 是音乐序列的强大表示形式。它们可以用于创建、编辑和分析音乐。

网址:Magenta之note https://mxgxt.com/news/view/1866094

相关内容

Magenta之note
star note是什么意思
Redmi Note 9新机将来,卢伟冰暗示「超大杯」
莲之空女学院学园偶像俱乐部 Edel Note 第2张单曲 “片翼toribaga” 试听
天后小助理 The High Note
王一博与众位明星合影自拍:手机是Redmi Note 10 Pro
少女时代出道17周年,日本官方更新『SONE NOTE LIVE』Vol.51
小米Note 2发布会:影帝梁朝伟真来了!雷军:想问啥?
星纪魅族 Note 16 Pro 预热:泰坦护盾合金架构,行业首款 TÜV 南德「三防品质」认证手机
YSL圣罗兰美妆生而闪耀音乐派对 登陆上海新世界大丸百货

随便看看