User Details

Username: PeterMcCulloch
Twitter: None provided
Account Status: enabled
Member since: May 25 2011
About PeterMcCulloch:
(report this profile)

Devices by PeterMcCulloch

SubtleSonic BASSO - a fat monosynth with presets Version 1.0.4
SubtleSonic UltraComb Version 1.1
SubtleSonic CRONE - textural drone synth Version 2.0.1
SubtleSonic BandDistort Version 1.0
SubtleSonic AnalogKick Version 1.0.1
SubtleSonic EnvelopeShaper Version 1.0
SubtleSonic Super6 Detuner Version 1.0
XLFO -- SubtleSonic tweak Version 1.0

Total Downloads: 67,098

Comments by PeterMcCulloch


It's back!

There's also an implementation of the RCD in BEAP for those interested in a signal version.

Both are going to be really efficient, I'd guess, if cross~ is implemented like it appears to be in gen~.crossover.

Neither of them are super-intense CPU-wise.

Good to know. I'm in the midst of a major project but should have time in a couple of months to update it.


Thanks. Here's the current problem: preset interpolation is incompatible with automation. I've looked at a number of ways to handle this, but it just manages to mess everything up.

What I'm leaning towards is just stripping the interpolation code out, and saving the presets as device presets (outside of the device). You could then just use a third-party device interpolator.

Would that work?

Cool stuff.

One possible tweak: If you use a JSUI knob as the control you can get a 360º endless dial. (you could M4L-it using pattr or put an M4L control in the loop)

Glad to hear it. Thinking about separating the takeover transition vs. takeover interpolation values. Just need to find real estate for that...

Hi, can you please update your device to include the license that comes with my filter? (and if you need a version that includes the license, please let me know!)

Sorry to do this in comments, and would have PM'ed if I could.

My recollection on the 303 is that it only has an AD envelope, which could simplify your design.

Some odds and ends:
Analog synths often use RC envelopes rather than linear, and you may get a better sound with these. (YMMV, but slide~ is a great starting point for building these; RC envelopes are essentially log attack and exponential decay)

I'd also take a look at the exponent setting for some of your controls. For instance, with your portamento control, most of the useful values are less than 50 ms. You can use a strong exponent setting (>= 3) to accomplish this. You'll get more responsive controls.

You might also look at a different filter. Biquad~ is fine for filters that don't move a lot, but it's a bit slow to update for really fast filter sweeps. (I'd recommend lores~, a ladder filter, or, better still, the diode ladder filter that Oli Larkin posted to the C'74 forums a few months back)

Preface your send/receives with --- so that multiple copies of your patch don't interfere with each other. (e.g. send ---cutoff)

You can generate anti-aliased offset waves with saw~, though it's a bit trickier. The right inlet is the "sync" inlet. Saw~ will reset its phase when it receives a value over 0.5 in the right inlet, so you could do a little math on the output of one saw~ and use it to sync the other. (same goes for rect~)

The click is different probably because the function object is using the default output mode where it outputs the first value as a single value to line~, then sends the rest of the values out as a list. Because they are two separate messages, you can get timing differences.

You can set function to "list" output mode, and this will take care of that. If you use zl slice 2 (use the right outlet of it) to remove the first point from the list (xy: 0. 0.), you will also have better retriggering behavior. (the envelope will go from wherever it's at to the second (non-zero) pair.

You might also check out using curve~ with function; in my experience, it produces a much better-sounding amplitude envelope.

The drone in the video seems to be using a healthy bit of reverb. Throw the cathedral reverb after it and it'll work better.

I'm not sure. I'll do some investigating. I'm doing it via the pattr system, and I'm not sure if users are allowed to overwrite the presets that come with the device (i.e. in the .json file for the presets)

If they are, then this seems feasible, though it will require a little extra handling, but I'll check into it. If it works, what I suspect it will be will be something of the format: store presets as a separate file somewhere on your harddrive, device stores a line of text with the path to that file, loads presets from there. Things are busy now, but I'll look into it, as this is a functionality I'd like to have. Interested in beta-testing?...

You might check out the translate object. It'll do a lot of what your javascript is doing.

Cool, thanks!

Glad you like it; it started out as a demo for my students.

Please feel free to rate it; it'll make it easier for others to find...

Should be fixed. Try it now.

Sounds good and fun to play.

I think the images should be fixed now.

Took a little longer, but here's an updated version. I'm using an embedded bpatcher for the main bpatcher so that should work for everyone.

Caveat: This is an interim version (2.0.1) as I need to go back and update some of the factory presets.

Bonus: I added a new oneshot mode ("Once" at top of the Pulse section) so you can play single notes with just the pulse or in combination with the noise source.

Sounds like it could be an issue with bpatcher. It's using a bpatcher with an offset. I can try embedding it. Is Windows okay with filenames with multiple extensions? (sorry, OSX only here) I'll try to get it updated in the next day or so.

Anyone else experiencing this bug?

Egg on my face. Should be cool now.

You can use this as a drop-in replacement for waffle~. Shame this site doesn't support HTML for comments, since this will probably look bad...