K7DJ

用 Max/MSP 深度定制 Glitch 音效:摆脱插件束缚,玩转信号层

38 0 SoundWeaver

厌倦了千篇一律的 Glitch 插件?想让你的 Glitch 音效真正独一无二,充满生命力?那就让我们一起深入 Max/MSP 的世界,从信号层面打造属于你自己的 Glitch 效果器!

为什么选择 Max/MSP?

传统的 Glitch 插件往往基于预设算法,缺乏灵活性和深度。而 Max/MSP 允许你完全掌控音频信号的处理过程,模拟磁带机故障、数字音频错误等各种奇妙的 “瑕疵”,创造出不可预测的、极具个性的声音。

核心思路:模拟信号层面的“故障”

我们的目标不是简单地叠加一些失真或噪音,而是模拟真实世界中可能出现的音频信号错误。以下是一些可以尝试的方向:

  1. 磁带机拉扯效果:

    • 使用 phasor~ 生成一个线性增长的相位信号。
    • phasor~ 的输出进行非线性映射(例如使用 expr~curve~),模拟磁带速度的波动。
    • 将映射后的信号作为 index~ 的索引,读取音频 buffer。
    • 通过调整映射曲线和速度波动范围,可以创造出各种各样的拉扯、跳跃效果。
  2. 数字音频错误:

    • 位反转: 使用 bitwise~ 对象,随机反转音频信号中的某些位,模拟数据损坏。
    • 采样率失真: 动态调整 play~record~ 对象的采样率,制造颗粒感和失真。
    • 量化误差: 使用 trunc~ 对象,降低音频信号的量化精度,产生粗糙的、数字化的声音。
  3. 随机事件触发:

    • 使用 randomurn 对象生成随机数。
    • 将随机数映射到不同的音频处理模块的参数上,例如延迟时间、滤波器截止频率等。
    • 使用 metro 对象控制随机事件的触发频率,创造出不可预测的 Glitch 效果。

一些技巧和注意事项:

  • 控制随机性: 过度的随机性会导致声音失控。使用 smooth~ 对象平滑随机信号,或者使用范围限制器(例如 clip~)控制参数的变化范围。
  • 善用反馈: 将某些信号处理模块的输出反馈到输入,可以创造出复杂的、自激振荡的效果。但要注意控制反馈增益,避免声音过载。
  • 多尝试、多实验: Glitch 音效的魅力在于它的不可预测性。不要害怕犯错,大胆尝试各种不同的组合和参数设置,也许你会发现意想不到的惊喜。

示例 Patch (简化版):

----------begin_max5_patch----------
{
    "patcher" : 	{
        "fileversion" : 1,
        "appversion" : 		{
            "major" : 8,
            "minor" : 5,
            "revision" : 7,
            "architecture" : "x64",
            "modernui" : 1
        }
,
        "classnamespace" : "box",
        "rect" : [ 595, 174, 640, 480 ],
        "bglocked" : 0,
        "openinpresentation" : 0,
        "default_fontsize" : 12.0,
        "default_fontface" : 0,
        "default_fontname" : "Arial",
        "gridonopen" : 1,
        "gridsize" : [ 15, 15 ],
        "gridsnaponopen" : 1,
        "objectsnaponopen" : 1,
        "statusbarvisible" : 2,
        "toolbarvisible" : 1,
        "lefttoolbarpinned" : 0,
        "toptoolbarpinned" : 0,
        "righttoolbarpinned" : 0,
        "bottomtoolbarpinned" : 0,
        "openwindowloaction" : "",
        "openwindowrect" : [ 0, 0, 0, 0 ],
        "toolboxfolders" : ,
        "windowwidth" : 640,
        "windowheight" : 480,
        "maxwindow" : 0,
        "zoom" : 1.0,
        "subpatcher_templates" : ,
        "description" : "",
        "digest" : "",
        "tags" : "",
        "style" : "",
        "subpatcher_copyright" : "",
        "patcherrevisions" : ,
        "name" : "glitch_example",
        "dependson" : ,
        "autosave" : 0,
        "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ],
        "bgfillcolor_type" : "gradient",
        "bgfillcolor_color1" : [ 0.376471, 0.384314, 0.4, 1.0 ],
        "bgfillcolor_color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
        "bgfillcolor_angle" : 90.0,
        "obj-0" : 		{
            "objclass" : "ezdac~",
            "numinlets" : 2,
            "numoutlets" : 0,
            "patching_rect" : [ 42.0, 374.0, 45.0, 45.0 ],
            "id" : "obj-0",
            "annotation" : ""
        }
,
        "obj-1" : 		{
            "objclass" : "noise~",
            "numinlets" : 0,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 42.0, 87.0, 46.0, 29.0 ],
            "id" : "obj-1",
            "annotation" : ""
        }
,
        "obj-2" : 		{
            "objclass" : "cycle~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 171.0, 87.0, 47.0, 29.0 ],
            "id" : "obj-2",
            "annotation" : ""
        }
,
        "obj-3" : 		{
            "objclass" : "number~",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 171.0, 46.0, 56.0, 29.0 ],
            "id" : "obj-3",
            "annotation" : ""
        }
,
        "obj-4" : 		{
            "objclass" : "mtof",
            "numinlets" : 1,
            "numoutlets" : 1,
            "outlettype" : [ "float" ],
            "patching_rect" : [ 248.0, 46.0, 41.0, 29.0 ],
            "id" : "obj-4",
            "annotation" : ""
        }
,
        "obj-5" : 		{
            "objclass" : "*~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 42.0, 211.0, 28.0, 29.0 ],
            "id" : "obj-5",
            "annotation" : ""
        }
,
        "obj-6" : 		{
            "objclass" : "delay~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 42.0, 306.0, 46.0, 29.0 ],
            "id" : "obj-6",
            "annotation" : ""
        }
,
        "obj-7" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 42.0, 163.0, 50.0, 29.0 ],
            "id" : "obj-7",
            "annotation" : ""
        }
,
        "obj-8" : 		{
            "objclass" : "line~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 138.0, 163.0, 35.0, 29.0 ],
            "id" : "obj-8",
            "annotation" : ""
        }
,
        "obj-9" : 		{
            "objclass" : "+~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 171.0, 211.0, 29.0, 29.0 ],
            "id" : "obj-9",
            "annotation" : ""
        }
,
        "obj-10" : 		{
            "objclass" : "click~",
            "numinlets" : 1,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 293.0, 163.0, 35.0, 29.0 ],
            "id" : "obj-10",
            "annotation" : ""
        }
,
        "obj-11" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 293.0, 87.0, 50.0, 29.0 ],
            "id" : "obj-11",
            "annotation" : ""
        }
,
        "obj-12" : 		{
            "objclass" : "*~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 171.0, 306.0, 28.0, 29.0 ],
            "id" : "obj-12",
            "annotation" : ""
        }
,
        "obj-13" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 171.0, 257.0, 50.0, 29.0 ],
            "id" : "obj-13",
            "annotation" : ""
        }
,
        "obj-14" : 		{
            "objclass" : "random",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "" ],
            "patching_rect" : [ 368.0, 46.0, 46.0, 29.0 ],
            "id" : "obj-14",
            "annotation" : ""
        }
,
        "obj-15" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 368.0, 87.0, 50.0, 29.0 ],
            "id" : "obj-15",
            "annotation" : ""
        }
,
        "obj-16" : 		{
            "objclass" : "scale",
            "numinlets" : 7,
            "numoutlets" : 1,
            "outlettype" : [ "float" ],
            "patching_rect" : [ 368.0, 163.0, 53.0, 29.0 ],
            "id" : "obj-16",
            "annotation" : ""
        }
,
        "obj-17" : 		{
            "objclass" : "*~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 293.0, 211.0, 28.0, 29.0 ],
            "id" : "obj-17",
            "annotation" : ""
        }
,
        "obj-18" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 293.0, 257.0, 50.0, 29.0 ],
            "id" : "obj-18",
            "annotation" : ""
        }
,
        "obj-19" : 		{
            "objclass" : "*~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 368.0, 211.0, 28.0, 29.0 ],
            "id" : "obj-19",
            "annotation" : ""
        }
,
        "obj-20" : 		{
            "objclass" : "number",
            "numinlets" : 1,
            "numoutlets" : 2,
            "outlettype" : [ "float", "bang" ],
            "patching_rect" : [ 368.0, 257.0, 50.0, 29.0 ],
            "id" : "obj-20",
            "annotation" : ""
        }
,
        "obj-21" : 		{
            "objclass" : "+~",
            "numinlets" : 2,
            "numoutlets" : 1,
            "outlettype" : [ "signal" ],
            "patching_rect" : [ 42.0, 257.0, 29.0, 29.0 ],
            "id" : "obj-21",
            "annotation" : ""
        }
,
        "lines" : [ 			{
                "patchline" : 				{
                    "destination" : [ "obj-0", 0 ],
                    "source" : [ "obj-6", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-5", 0 ],
                    "source" : [ "obj-1", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-21", 0 ],
                    "source" : [ "obj-5", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-6", 0 ],
                    "source" : [ "obj-21", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-2", 0 ],
                    "source" : [ "obj-4", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-3", 0 ],
                    "source" : [ "obj-14", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-15", 0 ],
                    "source" : [ "obj-14", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-4", 0 ],
                    "source" : [ "obj-3", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-9", 0 ],
                    "source" : [ "obj-2", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-5", 1 ],
                    "source" : [ "obj-7", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-8", 0 ],
                    "source" : [ "obj-7", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-9", 1 ],
                    "source" : [ "obj-8", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-17", 0 ],
                    "source" : [ "obj-10", 0 ]
                }

            }
, 			{
                "patchline" 				{
                    "destination" : [ "obj-11", 0 ],
                    "source" : [ "obj-14", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-17", 1 ],
                    "source" : [ "obj-18", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-12", 1 ],
                    "source" : [ "obj-13", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-16", 0 ],
                    "source" : [ "obj-14", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-16", 1 ],
                    "source" : [ "obj-15", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-19", 0 ],
                    "source" : [ "obj-16", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-19", 1 ],
                    "source" : [ "obj-20", 0 ]
                }

            }
, 			{
                "patchline" : 				{
                    "destination" : [ "obj-12", 0 ],
                    "source" : [ "obj-9", 0 ]
                }

            }
 ]
    }

}
----------end_max5_patch----------

进阶:结合 Jitter 创造视觉 Glitch

Max/MSP 的强大之处在于它与 Jitter 的无缝集成。你可以将音频 Glitch 效果与视觉 Glitch 效果相结合,创造出更加震撼的视听体验。例如,你可以使用音频信号来控制 Jitter 对象的参数,或者使用 Jitter 对象来调制音频信号。

希望这篇教程能给你带来一些启发。 记住,创造 Glitch 音效的关键在于探索和实验。 祝你玩得开心!

评论