• [muse] -- float array that acts like a musical scale

Creates music scales using simple lists or by sending new pitches to individual notes. The more creation arguments there are, the more inlets there will be. It sends a frequency value through the 1st outlet and the unaltered midi value through the 2nd outlet.

• [muse 40 4 7]
• Sending 0, 1, 2 returns 40, 44, 47 respectively.
• The scale cycles through higher and lower octaves
• 3, 4, 5 returns 52, 56, 59
• -1, -2, -3 returns 35, 32, 28

functions:

• [list | l | d | x | i ..(
• Takes a list of numbers and maps the values to the array.
• Any non-numeric values are skipped over.
• They're basically all the same function, with the differences being in their offsets and/or whether it should change the size of the scale implicitly based on list size.
-- i is an implicit list, which changes the size of the scale based on the number of arguments specified.
-- x is an explicit list, which means that it doesn't change the scale size because it's leaving that up to the user to change explicitly. This message is also good for changing the root note.
-- list or l is the default list, and whether it interprets lists implicitly or explicitly is based on whether the toggle "exp" is set to 1 or 0. By default, lists are interpreted implicitly.
-- d has an offset of 1. It's basically a short form of [list d ...( or, a list that skips the root note. Like a normal list, it also adheres to the "exp" toggle to determine whether it is implicit or explicit.
• [exp 1|0(
• sets a boolean to determine whether or not scale size is implied in the size of lists sent.
• if exp equals 1, scale size will not change, unless the list is preceded by i.
• if exp equals 0, scale size will change, unless the list is preceded by x.
• [n \$1(
• sets the size of the scale.
• the scale by default, with no creation arguments, is only 2 float values. This amount grows based on how many arguments are specified. but the array also resizes itself automatically to twice its original size whenever a size requested goes over the current maximum range.
• the same doubling effect applies to lists with more arguments than the maximum scale size.
-- [muse 40 2 4 5 7 9 11] has 7 floats worth of bytes reserved for the scale.
-- upon receiving [n 16(, since 16 is greater than (7 x 2), scale is resized to hold 16 floats.
-- upon receiving [n 17(, scale is resized to hold 32 floats. This doesn't mean the scale uses all 32 notes, but the space is now reserved if you ever decide to increase the scale size later.
• [set \$2 \$1(
• scale is assigned the value \$1 at index \$2.
-- [set 6 11( set the 6th interval to 11.
• [ref \$1(
• sets the reference pitch of middle A.
-- default value is 440.
• [tet \$1(
• assign the number of tones in an octave.
-- tones refer to how large a semi-tone needs to be in order to evenly disperse an octave into a specific amount of distinct pitches.
• [oct \$1(
• assign the number of notes in an octave.
-- notes refer to the number of semi-tones that the scale should jump when going to the next or previous octave.
• [octet \$1( / [ot \$1(
• assigns # of notes and # of tones simultaneously
• [peek label(
• prints the current scale.
• a label is optional.
• [ptr label(
• prints the current size of the float pointer that your scale uses. It isn't necessarily the same size as the scale itself.

muse-chrd.zip

• Posts 7 | Views 3692
• great design, thank you! here is an osx binary and the bsd makefile for convenience

http://www.pdpatchrepo.info/hurleur/musical_darwin.zip

• Cool, thanks for doing that

• Updated [musical] with the following changes:

• it used to create three extra inlets by default with 0 4 7 as the implied args, changed that to just one inlet with 0 7 as the implied args.
• it used to determine scale size by the amount of items in a list. Still does that, but now you can just send the message [n \$1( to change the size of the scale.
• added a shorthand creator name [muse]
• Now if you send a non-integer value to it, it returns a kind of percentage of the interval between two notes. Example: if [muse 60 4 7] receives the value 0.5, it would return 62 because that's halfway between 60 and 64. 0.25 would return 61, etc.

Comes with a help file

http://www.pdpatchrepo.info/hurleur/muse.zip

• I haven't downloaded it yet but one q: can it do pythagorean, just, meantone, etc?

• Sorry for the late response. For some reason I never got a notification. There's no way to change tuning systems yet but I will look into it.

• @miwi ! thanks for this! implementing scale changes in my custom arpeggiated synth will be a breeze!