Фильтруйте массив, чтобы он содержал уникальные значения в 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 ]
1 ответ
Решение
j.as(Set).as(Array).sort;
Вы можете преобразовать массив в набор и обратно, чтобы удалить дубликаты элементов. Set - это неупорядоченная коллекция, поэтому вам нужно отсортировать новый массив, чтобы получить результат, который вам нужен.