Search in sources :

Example 1 with AudioLayer

use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.

the class AudioHeaderListPanel method layersAdded.

public void layersAdded(LayerGroupDataEvent e) {
    final int index = e.getStartIndex();
    final AudioLayer sLayer = layerGroup.get(index);
    SwingUtilities.invokeLater(() -> {
        Channel c = mixer.findChannelById(sLayer.getUniqueId());
        AudioHeaderLayerPanel panel = new AudioHeaderLayerPanel(sLayer, c);
        add(panel, index);
        checkSize();
    });
}
Also used : Channel(blue.mixer.Channel) AudioLayer(blue.score.layers.audio.core.AudioLayer)

Example 2 with AudioLayer

use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.

the class AudioLayersPanel method layerGroupChanged.

@Override
public void layerGroupChanged(final LayerGroupDataEvent event) {
    final ArrayList<Layer> layers = event.getLayers();
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            if (event.getType() == LayerGroupDataEvent.DATA_ADDED) {
                for (Layer layer : layers) {
                    ((AudioLayer) layer).addPropertyChangeListener(heightListener);
                    ((AudioLayer) layer).addAudioLayerListener(AudioLayersPanel.this);
                    for (AudioClip clip : (AudioLayer) layer) {
                        addClipPanel(clip, timeState, 0, 0);
                    }
                }
            } else if (event.getType() == LayerGroupDataEvent.DATA_REMOVED) {
                for (Layer layer : layers) {
                    ((AudioLayer) layer).removePropertyChangeListener(heightListener);
                    ((AudioLayer) layer).removeAudioLayerListener(AudioLayersPanel.this);
                    for (AudioClip clip : (AudioLayer) layer) {
                        removeClipPanel(clip);
                    }
                }
            }
            updateAudioClipYandHeight();
            checkSize();
            repaint();
        }
    });
}
Also used : AudioClip(blue.score.layers.audio.core.AudioClip) AudioLayer(blue.score.layers.audio.core.AudioLayer) AudioLayer(blue.score.layers.audio.core.AudioLayer) Layer(blue.score.layers.Layer)

Example 3 with AudioLayer

use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.

the class AudioLayersPanel method addNotify.

@Override
public void addNotify() {
    super.addNotify();
    if (layerGroup == null) {
        return;
    }
    layerGroup.addLayerGroupListener(this);
    timeState.addPropertyChangeListener(this);
    for (AudioLayer layer : layerGroup) {
        layer.addPropertyChangeListener(heightListener);
        layer.addAudioLayerListener(this);
    }
}
Also used : AudioLayer(blue.score.layers.audio.core.AudioLayer)

Example 4 with AudioLayer

use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.

the class AudioHeaderListLayout method layoutContainer.

@Override
public void layoutContainer(Container parent) {
    int count = parent.getComponentCount();
    if (count == 0) {
        return;
    }
    if (parent.getParent() == null) {
        return;
    }
    if (audioLayerGroup == null) {
        return;
    }
    int w = parent.getWidth();
    int runningY = 0;
    int size = Math.min(count, audioLayerGroup.size());
    for (int i = 0; i < size; i++) {
        Component temp = parent.getComponent(i);
        AudioLayer layer = audioLayerGroup.get(i);
        int h = (layer.getHeightIndex() + 1) * Layer.LAYER_HEIGHT;
        temp.setLocation(0, runningY);
        temp.setSize(w, h);
        runningY += h;
    }
}
Also used : Component(java.awt.Component) AudioLayer(blue.score.layers.audio.core.AudioLayer)

Example 5 with AudioLayer

use of blue.score.layers.audio.core.AudioLayer in project blue by kunstmusik.

the class AudioLayersDropTargetListener method drop.

/*
     * (non-Javadoc)
     * 
     * @see java.awt.dnd.DropTargetListener#drop(java.awt.dnd.DropTargetDropEvent)
     */
@Override
public void drop(DropTargetDropEvent dtde) {
    Node node = NodeTransfer.node(dtde.getTransferable(), NodeTransfer.DND_COPY);
    if (node != null) {
        File f = node.getLookup().lookup(File.class);
        if (f == null || !f.isFile()) {
            dtde.dropComplete(false);
            return;
        }
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Point p = dtde.getLocation();
        AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
        int index = audioLayerGroup.getLayerNumForY(p.y);
        AudioClip af = new AudioClip();
        af.setName(f.getName());
        af.setAudioFile(f);
        float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
        af.setStartTime(startTime);
        af.setSubjectiveDuration(af.getAudioDuration());
        AudioLayer layer = audioLayerGroup.get(index);
        layer.add(af);
        dtde.dropComplete(true);
    }
    try {
        Transferable tr = dtde.getTransferable();
        if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            dtde.acceptDrop(DnDConstants.ACTION_LINK);
            List<?> list = (List<?>) tr.getTransferData(DataFlavor.javaFileListFlavor);
            if (list.size() != 1) {
                dtde.dropComplete(false);
                return;
            }
            String s = list.get(0).toString().trim();
            System.out.println("file flavor found: " + s);
            if (!s.toLowerCase().endsWith("wav") && !s.toLowerCase().endsWith("aif") && !s.toLowerCase().endsWith("aiff")) {
                dtde.dropComplete(false);
                return;
            }
            String sObjName = s.substring(s.lastIndexOf(File.separator) + 1);
            Point p = dtde.getLocation();
            AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
            int index = audioLayerGroup.getLayerNumForY(p.y);
            AudioClip af = new AudioClip();
            af.setName(sObjName);
            af.setAudioFile(new File(s));
            float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
            af.setStartTime(startTime);
            af.setSubjectiveDuration(af.getAudioDuration());
            AudioLayer layer = audioLayerGroup.get(index);
            layer.add(af);
            dtde.dropComplete(true);
            return;
        } else if (dtde.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            dtde.acceptDrop(DnDConstants.ACTION_LINK);
            String str = (String) tr.getTransferData(DataFlavor.stringFlavor);
            System.out.println("String flavor found: " + str);
            if (!str.startsWith("file://")) {
                dtde.dropComplete(false);
                return;
            }
            str = str.substring(7).trim();
            if (!str.toLowerCase().endsWith("wav") && !str.toLowerCase().endsWith("aif") && !str.toLowerCase().endsWith("aiff")) {
                System.err.println("Could not open file: " + str);
                dtde.dropComplete(false);
                return;
            }
            str = URLDecoder.decode(str);
            str = str.replaceAll(" ", "\\ ");
            File f = new File(str);
            if (!f.exists()) {
                dtde.dropComplete(false);
                return;
            }
            String sObjName = str.substring(str.lastIndexOf(File.separator) + 1);
            Point p = dtde.getLocation();
            AudioLayerGroup audioLayerGroup = audioLayersPanel.getAudioLayerGroup();
            int index = audioLayerGroup.getLayerNumForY(p.y);
            AudioClip af = new AudioClip();
            af.setName(sObjName);
            af.setAudioFile(f);
            float startTime = (float) p.x / audioLayersPanel.getTimeState().getPixelSecond();
            af.setStartTime(startTime);
            af.setSubjectiveDuration(af.getAudioDuration());
            AudioLayer layer = audioLayerGroup.get(index);
            layer.add(af);
            dtde.dropComplete(true);
            return;
        }
        dtde.rejectDrop();
    } catch (UnsupportedFlavorException | IOException | InvalidDnDOperationException e) {
        e.printStackTrace();
        dtde.rejectDrop();
    }
}
Also used : InvalidDnDOperationException(java.awt.dnd.InvalidDnDOperationException) Node(org.openide.nodes.Node) AudioClip(blue.score.layers.audio.core.AudioClip) Transferable(java.awt.datatransfer.Transferable) AudioLayerGroup(blue.score.layers.audio.core.AudioLayerGroup) Point(java.awt.Point) IOException(java.io.IOException) AudioLayer(blue.score.layers.audio.core.AudioLayer) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) Point(java.awt.Point) List(java.util.List) File(java.io.File)

Aggregations

AudioLayer (blue.score.layers.audio.core.AudioLayer)9 AudioClip (blue.score.layers.audio.core.AudioClip)3 Point (java.awt.Point)3 Channel (blue.mixer.Channel)2 AudioLayerGroup (blue.score.layers.audio.core.AudioLayerGroup)2 ChannelList (blue.mixer.ChannelList)1 Mixer (blue.mixer.Mixer)1 Score (blue.score.Score)1 Layer (blue.score.layers.Layer)1 AudioLayerChannelBinding (blue.score.layers.audio.ui.bindings.AudioLayerChannelBinding)1 AudioLayerGroupBinding (blue.score.layers.audio.ui.bindings.AudioLayerGroupBinding)1 Component (java.awt.Component)1 Rectangle (java.awt.Rectangle)1 Transferable (java.awt.datatransfer.Transferable)1 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)1 InvalidDnDOperationException (java.awt.dnd.InvalidDnDOperationException)1 File (java.io.File)1 IOException (java.io.IOException)1 List (java.util.List)1 Node (org.openide.nodes.Node)1