Sapphire Pop: new module release candidate

I’m working on something fun and I thought I would post this here in the Development category, just so people who are more likely to install plugins manually will read this.

I’m working on a new module called Sapphire Pop:

Pop is a polyphonic trigger generator inspired when I recently read about the statistical timing of radioactive decay events: the Poisson distribution.

Here is the complete documentation.

And here is a quick demo video (no talking, headphones recommended to hear stereo separation):

If you are interested in playing with Sapphire Pop before official release, I would love to receive feedback, questions, comments, etc. from you about it. Just go to this Sapphire build, look at the bottom and download the zip file appropriate for your platform. Unzip the zip file. It will contain a vcvplugin file. Move the vcvplugin file to your plugins folder and launch VCV Rack.

Here is the patch I used to make the above video: sapphire_pop_demo.vcv (1.6 KB)

I hope someone else finds this concept as fun and interesting as I do!

14 Likes

This looks excellent. Look forward to trying out.

That sounds like it would be wonderful pinging something like the Vult Unstabile filter

already love it :broccoli:

Looks interesting Don. I often find bernoulli gates too “lumpy” for music, and wish for something more like between euclidian and bernoulli. How does this compare to bernoully regarding distribution? Because it seems like the chaos knob allows for several different distributions, but it’s a bit hard to tell. If you think it can be a bernoulli replacement I have a request: Break out the A/B (left/right) outputs to two mono outputs, alternatively keep the poly (Pulse) out but break out the A/left output.

I think of a Bernoulli gate as a gate filter, whereas Pop is a trigger generator. Pop is the source of a rhythm that can be anywhere from completely regular to completely random.

Bernoulli gates are far better for making an existing rhythm more interesting while staying exactly on the given meter. Pop feels totally different to me in that it is for generating a new rhythm, not working inside an existing one.

Oh, I should have shown this in the video, but Pop can output any number of channels from 1 to 16. There is a slider in the right-click menu:

So there is no intended concept of left and right outputs.

2 Likes

As @Alphagem-O and I just discovered, the plugin links I posted above will only work if you are logged into a GitHub account. I did not realize this before now. For people who don’t have/want a GitHub account, here are direct downloads:

Here are sha256 checksums:

cca3bbf0042b7301da3b207e1d8b410dd65ad8f0219089f04eafce08a4138185  CosineKitty-Sapphire-2.4.9-lin-x64.vcvplugin
48f0d30b529c08aeb105ac0bdcdf899a0e3768c6999d9cf6ba88a9d7eb92437d  CosineKitty-Sapphire-2.4.9-mac-arm64.vcvplugin
306f8dc69c7e411da87dd98f0ce24246cc33845b7bc2008bc798074676d5d862  CosineKitty-Sapphire-2.4.9-mac-x64.vcvplugin
8421f48ca491472ecfb2dca4a81c1685dfe24ceadd55193984beba224fdea01d  CosineKitty-Sapphire-2.4.9-win-x64.vcvplugin
2 Likes

How does Sync work? I tried to feed a clock input from impromptu Clocked but the results did not appear to quantize when adjusting the speed?

The sync trigger input makes the most sense if you turn CHAOS all the way down to 0 to get a regular pattern across the polyphonic output channels. Then sending a trigger into SYNC causes all of the regular pulses to start at the same time on all channels.

As you turn CHAOS up, the signals will start to drift apart, and will stay apart if you turn CHAOS back down to zero (as I showed in the demo video above).

So I conceived of SYNC as a way to resynchronize pulses that had drifted apart across the multiple output channels, but mainly when CHAOS was set to zero. At higher values it becomes less useful.

Well, that’s interesting. I like it. :+1:

The first thing I did with it was to split out 2 channels and plug them into the Set and Reset inputs of a Count Modula SR Flip Flop. That gave me a series of random-length gates.

I hope you did not have to kill AND not-kill too many cats in the development.

Ah. That had me stumped.

1 Like

I love it!:slight_smile: very handy geiger-er:) big thnx Cosinekitty for this and for the others you generously share.

1 Like

Fascinating idea! I think this could be built into Pop. What if there were a right-click menu toggle between trigger mode and gate mode? Moots already has this feature.

UPDATE: I added this idea as issue #63 in the Sapphire repo.

4 Likes

Hello. This will sound like I’m being awkward, but I’m not. Just asking a question to the community at large. I have a module called Pop as well. Does the VCV Library allow for modules with the same name? Pretty certain it’s not a problem due to slug naming conventions and the like, and I’m not getting all steamed up about it. More important things to worry about in life. :slight_smile: Just curious.

It does work because there are already other cases of different plugins that have a module with the same name. It works fine because matching occurs based on both the plugin slug and the module slug combined.

I generally check for a unique module name, but I didn’t this time because I needed a very short name to fit my narrow panel, and I wanted it to sound something like a Geiger counter, so my choices were limited… hopefully this will not cause confusion for anyone.

1 Like

Yay! :partying_face:

As a fun exercise, I wrote a Python script to make a list of all VCV Rack module slugs that occur in more than one plugin. It turns out there are 84 such module slugs:

ADC: [LunettaModula, Stalys]
ADSR: [MSM, AS, Fundamental, MUS-X, Befaco]
ASR: [HetrickCV, Stalys]
Arpeggiator: [ML_modules, CountModula]
BPMClock: [Autodafe, AS]
Blank: [SIM, Core, PatchAndTweak, Stalys, AriaSalvatrice, MockbaModular]
Blank10HP: [ModularFungi, Chiptuner]
Blank12HP: [ModularFungi, Chiptuner, CountModula]
Blank16HP: [ModularFungi, Chiptuner, CountModula]
Blank1HP: [ModularFungi, Chiptuner]
Blank20HP: [ModularFungi, Chiptuner, CountModula]
Blank26HP: [ModularFungi, Chiptuner]
Blank2HP: [Chiptuner, CountModula]
Blank3: [QuantalAudio, SequelSequencers]
Blank32HP: [ModularFungi, Chiptuner]
Blank3HP: [ModularFungi, Chiptuner]
Blank4HP: [ModularFungi, Chiptuner, CountModula]
Blank5: [QuantalAudio, SequelSequencers]
Blank6HP: [ModularFungi, Chiptuner]
BlankPanel: [MSM, StellareModular, HetrickCV]
Burst: [Befaco, TheXOR]
BusRoute: [GlueTheGiant, CountModula]
Button: [LittleUtils, RJModules]
Buttons: [DHE-Modules, LunettaModula, RJModules]
Bypass: [Venom, vitamin]
CV: [CharredDesert, dbRackSequencer]
Chord: [Autinn, dBiz, AmalgamatedHarmonics, RJModules]
Clip: [aridacity, GrandeModular, Stalys]
Clock: [ZZC, Circlefade]
ClockDivider: [SynthKit, Autodafe, CountModula]
Comparator: [HetrickCV, Stalys, CountModula, MockbaModular, LilacModules]
Counter: [TheXOR, ML_modules]
DAC: [LunettaModula, Stalys]
Delay: [Fundamental, MUS-X, Hora-ProcessorsFree, Circlefade]
Delta: [HetrickCV, LyraeModules]
Divider: [dBiz, ZZC]
Eq: [CharredDesert, PersonalModules]
Fade: [MSM, Fundamental, CountModula]
Galaxy: [AmalgamatedHarmonics, CosineKitty-Sapphire]
GateDelay: [HetrickCV, CountModula]
Gator: [OrangeLine, DHE-Modules]
K: [CharredDesert, KRTPluginA]
Klee: [dbRackSequencer, TheXOR]
LFO: [Fundamental, MUS-X, Autodafe, Circlefade]
Logic: [NYSTHI, Fundamental, GrandeModular, DivergentWaves, Venom]
M: [CharredDesert, KRTPluginA]
Merge8: [GrandeModular, 23volts]
MidSide: [Fundamental, HetrickCV]
MinMax: [JW-Modules, HetrickCV]
Mix: [Qwelk, StudioSixPlusOne]
Mixer: [CharredDesert, Fundamental, Befaco, CountModula]
Modulo: [Extratone, s-ol]
Morph: [MSM, OrangeLine, 23volts]
Mult: [MSM, Fundamental, CountModula]
Multiplier: [SmarTAZZStudio-Free, Stalys]
Noise: [MSM, Fundamental, Nohmad, CharredDesert, RJModules]
Not: [CharredDesert, Stalys]
Notes: [Core, RJModules]
OP: [kocmoc, NYSTHI]
Octaves: [Befaco, RJModules]
Pan: [CharredDesert, vitamin]
PhaserFx: [Autodafe, AS]
Pluck: [TyrannosaurusRu, RJModules]
PolySplit: [GrandeModular, 23volts]
Push: [Fundamental, GrandeModular]
Q: [AriaSalvatrice, KRTPluginA]
Quant: [GrandeModular, Coffee]
Quantizer: [Fundamental, JW-Modules, TheXOR, ML_modules]
Random: [Fundamental, Circlefade]
ReverbFx: [Autodafe, AS]
SEQ16: [Autodafe, AS]
SKF: [kocmoc, dbRackModules]
SlopeDetector: [NYSTHI, CountModula]
Split8: [GrandeModular, 23volts]
Splitter: [SmarTAZZStudio-Free, RJModules]
Steps: [CVfunk, AS]
Sum: [Fundamental, dbRackSequencer, Stalys]
Truth2: [DHE-Modules, LunettaModula]
Truth3: [DHE-Modules, LunettaModula]
VCA: [PersonalModules, AS]
VCA4: [dBiz, GrandeModular]
VCO: [Fundamental, PersonalModules]
WaveShaper: [MSM, AS]
X: [CharredDesert, KRTPluginA]

Thank you so much for making these available outside of GitHub! I was able to download and test the module and think it works great. I was wondering if maybe a button for (monophonic) sync could be added (in addition to the port), I think it could be useful in a performance setting, but it for sure is not critical.

I actually did get confused when first seeing the name ‘pop’. It’s no big deal, but I do prefer unique names if possible. It already starts to pertub me (slightly) when conducting search engine or library searches. If the name can still be changed, I would like to suggest the fantasy name ‘geyg’. But I suppose I also could get used to anything else, so really just starting my list for Santa here :santa: :smile:.

The good news is that the new module hasn’t been submitted to VCV Rack yet, so we can actually change the name and/or slug if we want. I’m open to a name change if

  • The name fits in the 4 HP wide panel with the existing font
  • I like the name (yes, subjective)
  • It relates to radioactive decay or Geiger counters in some sense
1 Like

I am considering this too, but once I use part of my panel for something, that real estate is gone forever. I actually have some fun stuff in mind that can’t be done from an external module, and that will require a little bit of the remaining blank space on the panel. So for now, I’m leaning against adding this button, since you can hook up an external button module.

If a few months go by after release and I haven’t done something with the blank space on the panel, and people still want a SYNC button, I will revisit this.

1 Like