洛天依讲编程:调音教学|乐理补充:延时音符 ——MIDI 的「有序数组(Array)」
作者龙沅可哈喽大家好我是洛天依继续我们乐理编程 VOCALOID 全套教程。在上一轮我们完整吃透了 VOCALOID 软件全界面、音轨管理、钢琴卷帘底层红线全部实操之后今天我们补全基础班遗留的最后一块核心乐理碎片延时音符。依旧沿用全程统一的编程底层世界观给它钉死精准定义依靠延音线串联形成的延时长音体系就是整个 MIDI 音乐世界原生自带的「有序数组Array」。一、编程底层对标先吃透数组的原始定义先回归编程里最基础的概念帮你唤醒认知数组Array是编程里最经典的数据结构多个数据类型完全统一、属性完全一致的独立基础变量按照先后顺序在内存里连续无缝、首尾相接排布占位整体打包合并成一个完整、连续的独立单元。数组内部的所有元素会叠加自身属性对外统一视作一个完整模块不会拆分独立运行。放到我们已经搭建完毕的 MIDI 乐理体系里完美 1:1 对应我们此前已经学透单个独立的音符方块 音乐世界最基础的独立变量每一个音符自带专属音高、时值、坐标是最小的不可拆分原子单元。而今天的延时音符延音线体系就是把大量同规格的基础音符变量打包拼接而成的音乐数组。二、延时音符延音线数组完整拆解1. 数组本体延音线简谱、MIDI、VOCALOID 软件里连接音符的弯弯弧线延音线就是音乐数组的「打包绑定符号」。它的底层规则完全贴合数组约束只有音高 100% 完全一模一样的相邻音符才能被延音线打包绑定组成延时音符数组。对应编程数组最严格的铁则数组内所有元素数据类型必须完全统一。放到乐理里音高 音符的数据类型音高不同 数据类型不匹配绝对无法塞进同一个延时数组强行连线只会旋律违和、人声报错。2. 数组三大核心特性编程 乐理双向闭环① 元素同质性强制约束数组内部所有拼接的音符音高必须完全一致无任何偏差。不允许混入高低音、半音偏差音符就像整数数组里不能塞进字符串变量一样类型不匹配直接违规。这也是新手乐理误区很多人会给不同音高的音符画延音线本质就是跨类型元素强行塞入数组违反底层数据结构规则。② 时间轴连续无缝排布数组内的所有音符元素在小节代码块的时间轴上必须首尾相接、无空隙、无休止符间隔连续排布。对应数组「内存连续占位」的底层逻辑中间不能插入留白、停顿、其他音符一旦断开数组直接拆分失效。③ 时值总叠加规则整个延时数组对外的总演唱时长完全等于数组内部所有单个音符元素的时值全部相加总和。举个最直观的例子两个同是 C3中音 do的四分音符用延音线连成数组单个四分音符 1 拍数组 2 个元素叠加总时值 2 拍原本两个独立的基础音符变量打包后对外只演唱一次人声不重复吐字、声音全程连续拖长完美对应数组「内部元素叠加、对外统一整体运行」的全部逻辑。三、易混概念区分数组延时音符 ≠ 附点音符很多新手会把二者搞混这里一次性彻底划清边界对应我们之前学的知识点附点音符单个基础音符自带的属性延长属于单个变量自身的内置属性增强本质还是独立变量不属于数组延音线延时音符多个独立同高音符拼接打包属于多变量合并的数组数据结构二者底层逻辑完全不同。四、VOCALOID 软件实操底层对应结合你天天操作的 V4 钢琴卷帘界面数组逻辑直接落地你在钢琴卷帘里画出 ** 两个首尾相接、同一个音高同 C3** 的连续音符软件自动用延音线把二者绑定也就是完成了数组打包播放时人声只会吐出开头第一个音符的咬字后续所有拼接音符全部延时拖长不会重新发声全程连续不断数组总时长自动合并原本两个独立音符的时值相加就是最终人声拖长的总时长。同时结合我们之前的软件红线V4 禁止重叠音符而延时数组是同高音符首尾无缝拼接完全不重叠完美避开重叠禁忌属于合法合规的数组结构。五、全体系知识点再次闭环汇总至此我们完整的乐理编程全数据结构体系全部补齐严格按照编程数据类型排序唱名 MIDI 世界底层关键字单个独立音符 音乐底层基础变量节奏型 MIDI 官方内置封装函数休止符 MIDI 静默sleep 空延时函数三大顶级全局变量调性钩子函数、拍号框架变量、BPM运行速度小节线 MIDI代码块分隔符简谱 MIDI 人类手写源代码延时音符延音线 同高音符有序数组Array本课小结延音线串联的延时音符本质就是音乐世界的有序数组。它严格遵循数组同类型约束、连续排布、时值叠加的全部底层规则用打包拼接的方式实现人声长音延时同时完美兼容此前所有乐理、软件底层规则。