过滤数组以包含 Supercollider 中的唯一值
Filter an array to contain unique values in Supercollider
一个数组是从外部传感器创建的,并且该数组被限制在一定范围内。
示例代码如下:
(
~weight = 70;
~array = ((~weight - 12) .. ~weight);
l = Scale.majorPentatonic.degrees; // pentatonic scale
j = (~array).collect { |i| i.nearestInScale(l, 12)}
)
这会生成一个数组,但会重复与音阶匹配的音符,例如:
[ 57, 57, 60, 62, 62, 64, 64, 64, 67, 67, 69, 69, 69 ]
如何将此数组过滤为唯一值,使其看起来像这样:
[ 57, 60, 62, 64, 67, 69 ]
j.as(Set).as(Array).sort;
您可以将 Array 转换为 Set 并再次返回以删除重复项。
Set 是一个无序集合,因此您必须对新数组进行排序才能获得您想要的结果。
一个数组是从外部传感器创建的,并且该数组被限制在一定范围内。
示例代码如下:
(
~weight = 70;
~array = ((~weight - 12) .. ~weight);
l = Scale.majorPentatonic.degrees; // pentatonic scale
j = (~array).collect { |i| i.nearestInScale(l, 12)}
)
这会生成一个数组,但会重复与音阶匹配的音符,例如:
[ 57, 57, 60, 62, 62, 64, 64, 64, 67, 67, 69, 69, 69 ]
如何将此数组过滤为唯一值,使其看起来像这样:
[ 57, 60, 62, 64, 67, 69 ]
j.as(Set).as(Array).sort;
您可以将 Array 转换为 Set 并再次返回以删除重复项。 Set 是一个无序集合,因此您必须对新数组进行排序才能获得您想要的结果。