New machine: Snowglobe Scale Snapper

Post Reply
snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

New machine: Snowglobe Scale Snapper

Post by snowglobe »

video
download

updates
---------
2014-12-6B ** toggle target machines on and off from pattern
2014-12-6 ** global note, global trigger, track trigger (suggestions welcome for what the track triggers do)
2014-11-27 ** rearrange targets via drag-drop and alpha-sort options
2014-11-26 ** bugfixes
2014-11-25 ** default track velocity and humanization sliders display values again, selecting scale in popup selector updates selected index
2014-11-24 #2 ** Channel Surfer (formerly MIDI Manager) is now included the SnowSuit(e) - all old files should be replaced
2014-11-24 ** small bugfix in Snowglobe Core.dll regarding the way scale note sets are built (gtfo, "note" == 128)

**************************
Snowglobe Scale Snapper
**************************
Tagline: "It's a snapper, so of course it's scaly!"

Basic idea: take notes from MIDI-in or patterns and snap them to a particular scale and tonic. (Yes, Peerscale already does that, but check it out anyway - especially because you're gonna need it for some machines that'll be coming down the chute later).

Caution! Until this line disappears, consider this a (possibly buggy) beta release (so might be subject to major revisions without regard to considerations of backward compatibility).

<insert standard disclaimer about free software here>

Drop SnowGlobe Scale Snapper.NET.dll and SnowglobeCore.dll into your Generators folder.

No audio or peer output, just MIDI.

Nothing to connect. Choose one or more target machines from the list (right-click anywhere in the list for show-hide options).

Fire notes via pattern and/or use notes from MIDI-in.

All input via Midi in is processed using global settings.

Each track parameter can obey its corresponding global setting or implement track-specific values.

Hush button sends an all-notes-off message to all targets in the pool.
Hold button prevents note-offs from being sent ('Sustain' was too long for the space ;p).

---------------------------------------------
Parameters and Settings
---------------------------------------------
*Scale -> choose from the default set, add, delete, edit, rearrange to taste
*Tonic -> one of c, c#, d, d#, e, f, f#, g, g#, a, a#, b
*Miss Mode -> what to do when incoming note is not in the selected scale + tonic sequence
  • - nearest match
    - drop out
    - sync to global setting
== Honor MIDI Channel Filters ==
*On -> output will only be sent to a target if the channel is a match for the target's MIDI In Channel setting.
*Off -> MIDI In Channel settings are disregarded.

== Offsets, Humanization, and Global Channel ==
*Octave Offset -> transpose all output by specified amount
*Semitone Offset -> same as Octave, except at semitone granularity
*Velocity Offset -> boost or lower velocity of all output by the specified amount
*Velocity Humanization Range -> +/- range within which velocity might be randomly adjusted
*Default Track Velocity -> used by tracks with no explicit velocity settings or with velocity set 0
*Track Channel / Global Channel -> force MIDI out to a specific channel, to a random channel, or to "same as in" to use triggering note's channel

==Delay Stuff==
*Delay (amount) -> 0 to 255
*Delay Mode -> p=100%, p=90%, p=80%, p=70%, p=60%, p=50%, p=40%, p=30%, p=20%, p=10%, range 0 to value, use global
*Delay Unit -> subtick, tick, millisecond, beat/128, beat/64, beat/32, beat/16, beat/8, beat/4, beat/3, beat/2, beat, use global

== Track-Specific Settings Having no Global Counterpart ==
*Probability (0 - 100) -> percent-wise chance that current and subsequent notes on the track will fire
*Cut Mode:
1. auto -> new notes in the track cut off old ones
2. off all -> 'off' kills all notes currently sounding via track
3. off oldest -> 'off' kills the oldest currently sounding note
4. off newest -> 'off' kills the most recent note


Please direct any questions / report any bugs to snowglobe on the Buzz forum (forums.jeskola.net)
Last edited by snowglobe on Sun Dec 07, 2014 12:39 am, edited 17 times in total.

User avatar
tinga
Posts: 504
Joined: Tue Nov 22, 2011 5:25 pm

Re: New machine: Snowglobe Scale Snapper

Post by tinga »

Nice, a polyphonic peerscale, with different options, delay, transposition by track, it's great tool for generative music, thanks for this midi suite.

User avatar
tinga
Posts: 504
Joined: Tue Nov 22, 2011 5:25 pm

Re: New machine: Snowglobe Scale Snapper

Post by tinga »

How does the scale editor work? it admits negative values, and also suite>12, what is the limit, some mysteries...
Is it a sort of pattern editor? With accumulator, we have a ghost happy birthday, very interesting.

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

tinga wrote:How does the scale editor work? it admits negative values, and also suite>12, what is the limit, some mysteries...
Is it a sort of pattern editor? With accumulator, we have a ghost happy birthday, very interesting.
Yes, you could think of it as a sort of very odd pattern editor. Or anyway, part of one that you can't really use yet (even with an accumulator) :twisted: .
Here's how it works:

A step specification and a tonic combine to generate a sequence of MIDI note values (e.g. Aeolian/Natural Minor @ C# -> [1,3,4,6, ... 123,124,126])
Note sets are built from an 'anchor note', which is 60 + tonic (tonics are 0 - 11, so anchors are 60,61,62,63,64,65,66,67,68,69,70,71)
If your step specification is "a b c d" your sequence gets built like this: <--... -a -b -c -d -a -b -c -d ANCHOR +a +b +c +d +a +b +c +d ... -->
No matter what specification you choose, the anchor is the one note you can absolutely be sure is in the note set (step spec = 0 and tonic = E -> [64,64,64, ... 64,64,64])

So, you can put literally any set of integers into your step specification and the machine will happily use it. Result values below 0 or above 127 are simply rejected (now that I just fixed a bug where values > 127 could sneak in)

spec (-100) tonic (c): ... -(-100) 60 +(-100) ... -> [ ...60,60,60...]
spec (-5 3) tonic (d): ... -(-5) -(3) -(-5) -(3) 62 +(-5) +(3) +(-5) +(3) ... -> [...66,61,64,59,62,57,60,55,58...]

However, you can't really take much advantage of something like the 'happy birthday' scale or the 'inverse chromatic' scale yet. That's because the machine (in its basic form here) only does this:

Is the trigger note in the scale+tonic note set?
yes? -> send it
no? -> get the closest note you can that is in the set and send that (or send nothing if Miss Mode is set to 'drop out')

Stand by, though, for 'scale-stepper' machines coming soon to a forum near you ...
Last edited by snowglobe on Tue Nov 25, 2014 1:31 am, edited 4 times in total.

User avatar
tinga
Posts: 504
Joined: Tue Nov 22, 2011 5:25 pm

Re: New machine: Snowglobe Scale Snapper

Post by tinga »

Thanks, I begin to understand, this machine is so cool, I save one or 2 levels of peer machines, it's very nice for me to have all what i use the most in one machine, transpositions, scales, groove, probability, velocity, midi, a great machine for all other peer controllers, it also divides the number of machines i have to use by 3 or 4 :dance:
Selected generators are not saved in the bmx, just the first one :cry:
But new scales are saved. 8-)
The boxes "hush and hold" are a little bit too small (the letters are cut)
OK I stop my stupid critics, you know, I really like this machine :mrgreen:
Snowglobe wrote:Stand by, though, for 'scale-stepper' machines coming soon to a forum near you ...
...a walking scale, i'm curious!

User avatar
tinga
Posts: 504
Joined: Tue Nov 22, 2011 5:25 pm

Re: New machine: Snowglobe Scale Snapper

Post by tinga »

Strange, selected gen are saved now, but in one bmx, my first test, just the first one is saved, maybe this bug never reappear in any other bmx.

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

tinga wrote:Strange, selected gen are saved now, but in one bmx, my first test, just the first one is saved, maybe this bug never reappear in any other bmx.
I've seen this behavior. I think it possibly only presents when testing with a song that was saved with a previous version? The really odd thing is that it apparently only happens if you save the song with the parameter window open. Saving with the parameter window closed allows the connections to be restored properly when the song is reloaded. (Oskari, I traced the problem to Buzz.Song.MachineRemoved events that were being fired after a save, such as when the MachineView is being cleared out due to New or Open).

The thing with semitone offset not working is very strange. That was a bug that I fixed in SnowglobeCore.dll a few generations back :?: :?: :?:

Anyway, I've just updated SnowglobeCore again (so that I could move MIDI Manager into the SnowSuite with a new name - Channel Surfer). Hopefully you'll find that semitone offset is working again when you upgrade 8-)
Last edited by snowglobe on Wed Nov 26, 2014 3:26 pm, edited 2 times in total.

User avatar
tinga
Posts: 504
Joined: Tue Nov 22, 2011 5:25 pm

Re: New machine: Snowglobe Scale Snapper

Post by tinga »

Snowglobe wrote:The thing with semitone offset not working is very strange. That was a bug that I fixed in SnowglobeCore.dll a few generations back :?: :?: :?:
Sorry, you probably read my message just before i erase the line about semi tones, it works, i am the bug! :oops:

A cool thing, with your machines, PeerChord can make chords with different generators.

rav
Posts: 115
Joined: Fri Sep 14, 2012 3:35 pm

Re: New machine: Snowglobe Scale Snapper

Post by rav »

Very nice updates, i like this show/hide options in the machine list :)
snowglobe wrote:
tinga wrote:Strange, selected gen are saved now, but in one bmx, my first test, just the first one is saved, maybe this bug never reappear in any other bmx.
I've seen this behavior. I think it possibly only presents when testing with a song that was saved with a previous version? The really odd thing is that it apparently only happens if you save the song with the parameter window open. Saving with the parameter window closed allows the connections to be restored properly when the song is reloaded. (Oskari, I traced the problem to Buzz.Song.MachineRemoved events that were being fired after a save, such as when the MachineView is being cleared out due to New or Open).
It only occurs in Scale Snapper now, not in the others from the suite.

If you choose scale from the list, it doesn't change scale parameter. So, after reloading file, it recalls wrong scale.
Global velocity humanization and default track velocity sliders don't update value labels like in global velocity offset, in all machines from the pack.

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

rav wrote:It only occurs in Scale Snapper now, not in the others from the suite.
Do an experiment for me? Start a new, empty song. Add a Scale Snapper and a few generators. Save song with param window open and all generators selected. Close and re-open song. I predict the connections are maintained. It seems like something to do with the way Buzz saves machine state, and updating to a new dll.
If you choose scale from the list, it doesn't change scale parameter. So, after reloading file, it recalls wrong scale.
Global velocity humanization and default track velocity sliders don't update value labels like in global velocity offset, in all machines from the pack.
I'll fix these up. Thanks!

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

If you choose scale from the list, it doesn't change scale parameter. So, after reloading file, it recalls wrong scale.
Global velocity humanization and default track velocity sliders don't update value labels like in global velocity offset, in all machines from the pack.
I think these should be good now. Let me know!

rav
Posts: 115
Joined: Fri Sep 14, 2012 3:35 pm

Re: New machine: Snowglobe Scale Snapper

Post by rav »

snowglobe wrote:
rav wrote:It only occurs in Scale Snapper now, not in the others from the suite.
Do an experiment for me? Start a new, empty song. Add a Scale Snapper and a few generators. Save song with param window open and all generators selected. Close and re-open song. I predict the connections are maintained. It seems like something to do with the way Buzz saves machine state, and updating to a new dll.
I have done something like this before a couple of times.
In newest update for this machine, connections are not maintained also. They are maintained for Channel Surfer and Target Practise machines, but not for Scale Snapper. With closed windows everything works fine.
snowglobe wrote:
If you choose scale from the list, it doesn't change scale parameter. So, after reloading file, it recalls wrong scale.
Global velocity humanization and default track velocity sliders don't update value labels like in global velocity offset, in all machines from the pack.
I think these should be good now. Let me know!
Works nice :>

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

update bump
2014-11-27 ** rearrange targets via drag-drop and alpha-sort options
2014-11-26 ** resolved issue with target selections not being restored if song saved with param window open.

snowglobe
Posts: 338
Joined: Wed Nov 23, 2011 12:36 pm

Re: New machine: Snowglobe Scale Snapper

Post by snowglobe »

update bump

2014-12-6B ** toggle target machines on and off from pattern

Post Reply