[PD] Prime limit sliders

Mathieu Bouchard matju at artengine.ca
Mon Apr 4 10:09:54 CEST 2005


On Sun, 3 Apr 2005, Chuckk Hubbard wrote:

> Hi, Mathieu.  This sounds pretty intense, but maybe because I haven't 
> gotten that far into Pd.  That is dead on, though, to just have the 
> slider go smoothly decimal and use the closest value in the table. That 
> would work perfectly.

Now that I think of it, it's also possible to use a radiobutton or a 
slider or a numbox, that indexes into the table of all possible values, so 
that you access the ratios by their order in the table.

In the example you gave, the slider would have 9*3*3*3=243 positions.

> Might it be less involved to have the possible values of the sliders 
> determined by a prime to the power of -1 to 1

In Number Theory one would say that you are working with ratios of 
squarefree number. A squarefree number is one that is not divisible by a 
square number: in other words it's not divisible by a prime power beyond 
an exponent of just one.

> (maybe throwing 9 in as a "prime"),

This would cause duplicates because 3 is already there.

I don't think this would make things any easier unless I'm missing 
something not too obvious.

One can use an extension of the Euclidean GCD algorithm to find a sequence 
of rational approximations to a given float, and those approximations are 
especially high-quality (read about Continued Fractions). However I didn't 
really consider it in my last email because I'm not aware of any way to 
make it not use a prime more than a certain number of times, be it three 
times or even just one time.

BTW I just wrote a Ruby program that prepares a sorted list of ratios. It 
generates output like this:

[...]
7/495 = 0.0141414141414141
1/63 = 0.0158730158730159
5/297 = 0.0168350168350168
7/405 = 0.0172839506172839
1/55 = 0.0181818181818182
11/567 = 0.0194003527336861
5/231 = 0.0216450216450216
1/45 = 0.0222222222222222
[...]

You will need the Ruby interpreter.
It's cross-platform Linux/Win32/OSX/etc).
Here's the full source code:

------------------8<--------cut-here--------8<------------------
require "rational"
module Enumerable
   def mult(p,n)
     (-n..+n).map {|i| map{|x| x*Rational(p,1)**i }}.flatten
   end
end
[Rational(1,1)].mult(3,4).mult(5,1).mult(7,1).mult(11,1).sort.map {|x|
   puts "#{x} = #{x.to_f}"
}
------------------8<--------cut-here--------8<------------------

    .-----------------------------------------------------------------.
   /  The Diagram is the Program (TM) ,--------------------------------}
  {----------------------------------"     http://artengine.ca/matju  /
   `-----------------------------------------------------------------'




More information about the Pd-list mailing list