Jump to content

JSynthLib update


TK.

Recommended Posts

4 years after the last "inofficial" JSynthLib release it made sense to provide a new .jar file with the latest changes.

It can be downloaded from: http://www.ucapps.de/jsynthlib.html

MacOS users: the Java MIDI driver provided by Apple doesn't support SysEx - you have to install MMJ http://www.humatic.de/htools/mmj.htm

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 9 months later...
Maybe it's time to semi-officially take over custody of JSynthLib since nobody else but the Midibox community seems to want to keep it up to date.

JSynthLib has always been Open Source. If someone wants to contribute code he can do it anytime. Just subscribe to the JSynthLib mailing list and ask to be added as a developer. It's as simple as that.

Anyway in the last weeks there has been a revival as a group of new and not-that-new developers has taken action. One of them is trying to contact Thorsten regarding the changes (were there any?) mentioned here.

Edited by sonicwarrior
Link to comment
Share on other sites

  • 1 month later...

Can I ask which version of jsynthlib are you using? And which version of java you have?

I know that with older version of java/mac os you needed to use a midi provider (http://sourceforge.net/projects/jsynthlib/files/CAProvider/1.1/) but I assume that with more recent versions of java, this is no longer required.

Does your problem sound similar to the problem someone describes having here? http://stackoverflow.com/questions/7749172/why-java-midi-synth-on-mac-stop-playing-notes

Also, it could be worth checking if the problem happens with the release candidate for version 0.21 of jsynthlib ( http://dl.dropbox.com/u/9112508/distribution.zip )

thanks,

frankie

Link to comment
Share on other sites

Can I ask which version of jsynthlib are you using? And which version of java you have?

I know that with older version of java/mac os you needed to use a midi provider (http://sourceforge.net/projects/jsynthlib/files/CAProvider/1.1/) but I assume that with more recent versions of java, this is no longer required.

Does your problem sound similar to the problem someone describes having here? http://stackoverflow.com/questions/7749172/why-java-midi-synth-on-mac-stop-playing-notes

Also, it could be worth checking if the problem happens with the release candidate for version 0.21 of jsynthlib ( http://dl.dropbox.com/u/9112508/distribution.zip )

thanks,

frankie

thanks for the swift reply! i'll try and get you more details later when i sit down with the synth again..

Link to comment
Share on other sites

no joy. went over everything again and followed install instructions to the letter, still can't edit patches, just the play sound button works. also tried the new release candidate...

i do get this error on the midi loopback test though:

The error was:

null

The exception text is:

core.MidiUtil$TimeoutException

at core.MidiUtil$SysexInputQueue.getMessage(MidiUtil.java:640)

at core.MidiUtil.getMessage(MidiUtil.java:407)

at core.MidiTest.runLoopbackTest(MidiTest.java:111)

at core.MidiTest.runLoopbackTest(MidiTest.java:63)

at core.MidiConfigPanel$4.actionPerformed(MidiConfigPanel.java:152)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6373)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6138)

at java.awt.Container.processEvent(Container.java:2085)

at java.awt.Component.dispatchEventImpl(Component.java:4735)

at java.awt.Container.dispatchEventImpl(Container.java:2143)

at java.awt.Component.dispatchEvent(Component.java:4565)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)

at java.awt.Container.dispatchEventImpl(Container.java:2129)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4565)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)

at java.awt.EventQueue.access$000(EventQueue.java:85)

at java.awt.EventQueue$1.run(EventQueue.java:638)

at java.awt.EventQueue$1.run(EventQueue.java:636)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)

at java.awt.EventQueue$2.run(EventQueue.java:652)

at java.awt.EventQueue$2.run(EventQueue.java:650)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)

at java.awt.Dialog$1.run(Dialog.java:1046)

at java.awt.Dialog$3.run(Dialog.java:1098)

at java.security.AccessController.doPrivileged(Native Method)

at java.awt.Dialog.show(Dialog.java:1096)

at java.awt.Component.show(Component.java:1584)

at java.awt.Component.setVisible(Component.java:1536)

at java.awt.Window.setVisible(Window.java:842)

at java.awt.Dialog.setVisible(Dialog.java:986)

at core.PatchEdit.showPrefsDialog(PatchEdit.java:114)

at core.Actions$PrefsAction.actionPerformed(Actions.java:1340)

at core.MacUtils$1$3.run(MacUtils.java:63)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)

at java.awt.EventQueue.access$000(EventQueue.java:85)

at java.awt.EventQueue$1.run(EventQueue.java:638)

at java.awt.EventQueue$1.run(EventQueue.java:636)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Edited by 'tini
Link to comment
Share on other sites

Ok, and did you use the JSynthLib from http://dl.dropbox.com/u/9112508/distribution.zip?

Because when I browse the SVN repository and look at the line 640 of MidiUtil.java it shows this:

}

On the 0.20 version I get (that's javadoc aka cannot cause an exception):

* Convert <code>SysexMessage</code> into a hexa-dump string.

So either the line in the stacktrace is wrong or you are using a different version.

Edited by sonicwarrior
Link to comment
Share on other sites

ok, thanks for your help!

i double checked and made sure i was running the version you mention above, and get the following error:

The error was:

null

The exception text is:

core.MidiUtil$TimeoutException

at core.MidiUtil$SysexInputQueue.getMessage(Unknown Source)

at core.MidiUtil.getMessage(Unknown Source)

at core.MidiTest.runLoopbackTest(Unknown Source)

at core.MidiTest.runLoopbackTest(Unknown Source)

at core.MidiConfigPanel$4.actionPerformed(Unknown Source)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6373)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6138)

at java.awt.Container.processEvent(Container.java:2085)

at java.awt.Component.dispatchEventImpl(Component.java:4735)

at java.awt.Container.dispatchEventImpl(Container.java:2143)

at java.awt.Component.dispatchEvent(Component.java:4565)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)

at java.awt.Container.dispatchEventImpl(Container.java:2129)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4565)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)

at java.awt.EventQueue.access$000(EventQueue.java:85)

at java.awt.EventQueue$1.run(EventQueue.java:638)

at java.awt.EventQueue$1.run(EventQueue.java:636)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)

at java.awt.EventQueue$2.run(EventQueue.java:652)

at java.awt.EventQueue$2.run(EventQueue.java:650)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)

at java.awt.Dialog$1.run(Dialog.java:1046)

at java.awt.Dialog$3.run(Dialog.java:1098)

at java.security.AccessController.doPrivileged(Native Method)

at java.awt.Dialog.show(Dialog.java:1096)

at java.awt.Component.show(Component.java:1584)

at java.awt.Component.setVisible(Component.java:1536)

at java.awt.Window.setVisible(Window.java:842)

at java.awt.Dialog.setVisible(Dialog.java:986)

at core.PatchEdit.showPrefsDialog(Unknown Source)

at core.Actions$PrefsAction.actionPerformed(Unknown Source)

at core.MacUtils$1$3.run(Unknown Source)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)

at java.awt.EventQueue.access$000(EventQueue.java:85)

at java.awt.EventQueue$1.run(EventQueue.java:638)

at java.awt.EventQueue$1.run(EventQueue.java:636)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Link to comment
Share on other sites

Hi,

So what this message is saying is that JSynthLib waited a while to receive some messages during the loopback test, but didn't receive anything. If you don't mind fiddling around a little bit maybe we can track down where the problem is.

Firstly I've just run the midi loopback test on my PC to check that it does work - in at least one case ;). The loopback test worked which proves its possible although as I'm running windows it doesn't shed too much light on your problem.

We can be sure that your problem is caused either by JSynthLib failing to transmit midi data, or by somehow failing to receive it. Perhaps we can start by trying to work out which one of these problems we are having. I suspect that as you are able to use the play sound button, the problem is not with sending midi data but lets be thorough and verify this.

Is it possible to check that JSynthLib transmits something when you initiate the loopback test? For example, on my interface it flashes a light every time midi data is transmitted or received. Maybe there is some midi software on mac that can monitor midi ports, or perhaps you could connect your midi port to your xp machine and use midi-ox or similar on the xp machine?

I'll have a think about ways we can test the receiving side of JSynthLib.

frankie

Link to comment
Share on other sites

frank, thanks so much for taking the time with this. my music set up is something like this:

* cakewalk um3g midi interface> hardware synths - connected via a usb hub to my macbook.

* akai mpk49 keyboard> macbook - connected via usb hub

* motu ultralite mk3> macbook - conncted via firewire

i tried jsynthlib via both of these midi interfaces and experienced the same issues. in jsynthlib:

* midi interface Input/output port – connected to sammichFM

* Master controller – mpk keyboard

when i tested the sammichFM shortly after building it, i only had a single midi cable connected to the midi in of the device. on my windows machine this was enough to test that jsynthlib worked and my new synth could be addressed by the windows machine. do i remember this correctly? i only need the midi in connected to be able to edit patches from the computer right?

so my next steps are to independently verify that my midi out port on the sammich is working correctly, and poke around to see what midi messages are being sent/received.

the built in midi monitor in jsynthlib was showing all the note messages as i entered them on the keyboard. it did not show any "patch editing" messages.

also when the sammich midi out is connected, this monitor should also register things like sysex dumps and the like?

and for the record, the latest jar as provided in this thread is the version i should be using?

thanks again.

Hi,

So what this message is saying is that JSynthLib waited a while to receive some messages during the loopback test, but didn't receive anything. If you don't mind fiddling around a little bit maybe we can track down where the problem is.

Firstly I've just run the midi loopback test on my PC to check that it does work - in at least one case ;). The loopback test worked which proves its possible although as I'm running windows it doesn't shed too much light on your problem.

We can be sure that your problem is caused either by JSynthLib failing to transmit midi data, or by somehow failing to receive it. Perhaps we can start by trying to work out which one of these problems we are having. I suspect that as you are able to use the play sound button, the problem is not with sending midi data but lets be thorough and verify this.

Is it possible to check that JSynthLib transmits something when you initiate the loopback test? For example, on my interface it flashes a light every time midi data is transmitted or received. Maybe there is some midi software on mac that can monitor midi ports, or perhaps you could connect your midi port to your xp machine and use midi-ox or similar on the xp machine?

I'll have a think about ways we can test the receiving side of JSynthLib.

frankie

Link to comment
Share on other sites

Hi Frankie ('tini actually),

I haven't used JSynthLib on Mac OS Lion, but on my SnowLeopard (10.6.8) install I had to install the MMJ library to get sysex working correctly.

TK has the MMJ link in his post at the top of the thread. Not sure if you have installed that yet?

David

Edited by monokinetic
Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...

just to check on this before i start a max patch for this, can anyone confirm or otherwise whether jsynthlib works on osx lion?

My MBFM is not finished yet and my macbook runs snow leopard.

But if you build a MAX for Live patch, then please post it here. :)

Regards

Thomasch

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...