Mono2Poly - a patch that takes a monophonic audio and MIDI input and produces a polyphonic output


#1

This device samples the audio input and the highest note of the MIDI input, and plays back the note at the rest of the pitches. You can use it to turn a monophonic synth into a polyphonic synth (your synth should be set to highest note priority). Due to the different recording speeds, a downwards strum will always retrigger each note and an upwards strum will depend on your synth's settings. It also samples the release portion of a note (disabled by default). Sometimes MIDI and the synthesizer disagree on what note is being released last, so you can change the tail table size to 2 to disable tail sampling if it's bothering you. There is no de-clicking done and it's a little noisy, but it's great fun to play with.

mono2poly.axp (8.2 KB)


#2

Hi! I can't load the patch... The console has these messages, my axo is working properly and I synced the library. I'm on osx 10.13.6 it could be a java problem

org.simpleframework.xml.core.ElementException: Element 'modules' does not have a match in class axoloti.object.AxoObjectPatcherObject at line 42
org.simpleframework.xml.core.ElementException: Element 'modules' does not have a match in class axoloti.object.AxoObjectPatcherObject at line 42
at org.simpleframework.xml.core.Composite.readElement(Composite.java:527)
at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
at org.simpleframework.xml.core.Composite.read(Composite.java:201)
at org.simpleframework.xml.core.Composite.read(Composite.java:148)
at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623)
at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
at org.simpleframework.xml.core.Composite.read(Composite.java:201)
at org.simpleframework.xml.core.Composite.read(Composite.java:148)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190)
at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:167)
at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:144)
at org.simpleframework.xml.core.CompositeListUnion.readElement(CompositeListUnion.java:189)
at org.simpleframework.xml.core.CompositeListUnion.read(CompositeListUnion.java:162)
at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:482)
at org.simpleframework.xml.core.Composite.readVariable(Composite.java:613)
at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
at org.simpleframework.xml.core.Composite.readElement(Composite.java:532)
at org.simpleframework.xml.core.Composite.readElements(Composite.java:445)
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59)
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383)
at org.simpleframework.xml.core.Composite.read(Composite.java:201)
at org.simpleframework.xml.core.Composite.read(Composite.java:148)
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:1003)
at axoloti.PatchGUI.OpenPatch(PatchGUI.java:1025)
at axoloti.FileUtils.Open(FileUtils.java:166)
at axoloti.menus.FileMenu.jMenuOpenActionPerformed(FileMenu.java:255)
at axoloti.menus.FileMenu.access$200(FileMenu.java:51)
at axoloti.menus.FileMenu$3.actionPerformed(FileMenu.java:107)
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:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
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:80)
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)


#3

Same error here, on MacOS 10.14.6, Patcher 1.0.12

@Ott - what version of Axoloti Patcher are you using?


#4

I am on the 2.0 version of Axoloti.


#5

That’s the problem. 2.0 is very buggy, few people use it.
It’s been three years since it was dumped on the world, and though it has some interesting new features, there have been no bug fixes.

Uninstall it.
Install 1.0.12-2


#6

Okay, I've ported it to the old version, added interpolation, and also tail sampling (the release portion of the note, disabled by default). Sometimes MIDI and the synthesizer disagree on what note is being released last, so you can change the table size to 2 to disable that if it's bothering you.

mono2poly.axp (8.2 KB)


#7

Much better.

This is a fun device - I only tested it using my iPod for input - I need to cable it up to a mono synth.