use of blue.score.layers.audio.core.AudioLayerGroup in project blue by kunstmusik.
the class BlueProjectPropertyChangeListener method detachListeners.
protected void detachListeners(BlueProject project) {
if (project == null) {
return;
}
Score score = project.getData().getScore();
for (LayerGroup<? extends Layer> lg : score) {
if (lg instanceof AudioLayerGroup) {
lg.removeLayerGroupListener(layerGroupListener);
}
}
score.removeListener(scoreListener);
}
use of blue.score.layers.audio.core.AudioLayerGroup 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();
}
}
use of blue.score.layers.audio.core.AudioLayerGroup in project blue by kunstmusik.
the class BlueProjectPropertyChangeListener method attachListeners.
protected void attachListeners(BlueProject project) {
if (project == null) {
return;
}
Score score = project.getData().getScore();
Mixer mixer = project.getData().getMixer();
for (LayerGroup<? extends Layer> lg : score) {
if (lg instanceof AudioLayerGroup) {
AudioLayerGroup alg = (AudioLayerGroup) lg;
ChannelList channelList = findChannelListForAudioLayerGroup(mixer, alg);
lg.addLayerGroupListener(layerGroupListener);
AudioLayerGroupBinding binding = new AudioLayerGroupBinding(alg, channelList);
layerGroupBindings.put(alg, binding);
for (AudioLayer layer : alg) {
Channel channel = ChannelList.findChannelByAssociation(channelList, layer.getUniqueId());
if (channel != null) {
layerBindings.put(layer, new AudioLayerChannelBinding(layer, channel));
}
}
}
}
score.addListener(scoreListener);
}
Aggregations