PureData 语言 knob 对象的 snap 功能强制对齐刻度 参数离散化

PureData阿木 发布于 2 天前 3 次阅读


阿木博主一句话概括:深入解析PureData中Knob对象的“Snap”功能与参数离散化实现

阿木博主为你简单介绍:
PureData是一款强大的音频和图形处理软件,广泛应用于音乐制作、音频处理和实时交互等领域。Knob对象是PureData中常用的控制参数的工具,其“Snap”功能可以实现参数的强制对齐,即参数离散化。本文将深入探讨PureData中Knob对象的“Snap”功能,并详细阐述其实现原理和代码技术。

一、

在PureData中,Knob对象是一种常用的控制参数的工具,它允许用户通过旋转或拖动来调整参数值。在实际应用中,我们往往需要将参数值限制在特定的范围内,以便于控制或满足特定的需求。“Snap”功能就显得尤为重要,它可以将参数值强制对齐到预定义的刻度上,实现参数的离散化。

二、Knob对象的“Snap”功能原理

Knob对象的“Snap”功能通过以下步骤实现:

1. 定义刻度:需要定义一个刻度数组,该数组包含了所有允许的参数值。

2. 参数值映射:当用户调整Knob对象的值时,系统会将当前值映射到最近的刻度值。

3. 参数值更新:系统将更新Knob对象的值,使其等于最近的刻度值。

三、代码实现

以下是一个简单的PureData代码示例,展示了如何实现Knob对象的“Snap”功能:

```pd
N canvas 0 0 450 300 12;
X obj 50 50 knob 128 128 0 127 0 0 empty empty empty 0 -8 0 10 -262144
-1 -1 0 1;
X obj 50 50 cnv 15 128 128 empty empty Knob with Snap 20 12 0 14 -262144
-262144 0;
X obj 50 50 cnv 15 128 128 empty empty 20 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 40 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 60 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 80 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 100 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 120 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 140 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 160 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 180 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 200 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 220 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 240 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 260 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 280 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 300 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 320 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 340 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 360 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 380 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 400 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 420 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 440 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 460 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 480 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 500 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 520 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 540 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 560 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 580 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 600 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 620 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 640 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 660 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 680 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 700 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 720 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 740 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 760 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 780 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 800 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 820 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 840 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 860 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 880 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 900 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 920 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 940 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 960 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 980 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1000 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1020 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1040 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1060 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1080 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1100 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1120 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1140 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1160 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1180 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1200 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1220 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1240 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1260 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1280 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1300 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1320 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1340 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1360 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1380 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1400 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1420 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1440 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1460 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1480 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1500 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1520 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1540 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1560 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1580 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1600 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1620 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1640 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1660 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1680 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1700 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1720 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1740 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1760 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1780 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1800 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1820 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1840 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1860 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1880 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1900 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1920 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1940 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1960 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 1980 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty 2000 12 0 14 -262144 -262144 0;
X obj 50 50 cnv 15 128 128 empty empty