How to set up a patch to use BPM as tempo source and not hertz?


#1

Hey blush

This is first naive attempt at making a frequency to BPM converter. I took a look at some Reaktor patches for BPM calculating. I tested it at 120 BPM since it can be calculated into a clean frequency. 120/60 = 2hz. But it starts drifting noticeable after 4 bars.

Would be great if anyone wants to chip in. To have a BPM object would really benefit everyone that works with computer music in BPM.

Patch: BPM Object I.axp (4.0 KB)


#2

there is an object that takes the sync from USB or external midi?


#3

There is no BPM object at the moment. It would indeed be great if there was such an object to create drum machines.

The best thing you can do now is to use the MIDI clock object + the math/divremc object, and set up your DAW to sync with the Axoloti so it will run at the same tempo.

You can see how you need to connect the objects in my Super808 patch: https://github.com/vormplus/AxolotiPatches


#4

If you click on the Hz readout of an LFO, it will show the frequency multiplier (referenced to middle setting), next click it will show the time period, and on the next click it will show BPM.
To make precision adjustment by mouse, press shift while dragging for 0.1 unit increments, ctrl-shift for 0.01 unit increments. Or up/down arrow keys. Or type the value when a dial is focussed, followed by enter to accept.
Physical units can not be entered directly yet. One day...
For tempo sync with a DAW, use the midi/in/clock object, as janvantomme said. Make sure your DAW is configured to output midi clock on the Axoloti midi device.


#5

@javantomme i try to open your 808 patch and 303 patch but i have this errors


#6

Think I get the same....:

No available USB device found with matching PID/VID
search path : objects
finished loading objects
Saving preferences...
preferences path : /Users/syntaxerror60/Documents/axoloti/axoloti.prefs
Saving preferences...
preferences path : /Users/syntaxerror60/Documents/axoloti/axoloti.prefs
java.lang.ClassNotFoundException:
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.MainFrame.OpenPatch(MainFrame.java:1125)
at axoloti.MainFrame.OpenPatch(MainFrame.java:1118)
at axoloti.MainFrame.jMenuOpenActionPerformed(MainFrame.java:800)
at axoloti.MainFrame.access$600(MainFrame.java:89)
at axoloti.MainFrame$9.actionPerformed(MainFrame.java:505)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
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$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.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$1.doIntersectionPrivilege(ProtectionDomain.java:75)
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)