You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(90) |
Sep
(38) |
Oct
(22) |
Nov
(3) |
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(40) |
Feb
(119) |
Mar
(236) |
Apr
(41) |
May
(45) |
Jun
(10) |
Jul
(9) |
Aug
(12) |
Sep
(5) |
Oct
(17) |
Nov
(2) |
Dec
(3) |
2006 |
Jan
(23) |
Feb
(36) |
Mar
(49) |
Apr
|
May
|
Jun
(1) |
Jul
(11) |
Aug
(11) |
Sep
(15) |
Oct
(30) |
Nov
(36) |
Dec
(13) |
2007 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
(3) |
Jun
(7) |
Jul
(4) |
Aug
(1) |
Sep
(19) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2008 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(5) |
Dec
|
2009 |
Jan
(26) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(26) |
Sep
(6) |
Oct
(5) |
Nov
(6) |
Dec
(6) |
2010 |
Jan
(3) |
Feb
|
Mar
(5) |
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
(6) |
Aug
(8) |
Sep
(220) |
Oct
(9) |
Nov
(27) |
Dec
(33) |
2012 |
Jan
|
Feb
(4) |
Mar
(9) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2013 |
Jan
(6) |
Feb
(20) |
Mar
(6) |
Apr
(3) |
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(17) |
Nov
(2) |
Dec
|
2014 |
Jan
(9) |
Feb
(1) |
Mar
(11) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Peter G. <pet...@gm...> - 2009-11-10 09:53:21
|
On Sun, Oct 4, 2009 at 10:23 PM, William R. Zwicky <wrz...@po...>wrote: > denis queffeulou wrote: > > The build.xml is setting java source and target to 1.4 > > > > It is not true: the source is 1.5, just set to 1.5 and compilation > > was OK. > > > > But I don't think I have a SVN account ... > > > Fixed. > > -Bill > Could it be that this new Java version requires generics<http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html>to be used? I get 100 warnings when compiling with javac -classpath '.:groovy.jar:asm.jar' org/jsynthlib/*/*/*.java org/jsynthlib/*/*.java When I add -Xlint:unchecked to the command, the 100 messages are like these: org/jsynthlib/utils/XMLWriter.java:46: warning: [unchecked] unchecked call to addFirst(E) as a member of the raw type java.util.LinkedList elements.addFirst(element); ^ org/jsynthlib/editorbuilder/Anchor.java:243: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.Collection listeners.add(l); ^ org/jsynthlib/editorbuilder/Anchor.java:283: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.Set result.add(c); org/jsynthlib/jsynthlib/xml/XMLPatch.java:367: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.HashMap cache.put(p, e); ^ org/jsynthlib/editorbuilder/PGSNode.java:24: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.HashSet names.add(p.getName()); ^ ./core/Device.java:341: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.ArrayList driverList.add(driver); ^ ./core/JSLFrame.java:199: warning: [unchecked] unchecked call to WeakReference(T) as a member of the raw type java.lang.ref.WeakReference parent = new WeakReference(p); ^ When I Googled for info, I found this forum post<http://www.coderanch.com/t/381445/Java-General/java/compiling-under>where it is advised to use generics when compiling for Java 1.5. Quote from that post: "These warning have to do with generics - a good starting point is here<http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html>. Basically whenever you declare a Collection or Map in 1.5, you need to tell the compiler what sorts of things will go *into* the collection. You do this with the new <> notation shown in the link. Note that what you're seeing are warnings, not errors. It's possible to ignore them. But if you use generics and make the warnings go away, you'll get much better compile-time checking of the rest of your code that *uses*the collections and maps. Also, generics aren't *just* for collections and maps, but that's the most common case - and the one that applies to your code, apparently." Should I get started fixing those generics? I get many errors when trying to run JSL, to test the Roland SPD-11 and Yamaha CS2x drivers that I'm writing, so I won't mind trying to fix them. I'm just not sure if my level of Java knowledge is appropriate for this job ... but I guess I'm right if the switch from Java version 1.4 to 1.5 means we can (should?) now use generics, and we didn't before. |
From: Peter G. <pet...@gm...> - 2009-10-28 09:10:31
|
Hi I've setup a new page on the wiki to list all drivers that are being developed: http://jsynthlib.wikispaces.com/development-list KorgHAWK800 by Michael Hawkins Proteus 2500 by fjskinne Roland SPD-11by freakrush aka Peter Geirnaert Yamaha AN1X by Gerald Raucamp Yamaha FB01, Waldorf Micro Q and Roland D-5 by Maciej Łoziński In case I forgot some, please let me know. Thanks in advance. Have a nice day :) Peter PS: today I had a member request from "fjskinne" on the wiki, he's working on a Proteus 2500 driver. 2009/10/22 Maciej Łoziński <loz...@o2...> > Hi Robert! > > Thanks for the link, I'll try this for sure. But why isn't your driver > included in Jsynthlib? > > cheers > Maciek > > > Robert Wirski pisze: > > Hello Maciek, > > in fact I have developed Waldort Q driver some time ago. > > As I have not used it for long I am not sure about its state. > > You can get it from jsynthlib.republika.pl/WaldorfQ.zip > > Cheers, > > Robert. > > > > > > |
From: Maciej Ł. <loz...@o2...> - 2009-10-21 22:26:47
|
Hi Robert! Thanks for the link, I'll try this for sure. But why isn't your driver included in Jsynthlib? cheers Maciek Robert Wirski pisze: > Hello Maciek, > in fact I have developed Waldort Q driver some time ago. > As I have not used it for long I am not sure about its state. > You can get it from jsynthlib.republika.pl/WaldorfQ.zip > Cheers, > Robert. > > |
From: William R. Z. <wrz...@po...> - 2009-10-04 21:37:53
|
denis queffeulou wrote: > The build.xml is setting java source and target to 1.4 > > It is not true: the source is 1.5, just set to 1.5 and compilation > was OK. > > But I don't think I have a SVN account ... > Fixed. -Bill |
From: Robert W. <wi...@op...> - 2009-10-04 19:01:43
|
Hello Maciek, in fact I have developed Waldort Q driver some time ago. As I have not used it for long I am not sure about its state. You can get it from jsynthlib.republika.pl/WaldorfQ.zip Cheers, Robert. On Sep 30, 2009, at 11:08 PM, Maciej Łoziński wrote: > Hello. > > I'm about to write drivers for Yamaha FB01, Waldorf Micro Q and Roland > D-5. I'll probably start with Yamaha, but later I plan to play with > Waldorf. And here is my question - I found an entry in "Feature > Requests" on SourceForge about Waldorf Q. Does it mean that someone is > working on it? For Yamaha and Roland I found nothing, so I suppose > they > are free to hack :-) > > I'm a JEE developer, so I hope I'll have a little fewer problems, > but in > case I had any, wish me luck :-) I'll post here when I do. > > Cheers > Maciek > > PS. Great project, I'll be happy to contribute :-) > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart > your > developing skills, take BlackBerry mobile applications to market and > stay > ahead of the curve. Join us from November 9-12, 2009. Register > now! > http://p.sf.net/sfu/devconf > _______________________________________________ > Jsynthlib-devel mailing list > Jsy...@li... > https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel |
From: denis q. <dqu...@fr...> - 2009-10-04 18:15:31
|
Hi, I just checkout the trunk, ant build-run and get an error about : [javac] /Users/groumpf/Documents/dev/JSynthLib/trunk/JSynthLib/ synthdrivers/RolandD10/message/DisplayMessage.java:23: static import declarations are not supported in -source 1.4 [javac] (try -source 1.5 to enable static import declarations) [javac] import static synthdrivers.RolandD10.D10Constants.*; The build.xml is setting java source and target to 1.4 It is not true: the source is 1.5, just set to 1.5 and compilation was OK. But I don't think I have a SVN account ... -- denis queffeulou |
From: Maciej Ł. <loz...@o2...> - 2009-09-30 21:08:17
|
Hello. I'm about to write drivers for Yamaha FB01, Waldorf Micro Q and Roland D-5. I'll probably start with Yamaha, but later I plan to play with Waldorf. And here is my question - I found an entry in "Feature Requests" on SourceForge about Waldorf Q. Does it mean that someone is working on it? For Yamaha and Roland I found nothing, so I suppose they are free to hack :-) I'm a JEE developer, so I hope I'll have a little fewer problems, but in case I had any, wish me luck :-) I'll post here when I do. Cheers Maciek PS. Great project, I'll be happy to contribute :-) |
From: Peter G. <pet...@gm...> - 2009-09-19 08:50:45
|
Hi, I've split up the YamahaMotif.xml<http://jsynthlib.wikispaces.com/YamahaMotif>file and written some comments to each part. Writing such a file for my SPD11 seems pretty easy now. Didn't try it yet as I'm finishing my editors written the standard java way, I go on dreaming about xml ... A nice window where a user can enter the info for each value ("name", "deviceID", "infoText" etc) in the list and a button "create device" to generate the .xml file would be the next step into wonderland :) Then another tab on that window that describes calculateChecksum methods, choose one from a list or define a custom method, click "Apply" to modify the .xml file. And so on for each "module" that exists in a device support. Then finally choose from the menu: "editorbuilder" and arrange the parameters. In the end, each driver would become a set of modules and a set of editorpresets, I'm thinking about SynthEdit, Synthmaker, Reaktor, but for Sysex instead of Vst. In SynthEdit, you can write your own dsp or GUI modules in C++, but then you still have to put the module in the visual editor, connect it to in/outputs and save that as a synthedit file. Btw, synthEdit can send Sysex messages too, but it doesn't have enough modules built yet to make a Vst editor/librarian like it can be done with JSynthLib. There was a thread about it on the SynthEdit mailing lists lately... Maybe that's a huge feature request, and I'm not sure if such feature requests are a good idea here, so I'll just call it "dreaming" ;-) I also think if you can learn somebody to write the right xml file about the sysex, that that person could as well have learned to write the right Java code, if we had more or better detailed examples and a better guide. It wouldn't really be writing the Java code, but just copy the code and change it to your needs. Now the code is presented to the new writer in full (complex) drivers that maybe even the authors don't understand anymore. It might be better to present the "example code" in blocks, or step-by-step parts. If your synth doesn't use a this-or-that, go to the next step, choose another code-module that suits your needs. The list of code-modules could be a library of all currently used techniques organized by point of view: device, singledriver, bankdriver and converter with their attributes and methods, as in the step by step wiki part <http://jsynthlib.wikispaces.com/Step-by-step> versus Menu actions from a library, scene or bank window and moving a sysexwidget in an editorFrame, as in the using synthlib wiki part<http://jsynthlib.wikispaces.com/Using_JSynthLib> -> why/how do they work, what code-modules do they require? Using such template code examples might also help to keep a standard way of doing things and find common methods between drivers. Maybe that's already something the xmldriver does. An advantage of the xml editorbuilder might also be that the user can combine his favorite parameters in one editorwindow with the fadernumbers assigned that he wants. I'm not sure if that still fits in the original vision of JSL... My SPD11PatchEditor has 256 knobs, and another 256 comboboxes. I can't assign all knobs to a different fadernumber now. Or am I wrong? Mmm, I could probably set an int variable in the user's prefs and use that variable to assign fadernumbers to the knobs. Did any other editor implement such a hack? How do I find that editor? A library of used techniques would be my preferred place to go looking for that editor. Now I'll have to go reading all editors and hope there's one that can inspire me. I'll stop here for now. Cheers :-) Peter On Wed, Sep 16, 2009 at 6:56 PM, Joachim <li...@sd...> wrote: > Hi, > > that's the best idea I've seen on this list for years. Therefore I'm > explicitly mentioning it > with a dedicated subject for those who don't read every message on this > list. > I must admit I never understood how to write an XML driver therefore > I've only written > Java drivers. That's the reason why I can unfortunately not contribute > anything the wiki. :( > > It would be even better if the complete www.jsynthlib.org would be > turned into a wiki > as Brian Klock (I think he holds the page) seems to have no time for > keeping it up-to-date. > > Cheers > Joachim > > Am 25.08.2009 um 19:17 schrieb Peter Geirnaert: > > > Ok, thanks, very nice, I'll surely give it some tinkertime. > > I started an XMLguide <http://jsynthlib.wikispaces.com/XMLguide> as > > part of > > the wiki, too bad that I've got troubles opening (and loading) the > > preferences (window), that way I can't do any testing so I have to fix > > that > > problem first. > > > > Walking the dog now ... > > Peter > > > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ > Jsynthlib-devel mailing list > Jsy...@li... > https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > |
From: Joachim <li...@sd...> - 2009-09-16 19:14:17
|
Hi, that's the best idea I've seen on this list for years. Therefore I'm explicitly mentioning it with a dedicated subject for those who don't read every message on this list. I must admit I never understood how to write an XML driver therefore I've only written Java drivers. That's the reason why I can unfortunately not contribute anything the wiki. :( It would be even better if the complete www.jsynthlib.org would be turned into a wiki as Brian Klock (I think he holds the page) seems to have no time for keeping it up-to-date. Cheers Joachim Am 25.08.2009 um 19:17 schrieb Peter Geirnaert: > Ok, thanks, very nice, I'll surely give it some tinkertime. > I started an XMLguide <http://jsynthlib.wikispaces.com/XMLguide> as > part of > the wiki, too bad that I've got troubles opening (and loading) the > preferences (window), that way I can't do any testing so I have to fix > that > problem first. > > Walking the dog now ... > Peter |
From: Michael H. <kor...@ya...> - 2009-09-02 12:51:40
|
Oh, that was silly of me. Thanks for the help! ________________________________ From: Peter Geirnaert <pet...@gm...> To: Michael Hawkins <kor...@ya...>; jsy...@li... Sent: Wednesday, September 2, 2009 1:13:33 AM Subject: Re: [Jsynthlib-devel] Vertical vs horizontal ScrollBarWidget Hi Mike, Very simple answer: VertScrollBarWidget, which is a subclass of ScrollBarWidget. I'll add it on the wiki's widgetlist Good luck! Peter On Wed, Sep 2, 2009 at 1:39 AM, Michael Hawkins <kor...@ya...> wrote: > >Hi JsynthLib developers, > >>I have a question for you all. > >>Is anyone aware of a way to make the ScrollBarWidget vertical instead of horizontal? > >>It seems extremely non intuitive to me that JSynthLib would not provide a way to use vertical scroll bars. > >>Thanks, > >>Mike > > > > > >>------------------------------------------------------------------------------ >>Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day >>trial. Simplify your report design, integration and deployment - and focus on >>what you do best, core application coding. Discover what's new with >>Crystal Reports now. http://p.sf.net/sfu/bobj-july >>_______________________________________________ >>Jsynthlib-devel mailing list >Jsy...@li... >https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > |
From: Peter G. <pet...@gm...> - 2009-09-02 05:14:04
|
Hi Mike, Very simple answer: VertScrollBarWidget<http://freqrush.cr68.com/JSynthLib/api_docs/core/VertScrollBarWidget.html>, which is a subclass of ScrollBarWidget. I'll add it on the wiki's widgetlist<http://jsynthlib.wikispaces.com/sysexwidgets> Good luck! Peter On Wed, Sep 2, 2009 at 1:39 AM, Michael Hawkins <kor...@ya...>wrote: > Hi JsynthLib developers, > > I have a question for you all. > > Is anyone aware of a way to make the ScrollBarWidget vertical instead of > horizontal? > > It seems extremely non intuitive to me that JSynthLib would not provide a > way to use vertical scroll bars. > > Thanks, > > Mike > > > > > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Jsynthlib-devel mailing list > Jsy...@li... > https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > |
From: Michael H. <kor...@ya...> - 2009-09-02 02:05:58
|
Hi JsynthLib developers, I have a question for you all. Is anyone aware of a way to make the ScrollBarWidget vertical instead of horizontal? It seems extremely non intuitive to me that JSynthLib would not provide a way to use vertical scroll bars. Thanks, Mike |
From: Peter G. <pet...@gm...> - 2009-08-26 17:03:51
|
Hi ram (I'm a ram too) How can I say in words how I appreciate your mail ... I asked a question on java-forums, look what a helpful answer I got: "go read sun's java tutorial" :p http://www.java-forums.org/awt-swing/20809-help-debugging-exception-thread-awt-eventqueue-0-java-lang-nullpointerexception.html It's motivating indeed, to see this is not a "only the lonely" project anymore. Oh btw, I have a 50$ value code for google adds because I'm publishing their adds on my old page for. I could use it to promote JSynthLib. Has anybody here enough experience with AdWords to handle this quickly ? the code is valid until 31/08/2009 , only 5 days left ... I'll check it out today but now I'm expected elsewhere, I have to go .. Cheers! Peter On Wed, Aug 26, 2009 at 8:17 AM, ram <ra...@hy...> wrote: > > I am glad to see the list becoming really active again. I may just have to > dust > off my Java 6 and try to get this thing to edit a Casio CZ-3000. Next up a > Wersi EX-20. > > Good luck all, > > ra...@hy... > > free synth music downloads at: > > http://www.hydrophones.com/MAI-Audio/More-MAI-Audio-Music_downloads.html > > > > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Jsynthlib-devel mailing list > Jsy...@li... > https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > |
From: Peter G. <pet...@gm...> - 2009-08-26 10:39:45
|
Ok, now it works again. I removed the folder /home/peter/.java/deployment and all its subdirectories, and also the folder created by running JSynthLib: /home/peter/.java/.userPrefs and all its subdirectories. Now I can open the preferences window again, and JSynthLib version 0.20.0 doesn't give an error dialog anymore, also not on the first time I loaded it. It just creates the .userPrefs folder with the *.user.lock.peter* and *.userRootModFile.peter files* and org folder containing a prefs.xml file and hte rest of subdirectories and prefs.xml files. In case it's of any use, I think the file /home/peter/.java/deployment/deployment.properties was responsible: #deployment.properties #Sat Aug 22 16:04:09 GMT 2009 deployment.javaws.splash.index=/home/peter/.java/deployment/cache/6.0/splash/splash.xml deployment.trace=true deployment.log=true deployment.javapi.lifecycle.exception=true deployment.version=6.0 deployment.browser.path=/usr/bin/mozilla #Java Deployment jre's #Sat Aug 22 16:04:09 GMT 2009 deployment.javaws.jre.1.registered=false deployment.javaws.jre.1.osname=Linux deployment.javaws.jre.0.registered=true deployment.javaws.jre.0.platform=1.6 deployment.javaws.jre.1.enabled=true deployment.javaws.jre.1.location=http\://java.sun.com/products/autodl/j2se deployment.javaws.jre.0.osname=Linux deployment.javaws.jre.0.path=/usr/lib/jvm/java-6-sun-1.6.0.15/jre/bin/java deployment.javaws.jre.0.product=1.6.0_15 deployment.javaws.jre.1.osarch=i386 deployment.javaws.jre.1.path=/usr/lib/jvm/java-6-openjdk/jre/bin/java deployment.javaws.jre.1.platform=1.6 deployment.javaws.jre.0.osarch=i386 deployment.javaws.jre.1.product=1.6.0_0 deployment.javaws.jre.0.location=http\://java.sun.com/products/autodl/j2se deployment.javaws.jre.0.enabled=true deployment.javaws.jre.0.args= I guess I've messed up that file by installing too many different java versions: sun-java, openjdk, and different versions ... Finally I can go back to writing my driver :-) Happy summertime ;-) Peter On Tue, Aug 25, 2009 at 11:27 AM, Peter Geirnaert <pet...@gm... > wrote: > Hi again :) > > Maybe this is information I should also give ... > > When I start JSynthLib, it creates two empty files in > /home/peter/.java/.userPrefs/ : > *.user.lock.peter* and *.userRootModFile.peter* > > Questions I have here: > 1. Why are they empty? > 2. What are they for? > 3. Are they created by JSynthLib, or by the Java JRE? > > Thanks for any enlightenment ;) > > Peter > > > On Tue, Aug 25, 2009 at 8:37 AM, Peter Geirnaert < > pet...@gm...> wrote: > >> Hi, >> For some reason, i can't open the JSynthLib "preferences" window on my >> Debian squeeze/sid installation. It happens with the JSL-0.20.0 version and >> the JSL-0.21.0-alpha version, though the 0.20.0 version gives me an error >> dialog "Unable to load user preferences. Defaults loaded instead." and the >> 0.21.0-alpha version doesn't do anything. >> >> Also , I can't just copy a line of java code from inside Netbeans into my >> mail or wiki that I'm writing with firefox, it makes firefox crash >> immediately. I first have to paste the code in a texteditor, then copy it >> again, and then paste it in firefox. (This makes me think it's Debian or >> Java problem). But because it's also troubles with core.PatchEdit.java, I >> thought I'd better post it here too. >> >> peter@avlinux:~$ java -version >> java version "1.6.0_0" >> OpenJDK Runtime Environment (IcedTea6 1.5) (6b16-4) >> OpenJDK Server VM (build 14.0-b15, mixed mode) >> >> On ubuntustudio, it works: >> >> peter@ubustu:~$ java -version >> java version "1.6.0_0" >> OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11) >> OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) >> >> The debug-preferences-window.txt below is saved from running JSynthLib >> inside Netbeans and describes these exceptions thrown: >> java.lang.ArrayIndexOutOfBoundsException: 3 >> Exception in thread "main" java.lang.NullPointerException >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException >> >> Any ideas of where/what to look for, or hints about some debugging >> techniques are most welcome. >> >> Thanks in advance. >> Peter >> * >> debug-preferences-window.txt* >> init: >> deps-jar: >> Compiling 5 source files to >> /home/peter/NetBeansProjects/JSynthLib/build/classes >> Copying 10 files to /home/peter/NetBeansProjects/JSynthLib/build/classes >> compile: >> java.lang.ArrayIndexOutOfBoundsException: 3 >> at core.MidiUtil.setSysexInputQueue(MidiUtil.java:367) >> at core.Device.setInPort(Device.java:326) >> at core.Device.setup(Device.java:117) >> at core.AppConfig.addDevice(AppConfig.java:351) >> at core.AppConfig.loadPrefs(AppConfig.java:49) >> at core.PatchEdit.<init>(PatchEdit.java:40) >> at JSynthLib.main(JSynthLib.java:33) >> Exception in thread "main" java.lang.NullPointerException >> at >> core.JSLDesktop$JSLFakeDesktop.getSelectedWindow(JSLDesktop.java:386) >> at core.JSLDesktop.getSelectedWindow(JSLDesktop.java:147) >> at core.PatchEdit.getInstance(PatchEdit.java:125) >> at core.ErrorMsg.reportError(ErrorMsg.java:59) >> at core.PatchEdit.<init>(PatchEdit.java:74) >> at JSynthLib.main(JSynthLib.java:33) >> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException >> at core.PatchEdit.showPrefsDialog(PatchEdit.java:114) >> at core.Actions$PrefsAction.actionPerformed(Actions.java:1340) >> at >> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) >> at >> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) >> at >> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404) >> at >> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) >> at javax.swing.AbstractButton.doClick(AbstractButton.java:374) >> at >> javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1688) >> at >> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1732) >> at java.awt.Component.processMouseEvent(Component.java:6108) >> at javax.swing.JComponent.processMouseEvent(JComponent.java:3276) >> at java.awt.Component.processEvent(Component.java:5873) >> at java.awt.Container.processEvent(Container.java:2105) >> at java.awt.Component.dispatchEventImpl(Component.java:4469) >> at java.awt.Container.dispatchEventImpl(Container.java:2163) >> at java.awt.Component.dispatchEvent(Component.java:4295) >> at >> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) >> at >> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125) >> at >> java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) >> at java.awt.Container.dispatchEventImpl(Container.java:2149) >> at java.awt.Window.dispatchEventImpl(Window.java:2478) >> at java.awt.Component.dispatchEvent(Component.java:4295) >> at java.awt.EventQueue.dispatchEvent(EventQueue.java:604) >> at >> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) >> at >> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) >> at >> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) >> at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) >> > > |
From: ram <ra...@hy...> - 2009-08-26 08:36:10
|
I am glad to see the list becoming really active again. I may just have to dust off my Java 6 and try to get this thing to edit a Casio CZ-3000. Next up a Wersi EX-20. Good luck all, ra...@hy... free synth music downloads at: http://www.hydrophones.com/MAI-Audio/More-MAI-Audio-Music_downloads.html |
From: Daniel R. <dr....@co...> - 2009-08-25 17:52:57
|
While it is true that millions of hours lost are sort of the way of things around here (my girlfriend's wireless connection just stopped working, unrelated but will waste a lot of time I'm sure), 4 hours to learn Eclipse are well spent in any case! I meant that your problems sounded like they were with the hawk800 communications, and not with the actual JSynthlib stuff. In any case, the beauty of open source is not that the code is there in case you need it. The beauty of open source is that, if the code is in a language you need, the shit support forces you to get into the code yourself. You will be a better person for it. Use Eclipse to debug in real time and watch the call stack do its thing. You will track down your problem, gain self esteem, and rule the world (after, that is). Sorry that I can't be more specific.... Best! Daniel > |
From: Peter G. <pet...@gm...> - 2009-08-25 17:18:01
|
Ok, thanks, very nice, I'll surely give it some tinkertime. I started an XMLguide <http://jsynthlib.wikispaces.com/XMLguide> as part of the wiki, too bad that I've got troubles opening (and loading) the preferences (window), that way I can't do any testing so I have to fix that problem first. Walking the dog now ... Peter On Tue, Aug 25, 2009 at 4:25 PM, Rib Rdb <ri...@us...>wrote: > On Tue, Aug 25, 2009 at 9:19 AM, Rib Rdb <ri...@gm...> wrote: > > > On Tue, Aug 25, 2009 at 9:05 AM, Peter Geirnaert < > > pet...@gm...> wrote: > > > >> Hi Rib Rdb > >> > >> On Tue, Aug 25, 2009 at 3:31 PM, Rib Rdb <ri...@gm...> wrote: > >> > >>> Well, this is basically what the XML driver was designed for. You > create > >>> the xml describing your sysex, and you should have basic librarian > >>> functionality. > >> > >> Can I read the source of the XMLDriver and find out that way how I have > to > >> describe the sysex in XML? Or should I read another file? There must be > some > >> naming convention at least I guess. > >> > > > > You can take a look at > > org/jsynthlib/jsynthlib/synthdrivers/yamaha/motif/YamahaMotif.xml > > > > The motif is an incredibly complicated synth, so it doesn't make for a > very > > good example. It's so complicated I never was able to finish the driver > for > > it. > > > > > >> Then to create an editor you use EditorBuilder, where you just drag and > >>> drop the pieces to create your UI. > >> > >> can I use EditorBuilder by running java core/EditorBuilder and/or where > do > >> I drag pieces from? > >> > > > > Looks like that should be java org.jsynthlib.editorbuilder.EditorBuilder > > You would load the xml driver, then it should give you a list of all the > > parameters you defined, and you can drag them to arrange them how you > want. > > > > > >> > >> > >> > >>> Unfortunately there's no documentation, and it's probably missing a few > >>> pieces since no one's used it to write a finished editor. If anyone's > >>> willing to play with it and document the process as they go along, I'd > be > >>> happy to help you with any issues and possibly fix any missing pieces. > >> > >> Yes, I am more than willing to play with it. My first missing piece is > >> "how to get started" > >> I've already described each piece of sysex that my Roland SPD-11 > >> sends/receives on > >> spd-11.wikispaces.com. The missing documentation plays a role indeed. > >> > >> > >>> > >>> > >>> On Tue, Aug 25, 2009 at 5:12 AM, Peter Geirnaert < > >>> pet...@gm...> wrote: > >>> > >>>> Hi again :) > >>>> > >>>> I was typing this message in the general advanced > >>>> java<http://www.java-forums.org/advanced-java/>sub-forum of > >>>> > >>>> java-forums > >>>> but before I hit send, I thought, maybe some native English speaking > >>>> JSynthLib fan > >>>> might know better ways to sell this job ... > >>>> > >>>> my post titled: Supporting newbies in an Open Source project > >>>> --------------------------- > >>>> Hi, > >>>> This is a call to advanced java users, for help in a project to help > >>>> musicians write Java code. > >>>> The question is how to help them write an advanced MIDI System > Exclusive > >>>> driver for their synthesizer, > >>>> and so build a universal synthesizer preset editor/librarian that > >>>> eventually > >>>> supports every existing synthesizer. > >>>> > >>>> The base for this software has already been built and is released at > >>>> SourceForge with the name JSynthLib. > >>>> > >>>> The project to help newbies is a wiki that should help musicians to > >>>> write a > >>>> driver in about a week of time when they have no understanding of > >>>> programming (Java). The goal should be to get another synth supported, > >>>> not > >>>> to teach a musician writing software. > >>>> > >>>> Would it be possible to generate (parts of) the required code by > asking > >>>> questions with answers that the musician can find in his synthesizer's > >>>> manual? > >>>> > >>>> Maybe that's asking too much to get started ... > >>>> > >>>> If any advanced Java users would be so kind to join the JSynthLib > >>>> mailing > >>>> list and/or have a look at the current state of the code and > >>>> programmer's > >>>> guide that are available at this moment, that would be very nice. > >>>> Of course, when you have free time and are interested, as it is an > >>>> open-source project. > >>>> > >>>> Thanks in advance. > >>>> Peter > >>>> ------------------------------ > >>>> > >>>> If nobody replies here, I'll post this tomorrow > >>>> Cheers > >>>> P > >>>> > >>>> > ------------------------------------------------------------------------------ > >>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > >>>> 30-Day > >>>> trial. Simplify your report design, integration and deployment - and > >>>> focus on > >>>> what you do best, core application coding. Discover what's new with > >>>> Crystal Reports now. http://p.sf.net/sfu/bobj-july > >>>> _______________________________________________ > >>>> Jsynthlib-devel mailing list > >>>> Jsy...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > >>>> > >>> > >>> > >> > > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Jsynthlib-devel mailing list > Jsy...@li... > https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel > |
From: Rib R. <ri...@us...> - 2009-08-25 16:25:49
|
On Tue, Aug 25, 2009 at 9:19 AM, Rib Rdb <ri...@gm...> wrote: > On Tue, Aug 25, 2009 at 9:05 AM, Peter Geirnaert < > pet...@gm...> wrote: > >> Hi Rib Rdb >> >> On Tue, Aug 25, 2009 at 3:31 PM, Rib Rdb <ri...@gm...> wrote: >> >>> Well, this is basically what the XML driver was designed for. You create >>> the xml describing your sysex, and you should have basic librarian >>> functionality. >> >> Can I read the source of the XMLDriver and find out that way how I have to >> describe the sysex in XML? Or should I read another file? There must be some >> naming convention at least I guess. >> > > You can take a look at > org/jsynthlib/jsynthlib/synthdrivers/yamaha/motif/YamahaMotif.xml > > The motif is an incredibly complicated synth, so it doesn't make for a very > good example. It's so complicated I never was able to finish the driver for > it. > > >> Then to create an editor you use EditorBuilder, where you just drag and >>> drop the pieces to create your UI. >> >> can I use EditorBuilder by running java core/EditorBuilder and/or where do >> I drag pieces from? >> > > Looks like that should be java org.jsynthlib.editorbuilder.EditorBuilder > You would load the xml driver, then it should give you a list of all the > parameters you defined, and you can drag them to arrange them how you want. > > >> >> >> >>> Unfortunately there's no documentation, and it's probably missing a few >>> pieces since no one's used it to write a finished editor. If anyone's >>> willing to play with it and document the process as they go along, I'd be >>> happy to help you with any issues and possibly fix any missing pieces. >> >> Yes, I am more than willing to play with it. My first missing piece is >> "how to get started" >> I've already described each piece of sysex that my Roland SPD-11 >> sends/receives on >> spd-11.wikispaces.com. The missing documentation plays a role indeed. >> >> >>> >>> >>> On Tue, Aug 25, 2009 at 5:12 AM, Peter Geirnaert < >>> pet...@gm...> wrote: >>> >>>> Hi again :) >>>> >>>> I was typing this message in the general advanced >>>> java<http://www.java-forums.org/advanced-java/>sub-forum of >>>> >>>> java-forums >>>> but before I hit send, I thought, maybe some native English speaking >>>> JSynthLib fan >>>> might know better ways to sell this job ... >>>> >>>> my post titled: Supporting newbies in an Open Source project >>>> --------------------------- >>>> Hi, >>>> This is a call to advanced java users, for help in a project to help >>>> musicians write Java code. >>>> The question is how to help them write an advanced MIDI System Exclusive >>>> driver for their synthesizer, >>>> and so build a universal synthesizer preset editor/librarian that >>>> eventually >>>> supports every existing synthesizer. >>>> >>>> The base for this software has already been built and is released at >>>> SourceForge with the name JSynthLib. >>>> >>>> The project to help newbies is a wiki that should help musicians to >>>> write a >>>> driver in about a week of time when they have no understanding of >>>> programming (Java). The goal should be to get another synth supported, >>>> not >>>> to teach a musician writing software. >>>> >>>> Would it be possible to generate (parts of) the required code by asking >>>> questions with answers that the musician can find in his synthesizer's >>>> manual? >>>> >>>> Maybe that's asking too much to get started ... >>>> >>>> If any advanced Java users would be so kind to join the JSynthLib >>>> mailing >>>> list and/or have a look at the current state of the code and >>>> programmer's >>>> guide that are available at this moment, that would be very nice. >>>> Of course, when you have free time and are interested, as it is an >>>> open-source project. >>>> >>>> Thanks in advance. >>>> Peter >>>> ------------------------------ >>>> >>>> If nobody replies here, I'll post this tomorrow >>>> Cheers >>>> P >>>> >>>> ------------------------------------------------------------------------------ >>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >>>> 30-Day >>>> trial. Simplify your report design, integration and deployment - and >>>> focus on >>>> what you do best, core application coding. Discover what's new with >>>> Crystal Reports now. http://p.sf.net/sfu/bobj-july >>>> _______________________________________________ >>>> Jsynthlib-devel mailing list >>>> Jsy...@li... >>>> https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel >>>> >>> >>> >> > |
From: Michael H. <kor...@ya...> - 2009-08-25 15:56:43
|
Pete, I had a look at the Roland TD6 driver and I have been able to get basic patch names working in JSynthLib. THANKS FOR THE TIP! So to explain, JSynthLib assumes that somewhere inside of a single patch sysex message there will be the text for the patch name. So the convention of JSynthLib was that you would set up an offset pointer and patch name size that would point at the start of the string in the sysex data array. Well, we all know that there are many synth's that never supported patch names at all so what I did was extended the size of the sysex array to be 262 bytes (for the actual sysex patch dump data) + 20 bytes for the patch name (character string). But then, the patch send routines have to send just the first 262 bytes. The 20 bytes for the patch name are just text stored for JSynthLib patch names. And also, the create new patch routine needed to include defining the patch sysex as being the larger size (282 bytes) and define some text in the last 20 bytes as shown below. public Patch createNewPatch() { // define sysex byte array with 262 bytes for sysex patch dump data message and 20 bytes for JSynthLib stored patch name text byte [] sysex = new byte[262+20]; // set up sysex patch dump data with SOX,manufacturer,device, patch and EOX values sysex[0]=(byte)0xF0; sysex[1]=(byte)0x42; sysex[2]=(byte)0x21; sysex[3]=(byte)0x06; sysex[261]=(byte)0xF7; // create the patch object Patch p = new Patch(sysex, this); // set the patch name for a new patch setPatchName(p,"**** New Patch ****"); calculateChecksum(p); return p; } Also, I noticed that you were absolutely correct about a "single" patch being able to hold more than one sysex message at a time. But of course, you have to define the sysex array size in the patch object as being large enough to hold all of the messages. So, I could extend the size of the sysex data array to allow storing the bank change acknowledgment message along with the actual single patch dump message. But that is an awfully bad way to write a single driver because the acknowledgment message is of no use to a patch whatsoever and would just be wasting memory. So, I am still looking for a way to rewrite the patch receiver code so that it can ignore such unwanted received data. It would be nice if a developer on JSynthLib could provide a hint. In the meantime, I'll go back to trudging through other drivers to see if someone else has already done something similar. The snippet below is my tweaked version of the generic single editor that shows the captured sysex message. In my version, the the sysex message is displayed and the additional 20 bytes are printed out as text underneath showing that they are being used by JSynthLib to provide a local patch name. public KorgHAWK800SingleEditor(Patch p) { this(); SysexMessage[] messages = p.getMessages(); for(int i=0; i<messages.length; i++) { append("Message " + i + ":\n"); appendBytes(messages[i].getMessage()); } // now display the patch name below the sysex message by printing bytes from 262 to 282 as a string append("Patch name: " + new String(((Patch)p).sysex, 262, 20) ); } Message 0: 0000 - f0 42 21 06 00 00 00 00 00 00 00 00 00 00 00 00 - .B!............. 0010 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0030 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0040 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00a0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00b0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00c0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00d0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00e0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00f0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 0100 - 00 00 00 00 00 f7 - ...... Patch name: **** New Patch **** ________________________________ From: Peter Geirnaert <pet...@gm...> To: Michael Hawkins <kor...@ya...> Cc: JSynthLib Developers <Jsy...@li...> Sent: Tuesday, August 25, 2009 5:29:41 AM Subject: Re: [Jsynthlib-devel] Got something going but... Hmm, I forgot to "reply all", so Mike, sorry if you get this twice ;-) Anyway, I added some more thoughts .. On Tue, Aug 25, 2009 at 2:00 AM, Michael Hawkins <kor...@ya...> wrote: Hi JSynthLib fans, > >>Well, after hours (3 to be exact) of careful troubleshooting and tinkering, I was able to pull in a patch from my Korg Poly-800. > >>But as with most things in life, I now have more questions than I started with. I am hoping that someone who has more experience with JSynthLib than me can help me out. > >>To get the patch "get" and "paste" to work required that a) I set sysexID = "F0422106*"; this is the header for a patch dump coming from the Poly-800. and b) that I comment out sending a bank change in requestPatchDump. > >>The Poly-800 sends an acknowledgement sysex message after it receives a bank change. So the "Get" code seems to have choked on the 7 bytes that it receives just prior to receiving the patch sysex message itself. > >>So, I could just rewrite the sysex implementation on the Poly-800 so that it doesn't send an acknowledgment sysex message but that seems to be a bit of a cop out and especially so if there is a way that I could rewrite the requestPatchDump so that it would intercept that ack. message and ignore it instead of choking on it? Maybe you should to make the KorgHAWK800SingleDriver extends BankDriver, like I did with my SPD11PatchDriver , and use a 'bankChangeDriver' and 'K800SingleDriver', like I used a SPD11PadDriver and SPD11SettingsDriver. I'm not really understanding the difference between a singleDriver, bankDriver, converter I'm reading the programmer's guide again, and I'm wondering if a Single Patch really is a set of sysex messages like described there. I first thought a Single Patch would hold just one Single SysEx Message. Because a single patch of my drumsynth is composed of 32 sysexmessages describing each drumpad + 1 sysexmessage describing the effects and pedal settings. In your case a patch is 1 bank ack sysexmessage + a 262 bytes patch sysexmessage > >>Now, I don't want to be too pushy here because I like JSynthLib and I like the idea of an open source patch editor but hopefully someone on this list can answer a question or two because it has taken me hours to get this far and I have many more questions that need answering. Four hands do three times more work than two hands, I guess it's good to ask questions to many heads too, instead of keeping the questions for yourself. > >>Here is another question, the Poly-800 does not support patch names in its sysex implementation nor programming but does that stop me from using patch names in JSynthLib itself? Is it possible to save patch names outside of the sysex message but inside the patch when stored in JSynthLib? My drum kits are named numbers 1~64, and I'd like to give 'em names too, so I actually have the same question. I think maybe we should take a look at how e.g. the TD-6 driver stores settings for padInfo in the prefs file, it keeps info about if a pad is active or not, look at how it's done in RolandTD6Device (line 56 & 75). The same trick may work to keep patch names in a preferences.node("Name(s)") > >>Anyway, in advance, I would like to thank anyone that might provide me with some assistance. > >>If I don't hear anything from anybody, I may have to consider an alternative to JSynthLib because the learning curve might be just too steep while going at this completely alone. > >>Here's my singledriver below: > >>/* >> * @version $Id: KorgHAWK800SingleDriver.java 111 2009-08-20 04:05:40Z hawkins $ >> */ >>package synthdrivers.KorgHAWK800; > >>import core.Driver; >>import core.ErrorMsg; >>import core.JSLFrame; >>import core.Patch; >>import core.SysexHandler; > >>public class KorgHAWK800SingleDriver extends Driver >>{ >> private int curBank = 0, curPatch = 0; You don't use these variables anywhere ? > >> public KorgHAWK800SingleDriver() { >> super("Single", "Michael Hawkins"); >> sysexID = "F0422106*"; >> sysexRequestDump=new SysexHandler("F0 42 21 07 *patchNum* F7"); > >> patchSize=262; This is why it chokes on the first returned ack message >> deviceIDoffset=-1; > >> bankNumbers = new String[] { >> "0-Bank1", "1-Bank2","2-Bank3", "3-Bank4" >> }; >> // patch numbers use octal representation with no zeroes (11-88) >> patchNumbers=new String[] {"11","12","13","14","15","16","17","18", >> "21","22","23","24","25","26","27","28", >> "31","32","33","34","35","36","37","38", >> "41","42","43","44","45","46","47","48", >> "51","52","53","54","55","56","57","58", >> "61","62","63","64","65","66","67","68", >> "71","72","73","74","75","76","77","78", >> "81","82","83","84","85","86","87","88"}; >> } > >> public void setBankNum(int bankNum) >> { >> try { >> send(new byte[] { >> (byte)0xF0,(byte)0x42,(byte)0x21,(byte)0x0E, >> (byte)bankNum,(byte)0xF7 >> }); >> } catch (Exception e) {} >> } > >> public void requestPatchDump(int bankNum, int patchNum) { Maybe here add patchSize = SIZE_OF_ACK; //the number of bytes that comprise the returned ack message patchNameSize = 0; >> //setBankNum(bankNum); uncomment >> try {Thread.sleep(250); } catch (Exception e){} and now set patchSize = SIZE_OF_PATCH; //the number of bytes that comprise the returned patch message >> byte sysex[] = { >> (byte)0xF0, (byte) 0x42, (byte) 0x21, (byte) 0x07, (byte)patchNum, (byte) 0xF7 >> }; >> send(sysex); >> } > >> public void storePatch (Patch p, int bankNum,int patchNum) >> { >> setBankNum(bankNum); >> try {Thread.sleep(250); } catch (Exception e){} >> //patchNum=patchNum&0x3F; >> ((Patch)p).sysex[4]=(byte)patchNum; >> sendPatchWorker(p); >> setPatchNum(patchNum); >> } > >> public void sendPatch (Patch p) >> { >> byte [] newsysex = new byte[262]; >> System.arraycopy(((Patch)p).sysex,0,newsysex,0,262); >> newsysex[4] = (byte)(0x40); >> try { >> send(newsysex); >> }catch (Exception e) {ErrorMsg.reportStatus(e);} >> } > >> public Patch createNewPatch() >> { >> byte [] sysex = new byte[262]; >> sysex[0]=(byte)0xF0; sysex[1]=(byte)0x42; sysex[2]=(byte)0x21; >> sysex[3]=(byte)0x06; sysex[261]=(byte)0xF7; >> Patch p = new Patch(sysex, this); >> //setPatchName(p,"NewPatch"); >> calculateChecksum(p); >> return p; >> } > >>protected void calculateChecksum(Patch p,int start,int end,int ofs) >> { >> // no checksum >> } > >>//public JSLFrame editPatch(Patch p) { >>// return new KorgHAWK800SingleEditor((Patch)p); >>protected JSLFrame editPatch(Patch p) { >> return (new synthdrivers.Generic.HexDumpEditorFrame(p)); >> } > >>} > It would be easier to help if you added more //comments to explain what's happening and why. |
From: Peter G. <pet...@gm...> - 2009-08-25 12:23:38
|
Hi again :) I was typing this message in the general advanced java<http://www.java-forums.org/advanced-java/>sub-forum of java-forums but before I hit send, I thought, maybe some native English speaking JSynthLib fan might know better ways to sell this job ... my post titled: Supporting newbies in an Open Source project --------------------------- Hi, This is a call to advanced java users, for help in a project to help musicians write Java code. The question is how to help them write an advanced MIDI System Exclusive driver for their synthesizer, and so build a universal synthesizer preset editor/librarian that eventually supports every existing synthesizer. The base for this software has already been built and is released at SourceForge with the name JSynthLib. The project to help newbies is a wiki that should help musicians to write a driver in about a week of time when they have no understanding of programming (Java). The goal should be to get another synth supported, not to teach a musician writing software. Would it be possible to generate (parts of) the required code by asking questions with answers that the musician can find in his synthesizer's manual? Maybe that's asking too much to get started ... If any advanced Java users would be so kind to join the JSynthLib mailing list and/or have a look at the current state of the code and programmer's guide that are available at this moment, that would be very nice. Of course, when you have free time and are interested, as it is an open-source project. Thanks in advance. Peter ------------------------------ If nobody replies here, I'll post this tomorrow Cheers P |
From: Michael H. <kor...@ya...> - 2009-08-25 11:54:56
|
Hi Daniel, 1) actually the three hours of tinkering was after the first 4 hours learning Eclipse another 4 hours fixing a broken Java installation and then another 12 hours or more getting JSynthLib working, reading the documentation and putting a basic device driver together. But I know what you mean and understand how much work is involved in programming. Nevertheless, I am sure you can understand my frustration when sending emails to a list that seems to be on a permanent European vacation! 2) I like the idea of JSynthLib for the purpose of a patch editor and librarian for my upgrade kit for the Poly-800 (www.hawk800.com). And since last night I was actually able to get, copy, paste and send to patches, I am still leaning toward using JSynthLib. 3) Those Europeans have a great life don't they. 4) No, the problem now is right inside JSynthLib. I worked out the issues with my classpath, JDK/SDK, launching Eclipse, etc. Now the problem lies directly with JSynthLib code itself. But I appreciate hearing your voice, even though it appears that you can't help me because you dumped JSynthLib in favor of going it alone! Nice product by the way. Cheers, Mike. |
From: Peter G. <pet...@gm...> - 2009-08-25 11:27:33
|
Hi again :) Maybe this is information I should also give ... When I start JSynthLib, it creates two empty files in /home/peter/.java/.userPrefs/ : *.user.lock.peter* and *.userRootModFile.peter* Questions I have here: 1. Why are they empty? 2. What are they for? 3. Are they created by JSynthLib, or by the Java JRE? Thanks for any enlightenment ;) Peter On Tue, Aug 25, 2009 at 8:37 AM, Peter Geirnaert <pet...@gm...>wrote: > Hi, > For some reason, i can't open the JSynthLib "preferences" window on my > Debian squeeze/sid installation. It happens with the JSL-0.20.0 version and > the JSL-0.21.0-alpha version, though the 0.20.0 version gives me an error > dialog "Unable to load user preferences. Defaults loaded instead." and the > 0.21.0-alpha version doesn't do anything. > > Also , I can't just copy a line of java code from inside Netbeans into my > mail or wiki that I'm writing with firefox, it makes firefox crash > immediately. I first have to paste the code in a texteditor, then copy it > again, and then paste it in firefox. (This makes me think it's Debian or > Java problem). But because it's also troubles with core.PatchEdit.java, I > thought I'd better post it here too. > > peter@avlinux:~$ java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.5) (6b16-4) > OpenJDK Server VM (build 14.0-b15, mixed mode) > > On ubuntustudio, it works: > > peter@ubustu:~$ java -version > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11) > OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) > > The debug-preferences-window.txt below is saved from running JSynthLib > inside Netbeans and describes these exceptions thrown: > java.lang.ArrayIndexOutOfBoundsException: 3 > Exception in thread "main" java.lang.NullPointerException > Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException > > Any ideas of where/what to look for, or hints about some debugging > techniques are most welcome. > > Thanks in advance. > Peter > * > debug-preferences-window.txt* > init: > deps-jar: > Compiling 5 source files to > /home/peter/NetBeansProjects/JSynthLib/build/classes > Copying 10 files to /home/peter/NetBeansProjects/JSynthLib/build/classes > compile: > java.lang.ArrayIndexOutOfBoundsException: 3 > at core.MidiUtil.setSysexInputQueue(MidiUtil.java:367) > at core.Device.setInPort(Device.java:326) > at core.Device.setup(Device.java:117) > at core.AppConfig.addDevice(AppConfig.java:351) > at core.AppConfig.loadPrefs(AppConfig.java:49) > at core.PatchEdit.<init>(PatchEdit.java:40) > at JSynthLib.main(JSynthLib.java:33) > Exception in thread "main" java.lang.NullPointerException > at > core.JSLDesktop$JSLFakeDesktop.getSelectedWindow(JSLDesktop.java:386) > at core.JSLDesktop.getSelectedWindow(JSLDesktop.java:147) > at core.PatchEdit.getInstance(PatchEdit.java:125) > at core.ErrorMsg.reportError(ErrorMsg.java:59) > at core.PatchEdit.<init>(PatchEdit.java:74) > at JSynthLib.main(JSynthLib.java:33) > Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException > at core.PatchEdit.showPrefsDialog(PatchEdit.java:114) > at core.Actions$PrefsAction.actionPerformed(Actions.java:1340) > at > javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) > at > javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) > at > javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404) > at > javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) > at javax.swing.AbstractButton.doClick(AbstractButton.java:374) > at > javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1688) > at > javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1732) > at java.awt.Component.processMouseEvent(Component.java:6108) > at javax.swing.JComponent.processMouseEvent(JComponent.java:3276) > at java.awt.Component.processEvent(Component.java:5873) > at java.awt.Container.processEvent(Container.java:2105) > at java.awt.Component.dispatchEventImpl(Component.java:4469) > at java.awt.Container.dispatchEventImpl(Container.java:2163) > at java.awt.Component.dispatchEvent(Component.java:4295) > at > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) > at > java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125) > at > java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) > at java.awt.Container.dispatchEventImpl(Container.java:2149) > at java.awt.Window.dispatchEventImpl(Window.java:2478) > at java.awt.Component.dispatchEvent(Component.java:4295) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:604) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) > |
From: Peter G. <pet...@gm...> - 2009-08-25 09:30:17
|
Hmm, I forgot to "reply all", so Mike, sorry if you get this twice ;-) Anyway, I added some more thoughts .. On Tue, Aug 25, 2009 at 2:00 AM, Michael Hawkins <kor...@ya...>wrote: > Hi JSynthLib fans, > > Well, after hours (3 to be exact) of careful troubleshooting and tinkering, > I was able to pull in a patch from my Korg Poly-800. > > But as with most things in life, I now have more questions than I started > with. I am hoping that someone who has more experience with JSynthLib than > me can help me out. > > To get the patch "get" and "paste" to work required that a) I set sysexID = > "F0422106*"; this is the header for a patch dump coming from the Poly-800. > and b) that I comment out sending a bank change in requestPatchDump. > > The Poly-800 sends an acknowledgement sysex message after it receives a > bank change. So the "Get" code seems to have choked on the 7 bytes that it > receives just prior to receiving the patch sysex message itself. > > So, I could just rewrite the sysex implementation on the Poly-800 so that > it doesn't send an acknowledgment sysex message but that seems to be a bit > of a cop out and especially so if there is a way that I could rewrite the > requestPatchDump so that it would intercept that ack. message and ignore it > instead of choking on it? Maybe you should to make the KorgHAWK800SingleDriver extends *BankDriver*, like I did with my SPD11PatchDriver<http://spd-11.wikispaces.com/SPD11PatchDriver>, and use a 'bankChangeDriver' and 'K800SingleDriver', like I used a SPD11PadDriver and SPD11SettingsDriver. I'm not really understanding the difference between a singleDriver, bankDriver, converter I'm reading the programmer's guide again, and I'm wondering if a Single Patch really is a *set of* sysex messages like described there<http://jsynthlib.svn.sourceforge.net/viewvc/jsynthlib/trunk/JSynthLib/doc/programming.html#areas>. I first thought a Single Patch would hold just one Single SysEx Message. Because a single patch of my drumsynth is composed of 32 sysexmessages describing each drumpad + 1 sysexmessage describing the effects and pedal settings. In your case a patch is 1 bank ack sysexmessage + a 262 bytes patch sysexmessage > > > Now, I don't want to be too pushy here because I like JSynthLib and I like > the idea of an open source patch editor but hopefully someone on this list > can answer a question or two because it has taken me hours to get this far > and I have many more questions that need answering. Four hands do three times more work than two hands, I guess it's good to ask questions to many heads too, instead of keeping the questions for yourself. > > > Here is another question, the Poly-800 does not support patch names in its > sysex implementation nor programming but does that stop me from using patch > names in JSynthLib itself? Is it possible to save patch names outside of the > sysex message but inside the patch when stored in JSynthLib? My drum kits are named numbers 1~64, and I'd like to give 'em names too, so I actually have the same question. I think maybe we should take a look at how e.g. the TD-6 driver stores settings for padInfo<http://jsynthlib.svn.sourceforge.net/viewvc/jsynthlib/trunk/JSynthLib/synthdrivers/RolandTD6/PadInfo.java?view=markup>in the prefs file, it keeps info about if a pad is active or not, look at how it's done in RolandTD6Device<http://jsynthlib.svn.sourceforge.net/viewvc/jsynthlib/trunk/JSynthLib/synthdrivers/RolandTD6/RolandTD6Device.java?revision=646&view=markup>(line 56 & 75). The same trick may work to keep patch names in a preferences.node("Name(s)") > > > Anyway, in advance, I would like to thank anyone that might provide me with > some assistance. > > If I don't hear anything from anybody, I may have to consider an > alternative to JSynthLib because the learning curve might be just too steep > while going at this completely alone. > > Here's my singledriver below: > > /* > * @version $Id: KorgHAWK800SingleDriver.java 111 2009-08-20 04:05:40Z > hawkins $ > */ > package synthdrivers.KorgHAWK800; > > import core.Driver; > import core.ErrorMsg; > import core.JSLFrame; > import core.Patch; > import core.SysexHandler; > > public class KorgHAWK800SingleDriver extends Driver > { > private int curBank = 0, curPatch = 0; You don't use these variables anywhere ? > > public KorgHAWK800SingleDriver() { > super("Single", "Michael Hawkins"); > sysexID = "F0422106*"; > sysexRequestDump=new SysexHandler("F0 42 21 07 *patchNum* F7"); > > patchSize=262; This is why it chokes on the first returned ack message > > deviceIDoffset=-1; > > bankNumbers = new String[] { > "0-Bank1", "1-Bank2","2-Bank3", "3-Bank4" > }; > // patch numbers use octal representation with no zeroes (11-88) > patchNumbers=new String[] {"11","12","13","14","15","16","17","18", > "21","22","23","24","25","26","27","28", > "31","32","33","34","35","36","37","38", > "41","42","43","44","45","46","47","48", > "51","52","53","54","55","56","57","58", > "61","62","63","64","65","66","67","68", > "71","72","73","74","75","76","77","78", > "81","82","83","84","85","86","87","88"}; > } > > public void setBankNum(int bankNum) > { > try { > send(new byte[] { > (byte)0xF0,(byte)0x42,(byte)0x21,(byte)0x0E, > (byte)bankNum,(byte)0xF7 > }); > } catch (Exception e) {} > } > > public void requestPatchDump(int bankNum, int patchNum) { Maybe here add patchSize = SIZE_OF_ACK; //the number of bytes that comprise the returned ack message patchNameSize = 0; > > //setBankNum(bankNum); uncomment > > try {Thread.sleep(250); } catch (Exception e){} and now set patchSize = SIZE_OF_PATCH; //the number of bytes that comprise the returned patch message > > byte sysex[] = { > (byte)0xF0, (byte) 0x42, (byte) 0x21, (byte) 0x07, > (byte)patchNum, (byte) 0xF7 > }; > send(sysex); > } > > public void storePatch (Patch p, int bankNum,int patchNum) > { > setBankNum(bankNum); > try {Thread.sleep(250); } catch (Exception e){} > //patchNum=patchNum&0x3F; > ((Patch)p).sysex[4]=(byte)patchNum; > sendPatchWorker(p); > setPatchNum(patchNum); > } > > public void sendPatch (Patch p) > { > byte [] newsysex = new byte[262]; > System.arraycopy(((Patch)p).sysex,0,newsysex,0,262); > newsysex[4] = (byte)(0x40); > try { > send(newsysex); > }catch (Exception e) {ErrorMsg.reportStatus(e);} > } > > public Patch createNewPatch() > { > byte [] sysex = new byte[262]; > sysex[0]=(byte)0xF0; sysex[1]=(byte)0x42; sysex[2]=(byte)0x21; > sysex[3]=(byte)0x06; sysex[261]=(byte)0xF7; > Patch p = new Patch(sysex, this); > //setPatchName(p,"NewPatch"); > calculateChecksum(p); > return p; > } > > protected void calculateChecksum(Patch p,int start,int end,int ofs) > { > // no checksum > } > > //public JSLFrame editPatch(Patch p) { > // return new KorgHAWK800SingleEditor((Patch)p); > protected JSLFrame editPatch(Patch p) { > return (new synthdrivers.Generic.HexDumpEditorFrame(p)); > } > > } > It would be easier to help if you added more //comments to explain what's happening and why. |
From: Peter G. <pet...@gm...> - 2009-08-25 08:53:50
|
Hi, On Tue, Aug 25, 2009 at 7:11 AM, Daniel Rosenstark wrote: > Hi Michael, > > 1) three hours of tinkering is either not mentioned or called, "a bit of > tinkering" when you develop software. Plan to lose many more. IMHO That's where the introduction in the programmer's guide is pretty misleading: III.a.1. How hard is it to add support for a new synthesizer to JSynthLib? The hardest part is simply becoming familiar with how JSynthLib works and how it's laid out internally. Spend some time looking through the driver code for other synthesizers and you'll basically pick it up by osmosis. Once your familiar with what you have to do, actually doing it shouldn't take too long. I've gotten librarian (not editing) support for synthesizers hacked up in under two hours. It depends of course, on the complexity of the synthesizer and the quality of the sysex specification. Adding editing support can be a little more time consuming, but is probably even more fun than writing librarian support. I've spent anywhere between 3 or 4 hours (working on the DR660 Editor) up to 5 days (working on the Matrix 1000 editor). If you run into any trouble, you can email JSynthLib mailing list<jsy...@li...>for help. If we're writing this to an audience of musicians, better add that knowing how to program in general and in Java is required. Then it's possible to 'pick it up by osmosis'. Else, we should provide a much more detailed guide. > 2) I did give up on JSynthLib (resulting in > www.confusionists.com/handsonic), > but there was a LOT of help on the list. I ditched it because what I needed > to do was not really a librarian. There WAS a lot of help, but the information is hard to find now. > > 3) My guess: it's August, they're Europeans, and so you have to wait until > September when they are actually working. That's true, in September, the rainy days come again. (At least in Belgium and most countries up north, yes, Belgium is a country, Brussels is a city, where it's raining today ;-) > 4) Sounds like your problems are outside of JSynthlib anyway, but I'm not > sure. Use JSynthlib if you are going to be making that kind of > functionality > anyway. I guess 'your problems' refers to Mikes previous mails, and troubles with the Java installation ? I'm having similar problems ... see my previous mail<http://www.mail-archive.com/jsy...@li.../msg00140.html> Would it be better if we go to a java-forum to ask for help with these problems ? Cheers, Peter |
From: Peter G. <pet...@gm...> - 2009-08-25 08:37:42
|
Hi, For some reason, i can't open the JSynthLib "preferences" window on my Debian squeeze/sid installation. It happens with the JSL-0.20.0 version and the JSL-0.21.0-alpha version, though the 0.20.0 version gives me an error dialog "Unable to load user preferences. Defaults loaded instead." and the 0.21.0-alpha version doesn't do anything. Also , I can't just copy a line of java code from inside Netbeans into my mail or wiki that I'm writing with firefox, it makes firefox crash immediately. I first have to paste the code in a texteditor, then copy it again, and then paste it in firefox. (This makes me think it's Debian or Java problem). But because it's also troubles with core.PatchEdit.java, I thought I'd better post it here too. peter@avlinux:~$ java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (6b16-4) OpenJDK Server VM (build 14.0-b15, mixed mode) On ubuntustudio, it works: peter@ubustu:~$ java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu11) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) The debug-preferences-window.txt below is saved from running JSynthLib inside Netbeans and describes these exceptions thrown: java.lang.ArrayIndexOutOfBoundsException: 3 Exception in thread "main" java.lang.NullPointerException Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Any ideas of where/what to look for, or hints about some debugging techniques are most welcome. Thanks in advance. Peter * debug-preferences-window.txt* init: deps-jar: Compiling 5 source files to /home/peter/NetBeansProjects/JSynthLib/build/classes Copying 10 files to /home/peter/NetBeansProjects/JSynthLib/build/classes compile: java.lang.ArrayIndexOutOfBoundsException: 3 at core.MidiUtil.setSysexInputQueue(MidiUtil.java:367) at core.Device.setInPort(Device.java:326) at core.Device.setup(Device.java:117) at core.AppConfig.addDevice(AppConfig.java:351) at core.AppConfig.loadPrefs(AppConfig.java:49) at core.PatchEdit.<init>(PatchEdit.java:40) at JSynthLib.main(JSynthLib.java:33) Exception in thread "main" java.lang.NullPointerException at core.JSLDesktop$JSLFakeDesktop.getSelectedWindow(JSLDesktop.java:386) at core.JSLDesktop.getSelectedWindow(JSLDesktop.java:147) at core.PatchEdit.getInstance(PatchEdit.java:125) at core.ErrorMsg.reportError(ErrorMsg.java:59) at core.PatchEdit.<init>(PatchEdit.java:74) at JSynthLib.main(JSynthLib.java:33) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at core.PatchEdit.showPrefsDialog(PatchEdit.java:114) at core.Actions$PrefsAction.actionPerformed(Actions.java:1340) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:374) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1688) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1732) at java.awt.Component.processMouseEvent(Component.java:6108) at javax.swing.JComponent.processMouseEvent(JComponent.java:3276) at java.awt.Component.processEvent(Component.java:5873) at java.awt.Container.processEvent(Container.java:2105) at java.awt.Component.dispatchEventImpl(Component.java:4469) at java.awt.Container.dispatchEventImpl(Container.java:2163) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) at java.awt.Container.dispatchEventImpl(Container.java:2149) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.EventQueue.dispatchEvent(EventQueue.java:604) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) |