Cpwitz Contributions


#14

Hi There, I can't see your contributions although I resynced several times. I manually downloaded you Fake Grainverb and got this error:

java.lang.ClassNotFoundException: is-copy-enabled emoji-size-boost
java.lang.ClassNotFoundException: is-copy-enabled emoji-size-boost
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.simpleframework.xml.strategy.Loader.load(Loader.java:50)
at org.simpleframework.xml.strategy.TreeStrategy.readValue(TreeStrategy.java:163)
at org.simpleframework.xml.strategy.TreeStrategy.read(TreeStrategy.java:102)
at org.simpleframework.xml.core.Source.getOverride(Source.java:360)
at org.simpleframework.xml.core.Factory.getConversion(Factory.java:207)
at org.simpleframework.xml.core.Factory.getOverride(Factory.java:139)
at org.simpleframework.xml.core.ObjectFactory.getInstance(ObjectFactory.java:63)
at org.simpleframework.xml.core.Composite.read(Composite.java:139)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
at org.simpleframework.xml.core.Persister.read(Persister.java:625)
at org.simpleframework.xml.core.Persister.read(Persister.java:606)
at org.simpleframework.xml.core.Persister.read(Persister.java:584)
at org.simpleframework.xml.core.Persister.read(Persister.java:543)
at org.simpleframework.xml.core.Persister.read(Persister.java:521)
at org.simpleframework.xml.core.Persister.read(Persister.java:426)
at axoloti.PatchGUI.OpenPatchInvisible(PatchGUI.java:1029)
at axoloti.PatchGUI.OpenPatch(PatchGUI.java:1042)
at axoloti.FileUtils.Open(FileUtils.java:149)
at axoloti.menus.FileMenu.jMenuOpenActionPerformed(FileMenu.java:251)
at axoloti.menus.FileMenu.access$200(FileMenu.java:49)
at axoloti.menus.FileMenu$3.actionPerformed(FileMenu.java:105)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:125)
at java.awt.MenuItem.processActionEvent(MenuItem.java:669)
at java.awt.MenuItem.processEvent(MenuItem.java:628)
at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:351)
at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:339)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:761)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Any Idea what this might be?


#15

Its in the library... lets not complicate matters (I suspect you have got a corrupted download when taking it from github)

(btw: I'm assuming your on 1.0.8, it will not open with anything prior to this)

so , sync library,

then you have to open patches using the file menu, not via the object browser. (yes, next step is to add a patch browser)

so file/ open patch, go to your axoloti home directory, then axoloti-contrib, then patches, then cpwitz/effects
and its there..

I just sync'd my library and found it first time.


#16

Ah ok it's there actually. But why are the other contribs available via the patch browser and this one not?

The fake granular verb sounds cool but the first delay taps are really audible which makes it feel more like a delay that diffuses into a reverb. Still great though!


#17

The other patches in the contribution library are saved as subpatches and can therefor be looked up via the browser. Regular patches has to be accesed through a reugalr browser.


#18

Ah that makes sense, thanks!


#19

cpwitz/osc/sine harmonics.axo

Easy organs! Made an object of things I wire and then copy&paste a lot.

Sine wave oscillator with 7 additional harmonics: sub octave, 2nd, 3rd, 4th, 5th, 6th and major 7th (2 octaves up). The intervals are pure intervals and not equally tempered.

The levels of each harmonic can be modulated separately.

One instance uses about 8% CPU.

There's a demo/testing patch under patches/cpwitz/synths/test-sine-harmonics.axp


Best approach for additive 'organ' patch?
#20

cpwitz/demux/demux smooth 8.axo

Smoothing 8 out demultiplexer (k-rate fractionals). Same as the factory "demux 8" but the output values can be smoothed exponentially with adjustable rise and fall time.

There's a demo/testing patch under patches/cpwitz/synths/test-sine-harmonics.axp


#21

cpwitz/lfo/tri.axo

Triangle wave LFO.

I really think for some modulations linear triangle waves are better suited than sines (for example for pwm or wave shapes). So I finally made one :smile:


#22

very good :wink: actually should go to factory/objects


#23

cpwitz/delay/tape-delay.axs

A pitch-shifting (when rate is changed) and saturating tape delay effect. Sounds like a cheap bbd.

You can toggle the output low pass filter and the saturation in the feedback loop. The low pass filter frequency is synchronised to the delay rate to make long delays (low rates) less aliased.

You really should turn on saturation and filtering for old-school crunch. A zero delay rate leads to no delay because no samples are taken with no rate!


#24

cpwitz/delay/triggered buffer.axo

The core object for the tape-delay effect. It's basically a circular buffer, triggered by every rising edge above zero on the trigger input (linear phasor is optimal).

Every rising zero edge a new sample is taken from the input and the oldest sample from the buffer is sent to output. Essentially, it's a tape loop with variable speed. There's no interpolation, so low rates get very crunchy and aliased.

The object needs a reference to a 32b table. The size of the table defines the range of available sample rates. The tape-delay effect for example uses a 2048 samples table.


#25

Stupid me! I was wondering about too heavy aliasing and then noticed that feeding the feedback back into the downsampling routine isn't really a great idea. And now there it is:

cpwitz/delay/triggered buffer feedback.axo

The same downsampling circular buffer but with internal feedback routing. Now we're talking.

For fancy experiments the old triggered buffer without internal feedback remains the same. I fixed the tape-delay effect with the new buffer, so it's much cleaner now.


#26

cpwitz/delay/tape-delay-stereo.axs

And here's a vintage lo-fi stereo tape delay. Good for scifi spaces and mellow choruses. The delay rates can be individually set for left and right channel. And there's a comb knob to adjust both together relative to each other.


#27

Hi tried both, this makes it sound a lot better thank you very much!

I'm trying to combine your delay with the sync engine of @SirSickSik here:

I tried to plug the output of the sync engine into the trigger of the triggered buffer object but it didnt work, no sound coming from the delay. Do you have any suggestions? It would be great to be able to tempo sync your tape delay, but also at a certain point break the sync and twist the delay time knobs to get that pitch effects.

This is the patch:
midi clock sync example tape delay.axp (20.4 KB)


#28

Yes, you're right. Clock syncing would be awesome. I haven't had the time to test @SirSickSik's sync solution yet (shame!).

I don't have my axoloti hardware at hand for the next few days.
But maybe one tip for further experiments: The trigger input doesn't work like the input of the delay read object. The delay's input is a fractional number which defines the delay time. The trigger input works as a sample trigger. When the input goes above 0 a new sample is taken and the oldest sample is put out on the output. This defines the sample rate of the buffer and needs to be driven by an audio rate oscillator (preferably a phasor). If you take a look at my two tape delay objects there's always a phasor driving the trigger input:

To set a desired delay rate this phasor's frequency must be modulated (red circle in the screenshot above). And maybe with correct scaling (math/*c) the output of the sync engine can set the correct delay rate.

Hope, that makes any sense.
I haven't my hardware around and therefore I can only talk and not try, sorry. Thinking about it, maybe I someday should make a more integrated downsampling circular buffer with internal triggering, where you can directly modulate the delay time.

Oh yeah. As always... lots of possibilities and too little of time :cry:.


#29

@cpwitz
Thanks for the explanation, that is totally understandable. Right now I'm not capable of logically determining the right scaling for the sync engine but I guess I'll try out with different values of math/*c and see If I can correctly feed your buffer (or maybe get funky unexpected results :smile:)

That sound like a really great Idea. In general I really like what you can do with axoloti but for using it in a bigger setup it is so important to have sync mechanisms for time based effects.


#30

@cpwitz
I Combined your tape delay with the syncengine of @rbrt in the delay sync thread:

Tapping the Tempo works great now but it still sounds really downsampled in bitcrusher like. Any idea why?
This is the patch:
Tape Delay Tap Tempo.axp (6.7 KB)

P.S. If you really want that tape delay sound the filter and saturation should be in the feedback loop :wink:

P.S.S. I raised the buffer size of the table/aloc, that helped!


#31

it is an downsampling bitcrusher delay,the saw acts like Samplerate, nice effect...


#32

Don't have time to check it out tonight, but do you really mean major 7th? The 7th harmonic (if that's what you mean) is slightly flat of a minor 7th normally. Unless you're actually a lot higher up the spectrum than I realise and it is actually a harmonic that is closer to a major 7th.


#33

Yes, it's a little flat major seventh: fundamentalHz*7.5
This gives for a A2 (110Hz) 825Hz.
Equally tempered the major 7th would be 830.61Hz. The tempered minor 7th would be 783.9Hz. Or did I miscalculate (happens very often)?

I wasn't thinking in tonewheel harmonics but wanted to have pure overtone factors. But it maybe really makes sense to make a tempered version of the sine overtone oscillator to act more like drawbars on hammonds.