Cpwitz Contributions


#1

Forum profile: @cpwitz
Contributor prefix: cpwitz

Objects

Patches

Generative patches:

  • cpwitz/generative/automobeep.axp - this was my contribution to the Noodling Patches competition, posted it here to the contributor library to keep things tidy
  • cpwitz/generative/generatusrex.axp - another endless noodling experiment

#2

cpwitz/synths/formant-synth.axp

status: active (well, would I go here and tell, that it's not active anymore? :smile: )

A vowel-singing formant synthesizer. I took the average formant frequencies from Wikipedia and built a lowpass/bandpass resonator pair around them to form formants on a simple saw wave. Play the synth via MIDI. The 8 voice polyphony drives Axoloti to the edge, but it's working.

This is what it can do currently:

  • Select one out of 8 formants (vowels) or cycle up/down/randomly with each pressed key through them.
  • Add noise to the straight saw wave to give the sound more grittiness.
  • Additional breath-like noise exciter with ad-envelope to spice up the beginning of each note.
  • Adjustable formant resonance
  • Blend between lowpass and bandpass resonators to select more boom or grit.
  • "Humanizer" to add pitch wobbling like I would be singing.
  • "Choir" switch (switches to supersaw oscillator)
  • Glide option to smoothly glide between changing formant setings.
  • Standard adsr envelope with adjustable velocity sensitivity
  • MIDI pitch-bend and modwheel tremolo/vibrato

Tell me, what you think about it!

I'm preparing to add a subpatch to the contrib-library, which allows to formant filter everthing you put into it.


#4

Whauu!! great patch!! similar to a preset in the Continuum !

1.0.8
8 voices 89% blows up my Axo ;-(

up to 7 voices and all goes "phonetically" Awesome!!
Great work!


#5

Thank you :blush:

I wonder why my axo setup can handle 8 voices polyphony and yours doesn't? Could it somehow be related to the usb-attached computer? Mine is a 3 years old mac mini and axo is attached via the monitor's usb-hub, but midi is coming from the din port via an external midi hub and not through the axo usb connection.

Just wondering.


#6

yep could just be... I can test only going thru DIN MIDI; in a couple of minutes.


#7

Ping: WaitSync Timeout, disconnecting now
Disconnect request

My setup:
USB keyboard to HUB > plays into AB LIVE
Axoloti to same HUB
AB Live sends to Axoloti Core

All good if i connect directly USB Keyboard to Axoloti host USB

wierd? is it all pact/patchers are in midi device omni?


#8

Ping: WaitSync Timeout, disconnecting now
Disconnect request
Control transfer failed: -7

@thetechnobear
Some light why this happens?
Cannot have 8 voices - Axo and LPK on same (reliable) USB HUB.


#9

Just for FIY, I tested 8 voices here too and it works :smile:


#10

so you are saying you get 8 voices when connect via device port (e.g. usb keyboard) but not when its connect via the host port? and does the patch stop playing, or your disconnect the UI?

well if the patch is 'right on the edge', then these is a possibility of any extra processing could 'tip it over the edge'
midi din vs midi device vs midi host are all slightly different code lines, or perhaps your LPK25 is sending a few more messages, at a higher rate?

if the UI is just disconnected, sometimes this can happen due to a little extra load when the patch starts, which means the UI times outs, but the axoloti patch itself is running fine.

all that said, Ive not had a chance to play with this yet, so the above are just ideas.

generally, Id say, always leave a little headroom on patches... as even if they work today, there is a possibility a firmware upgrade in the future might 'tip the balance'.
of course the opposite is possible that future versions are more efficient, so you will gain some headroom, to play with later, and that point you can add more voices.
but thats just the way I would play it...


#11

ups.. its the other way around,
LPK > AXO USB host - I can have the 8 voices
if going thru Axo device port (EigenD or Ab Live > Axo) patch compiles, but soon note is pressed:

Ping: WaitSync Timeout, disconnecting now
Disconnect request
Control transfer failed: -7

But thanks for explanations :wink: patch is at 89%, simply just lowering 1 voice and works %78


#12

cpwitz/synths/half-wave-synth.axp

status: active

A little synth experiment inspired by Ploytec's little πλ² (or PL2) box. It produces mostly "squary", chiptunesque sounds but also fat and bassy brassy square pads.

A single wavecycle consists of two pulse half-waves. The pulse width of each half-wave can be modulated independently. The pitch of the second half-wave can be adjusted relative to the played pitch (fifths and octaves work well).

The "complex" mode lets the first half-wave produce amplitudes above zero in the positive range and the second goes below zero into the negative range.

The priciple can be observed on an oscilloscope (and sometimes the waves look nicer than they actually sound :grin:).

Manually modulating pulse widths. 2nd half-wave's pitch is doubled;

The same with "complex" setting:

1st half-wave's pulse width and 2nd half-waves pitch (x4) modulated with separate lfos:

The patch has a lowpass filter which can be envelope modulated.

Yes, there can be settings that produce lots of aliasing. But hey, chiptunes :smile:

And, as before, when the patch refuses to play, lower the polyphony (currently it's 6 voices).


#13

cpwitz/effects/fake-granuverb.axp

status: active

A granular sounding long-tail reverb tank. It's "fake", because it doesn't use any granular techniques. The incoming audio is randomly sliced into little chunks and fed into the left and right channel of the reverb tank. And furthermore the reverb's feedback loop can also be sliced into chunks or chunked into slices, if you like.

You can adjust the slicing frequency, probability and the shape of slices (a simple attack/decay envelope). The reverb tank has two delay lines with two taps each. You can set the amount of short and long delays. And of course feedback... lots of feedback.

Since it's easy to overdrive the delays with too much feedback or sustain, there's a compressor/limiter in the output chain to protect whoever is listening (and to keep the ringing tail sustained).

There's a "stereo-width" dial before the output to spread the delay lines between the stereo channels including a simple "haas" delay widening effect.

The patch uses about 30% CPU and operates on "audio in left".

I don't have the guts to put this patch into this month's Effects Challenge, because it has far to many parameters and I couldn't decide which of them are the five most crucial to have fun with.

Aaah, presets: I still can't get my head around axo's preset system, but I tried to give the patch two presets. Preset 1 is a long lasting grainy reverb and Preset 2 is more sliced and chunked (but also likely to explode).


#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: