Page 2 of 4

Re: Fantasia Feature Request

Posted: Wed Sep 10, 2008 10:13 am
by cuse
grishata wrote:And one new LSCP command for playing notes. Something like:

SEND CHANNEL MIDI_DATA <msg_type> <channel_id> <arg1> <arg2> ... <argn>

where for now msg_type would be NOTE_ON or NOTE_OFF
So:
SEND CHANNEL MIDI_DATA NOTE_ON <channel_id> <note> <velocity>
SEND CHANNEL MIDI_DATA NOTE_OFF <channel_id> <note> <velocity>

Remarks?
For a virtual one finger keyboard that's sufficient. So that's OK with me. As long as nobody comes to the idea to bind a sequencer to LS via LSCP. Because LSCP was never designed for realtime tasks.

Re: Fantasia Feature Request

Posted: Wed Sep 10, 2008 10:26 am
by cuse
Grigor, you know the way to Rome, right? You can simply use the channelMidiListeners member of the LSCP server to access the respective VirtualMidiDevice object to send the MIDI data to the respective sampler channel.

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 8:01 pm
by grishata
ccherrett wrote:1. Built in keyboard:
Implemented :)
A lot of things to polish and add, but the basic functions are there: playing notes, see notes sent to the respective sampler channel and of course key bindings and keyswitch bindings.
To connect the MIDI keyboard to sampler channel, just click on the respective sampler channel.
To show/hide the MIDI keyboard, choose View/MIDI keyboard. To set the key range of the piano roll, right-click on the piano roll and choose Preferences.

Note that you need to get and recompile the latest cvs versions of linuxsampler, jlscp and jsampler.

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 8:53 pm
by dahnielson
I've built jlscp from CVS and downloaded newer versions of substance.jar, substance-swingx.jar and swingx.jar (found in swingx-0.9.3.zip and renamed it from swingx-0.9.3.jar to swingx.jar) and put them all in lib/required/ but I'm getting errors while building Fantasia:

Code: Select all

Buildfile: build.xml

clean-fantasia:

build-manifest:

build-fantasia:
    [unjar] Expanding: /home/anders/builds/jsampler/lib/required/jlscp.jar into /home/anders/builds/jsampler/dist/build
    [unjar] Expanding: /home/anders/builds/jsampler/lib/required/juife.jar into /home/anders/builds/jsampler/dist/build
    [unjar] Expanding: /home/anders/builds/jsampler/lib/required/substance-swingx.jar into /home/anders/builds/jsampler/dist/build
    [unjar] Expanding: /home/anders/builds/jsampler/lib/required/substance.jar into /home/anders/builds/jsampler/dist/build
    [unjar] Expanding: /home/anders/builds/jsampler/lib/required/swingx.jar into /home/anders/builds/jsampler/dist/build
    [javac] Compiling 152 source files to /home/anders/builds/jsampler/dist/build
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:34: package org.jvnet.substance.api.renderers does not exist
    [javac] import org.jvnet.substance.api.renderers.SubstanceDefaultTreeCellRenderer;
    [javac]                                         ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/PixmapPane.java:31: warning: sun.swing.plaf.synth.Paint9Painter is Sun proprietary API and may be removed in a future release
    [javac] import sun.swing.plaf.synth.Paint9Painter;
    [javac]                            ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/PixmapPane.java:42: warning: sun.swing.plaf.synth.Paint9Painter is Sun proprietary API and may be removed in a future release
    [javac]     private static Paint9Painter paint9Painter = new Paint9Painter(1);
    [javac]                    ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/DevicesPane.java:37: package org.jvnet.substance.api.SubstanceConstants does not exist
    [javac] import org.jvnet.substance.api.SubstanceConstants.FocusKind;
    [javac]                                                  ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/DevicesPane.java:38: package org.jvnet.substance.shaper does not exist
    [javac] import org.jvnet.substance.shaper.ClassicButtonShaper;
    [javac]                                  ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:52: cannot find symbol
    [javac] symbol  : class SubstanceDefaultTreeCellRenderer
    [javac] location: class org.jsampler.view.fantasia.FantasiaInstrumentsDbTree
    [javac]     private class CellRenderer extends SubstanceDefaultTreeCellRenderer {
    [javac]                                        ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaListCellRenderer.java:33: package org.jvnet.substance.api.renderers does not exist
    [javac] import org.jvnet.substance.api.renderers.SubstanceDefaultListCellRenderer;
    [javac]                                         ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaListCellRenderer.java:39: cannot find symbol
    [javac] symbol: class SubstanceDefaultListCellRenderer
    [javac] public class FantasiaListCellRenderer extends SubstanceDefaultListCellRenderer {
    [javac]                                               ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/NormalChannelView.java:58: cannot find symbol
    [javac] symbol  : class SubstanceImageCreator
    [javac] location: package org.jvnet.substance.utils
    [javac] import org.jvnet.substance.utils.SubstanceImageCreator;
    [javac]                                 ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/SmallChannelView.java:51: cannot find symbol
    [javac] symbol  : class SubstanceImageCreator
    [javac] location: package org.jvnet.substance.utils
    [javac] import org.jvnet.substance.utils.SubstanceImageCreator;
    [javac]                                 ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ViewConfig.java:38: package org.jvnet.substance.api does not exist
    [javac] import org.jvnet.substance.api.SubstanceConstants;
    [javac]                               ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:47: setCellRenderer(javax.swing.tree.TreeCellRenderer) in javax.swing.JTree cannot be applied to (org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer)
    [javac]             setCellRenderer(renderer);
    [javac]             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:63: cannot find symbol
    [javac] symbol  : method getTreeCellRendererComponent(javax.swing.JTree,java.lang.Object,boolean,boolean,boolean,int,boolean)
    [javac] location: class org.jsampler.view.std.JSInstrumentsDbTree
    [javac]                     super.getTreeCellRendererComponent (
    [javac]                          ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:68: cannot find symbol
    [javac] symbol  : method setIcon(javax.swing.Icon)
    [javac] location: class org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer
    [javac]                     if(node.getInfo().getName() == "/") setIcon(getView().getRootIcon());
    [javac]                                                         ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:69: cannot find symbol
    [javac] symbol  : method setIcon(javax.swing.Icon)
    [javac] location: class org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer
    [javac]                     else if(leaf) setIcon(getView().getInstrumentIcon());
    [javac]                                   ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:70: cannot find symbol
    [javac] symbol  : method setIcon(javax.swing.Icon)
    [javac] location: class org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer
    [javac]                     else if(expanded) setIcon(getView().getOpenIcon());
    [javac]                                       ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:71: cannot find symbol
    [javac] symbol  : method setIcon(javax.swing.Icon)
    [javac] location: class org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer
    [javac]                     else setIcon(getView().getClosedIcon());
    [javac]                          ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaInstrumentsDbTree.java:77: incompatible types
    [javac] found   : org.jsampler.view.fantasia.FantasiaInstrumentsDbTree.CellRenderer
    [javac] required: java.awt.Component
    [javac]                     return this;
    [javac]                            ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/PixmapPane.java:42: warning: sun.swing.plaf.synth.Paint9Painter is Sun proprietary API and may be removed in a future release
    [javac]     private static Paint9Painter paint9Painter = new Paint9Painter(1);
    [javac]                                                      ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/PixmapPane.java:77: warning: sun.swing.plaf.synth.Paint9Painter is Sun proprietary API and may be removed in a future release
    [javac]                     Paint9Painter.PaintType.PAINT9_STRETCH,
    [javac]                     ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/PixmapPane.java:78: warning: sun.swing.plaf.synth.Paint9Painter is Sun proprietary API and may be removed in a future release
    [javac]                     Paint9Painter.PAINT_ALL
    [javac]                     ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ChannelsPane.java:252: cannot find symbol
    [javac] symbol  : method getAutoUpdate()
    [javac] location: class org.jsampler.view.fantasia.ChannelsPane.ChannelListPane
    [javac]     getAutoUpdate() { return chnList.getAutoUpdate(); }
    [javac]                                     ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ChannelsPane.java:260: cannot find symbol
    [javac] symbol  : method setAutoUpdate(boolean)
    [javac] location: class org.jsampler.view.fantasia.ChannelsPane.ChannelListPane
    [javac]     setAutoUpdate(boolean b) { chnList.setAutoUpdate(b); }
    [javac]                                       ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ChannelsPane.java:267: cannot find symbol
    [javac] symbol  : method updateList()
    [javac] location: class org.jsampler.view.fantasia.ChannelsPane.ChannelListPane
    [javac]     updateChannelListUI() { chnList.updateList(); }
    [javac]                                    ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/DevicesPane.java:83: cannot find symbol
    [javac] symbol  : variable FocusKind
    [javac] location: class org.jsampler.view.fantasia.DevicesPane
    [javac]                     SubstanceLookAndFeel.FOCUS_KIND, FocusKind.NONE
    [javac]                                                      ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/DevicesPane.java:87: cannot find symbol
    [javac] symbol  : class ClassicButtonShaper
    [javac] location: class org.jsampler.view.fantasia.DevicesPane
    [javac]                     SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY, new ClassicButtonShaper()
    [javac]                                                                      ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaComboBox.java:48: setRenderer(javax.swing.ListCellRenderer) in javax.swing.JComboBox cannot be applied to (org.jsampler.view.fantasia.FantasiaListCellRenderer)
    [javac]             setRenderer(new FantasiaListCellRenderer());
    [javac]             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/FantasiaListCellRenderer.java:56: cannot find symbol
    [javac] symbol  : variable super
    [javac] location: class org.jsampler.view.fantasia.FantasiaListCellRenderer
    [javac]             return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    [javac]                    ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/NormalChannelView.java:411: cannot find symbol
    [javac] symbol  : variable SubstanceImageCreator
    [javac] location: class org.jsampler.view.fantasia.NormalChannelView.MuteButton
    [javac]                             SubstanceImageCreator.makeTransparent(this, Res.gfxMuteOff, 0.4)
    [javac]                             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/NormalChannelView.java:445: cannot find symbol
    [javac] symbol  : variable SubstanceImageCreator
    [javac] location: class org.jsampler.view.fantasia.NormalChannelView.SoloButton
    [javac]                             SubstanceImageCreator.makeTransparent(this, Res.gfxSoloOff, 0.4)
    [javac]                             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/SmallChannelView.java:301: cannot find symbol
    [javac] symbol  : variable SubstanceImageCreator
    [javac] location: class org.jsampler.view.fantasia.SmallChannelView.MuteButton
    [javac]                             SubstanceImageCreator.makeTransparent(this, Res.gfxMuteSmallOff, 0.4)
    [javac]                             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/SmallChannelView.java:335: cannot find symbol
    [javac] symbol  : variable SubstanceImageCreator
    [javac] location: class org.jsampler.view.fantasia.SmallChannelView.SoloButton
    [javac]                             SubstanceImageCreator.makeTransparent(this, Res.gfxSoloSmallOff, 0.4)
    [javac]                             ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ViewConfig.java:56: cannot find symbol
    [javac] symbol  : variable WATERMARK_VISIBLE
    [javac] location: class org.jvnet.substance.SubstanceLookAndFeel
    [javac]                     UIManager.put(SubstanceLookAndFeel.WATERMARK_VISIBLE, Boolean.FALSE);
    [javac]                                                       ^
    [javac] /home/anders/builds/jsampler/src/org/jsampler/view/fantasia/ViewConfig.java:60: package SubstanceConstants does not exist
    [javac]                             SubstanceConstants.TabContentPaneBorderKind.SINGLE_FULL
    [javac]                                               ^
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] 29 errors
    [javac] 5 warnings

BUILD FAILED

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 9:47 pm
by ccherrett
I get the same errors as dahnielson.

Wow! I can't wait to try this out :)

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 10:36 pm
by grishata
Did you tried to copy the libraries from the latest cvs release?
Copy the lib directory from JSampler-0.8a-cvs4, rebuild and replace jlscp.jar with the latest cvs version.

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 11:23 pm
by dahnielson
grishata wrote:Did you tried to copy the libraries from the latest cvs release?
Copy the lib directory from JSampler-0.8a-cvs4, rebuild and replace jlscp.jar with the latest cvs version.
Aah, I remember now that's the way how it's supposed to be done. (Been using the pre-built cvs releases for so long now.)

Works now (accidentally overwrote my newer jlscp.jar in the process at first...)

Thanks!

Re: Fantasia Feature Request

Posted: Thu Sep 11, 2008 11:50 pm
by dahnielson
grishata wrote:A lot of things to polish and add, but the basic functions are there: playing notes, see notes sent to the respective sampler channel and of course key bindings and keyswitch bindings.
To connect the MIDI keyboard to sampler channel, just click on the respective sampler channel.
To show/hide the MIDI keyboard, choose View/MIDI keyboard. To set the key range of the piano roll, right-click on the piano roll and choose Preferences.
This is brilliant and a good start!

Re: Fantasia Feature Request

Posted: Fri Sep 12, 2008 8:57 am
by ccherrett
grishata wrote:Did you tried to copy the libraries from the latest cvs release?
Copy the lib directory from JSampler-0.8a-cvs4, rebuild and replace jlscp.jar with the latest cvs version.
OK it is working!

So next is to implement the mapped keys and keyswitches?

I am not sure if this is just the way I am setup but when I play the keyboard it is not highlighting the notes.

When playing back multiple channels you just see one channel lighting up right?

At the end of the score it leaves keys lit. I am not sure how to change that if not note off is sent.

It would be nice if you heard the the sample play when you click on the keyboard in fantasia.

Possibly you could change the mouse events so you could drag your mouse over the fantasia keyboard and not have to pass a release event to hit another note.

Very very good start. This will be an awesome edition to fantasia!

Re: Fantasia Feature Request

Posted: Fri Sep 12, 2008 9:03 am
by dahnielson
ccherrett wrote:So next is to implement the mapped keys and keyswitches?
No, it's implemented all right. Clicking on them plays notes and make switches. You need to rebuild LinuxSampler from latest CVS and not just Fantasia to get everything to work.
ccherrett wrote:I am not sure if this is just the way I am setup but when I play the keyboard it is not highlighting the notes.
No, it only plays them, afaik.