add possibility to save generated tune as .mid file#1
Open
pmirek wants to merge 3 commits intogreenjava:masterfrom
Open
add possibility to save generated tune as .mid file#1pmirek wants to merge 3 commits intogreenjava:masterfrom
pmirek wants to merge 3 commits intogreenjava:masterfrom
Conversation
Owner
|
I'm not the official maintainer of the project (this project is a bit old now), Your proposal is quite interesting, I just have a small comment: Something like that (with a diff --git a/src/openomr/gui/ToolBar.java b/src/openomr/gui/ToolBar.java
index 2f9b3fb..ca1e1cc 100644
--- a/src/openomr/gui/ToolBar.java
+++ b/src/openomr/gui/ToolBar.java
@@ -25,6 +25,7 @@ package openomr.gui;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
+import java.io.File;
import java.util.LinkedList;
import javax.sound.midi.InvalidMidiDataException;
@@ -34,9 +35,11 @@ import javax.swing.Box;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
+import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
+import javax.swing.filechooser.FileNameExtensionFilter;
import openomr.midi.MidiFileGenerator;
import openomr.midi.ScoreGenerator;
@@ -141,23 +144,35 @@ public class ToolBar extends JPanel
public void actionPerformed(ActionEvent arg0)
{
- ScoreGenerator scoreGen = null;
- try
- {
- StaveDetection staveDetection = gui.getStaveDetection();
- LinkedList<Staves> staveList = staveDetection.getStaveList();
- scoreGen = new ScoreGenerator(staveList);
- scoreGen.makeSong(64);
- scoreGen.save();
- }
- catch (MidiUnavailableException e)
- {
- e.printStackTrace();
- }
- catch (InvalidMidiDataException e)
- {
- e.printStackTrace();
- }
+ JFileChooser fileChooser = new JFileChooser();
+ fileChooser.setAcceptAllFileFilterUsed(false);
+ fileChooser.setFileFilter(new FileNameExtensionFilter("midi file","mid"));
+ int option = fileChooser.showSaveDialog(ToolBar.this);
+ if ( option == JFileChooser.APPROVE_OPTION) {
+ File file = fileChooser.getSelectedFile();
+ ScoreGenerator scoreGen = null;
+ try
+ {
+ StaveDetection staveDetection = gui.getStaveDetection();
+ LinkedList<Staves> staveList = staveDetection.getStaveList();
+ scoreGen = new ScoreGenerator(staveList);
+ scoreGen.makeSong(64);
+ String midiFile = file.getAbsoluteFile().toString();
+ if (!midiFile.endsWith(".mid"))
+ {
+ midiFile += ".mid";
+ }
+ scoreGen.save(midiFile);
+ }
+ catch (MidiUnavailableException e)
+ {
+ e.printStackTrace();
+ }
+ catch (InvalidMidiDataException e)
+ {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/src/openomr/midi/MidiFileGenerator.java b/src/openomr/midi/MidiFileGenerator.java
index 188a1f6..7de0f4e 100644
--- a/src/openomr/midi/MidiFileGenerator.java
+++ b/src/openomr/midi/MidiFileGenerator.java
@@ -60,14 +60,14 @@ public abstract class MidiFileGenerator
sequencer.start();
}
- public void save()
+ public void save(String fileName)
{
try{
- File midifile = new File("generated.mid");
+ File midifile = new File(fileName);
if (sequence != null){
MidiSystem.write(sequence,1,midifile);
- System.out.println("File written: [generated.mid]");
+ System.out.printf("File written: [%s]", fileName);
}else{
System.out.println("null midi sequence found");
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi,
Please take a look and if you like the changes merge this with your code.
Thanks!