+
+\f
FÖRDELNING
-Einar: Moosique(4), MooSequence(4), MooTrack(4), MooNote(4)
+Einar: Moosique(4), MooNote(4)
Micke: MooGUI(4), MooTrackTitle(2), MooNoteElement(6), MooNoteProp(4)
-Björn: MooMenu(8), MooToolbar(3), MooStatus(1), MooView(2), MooViewCounter(1)
+Björn: MooMenu(8), MooToolbar(3), MooViewCounter(1)
Rolle: MooTrackView(16)
-* Inställningar
- - MIDI-enhet Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja.
-
-* Referenser eller objekt?!?
- tracks.get(tracks.indexOf(noteOffEvent) ???
-
-* Hur lägga till MooNote och NoteOff?
- Internt vid skapandet - Då behövs track
- Externt new MooNote(...);
- ...add(MooNote);
- ...add(MooNote.getNoteOffEvent());
-
-* Kanalinställning
- Hur sparas i spår?
-
-* Global KeyListener
- Görs uppenbarligen så här:
-
- JFrame someFrame = new JFrame();
-
- JComponent rootPane = someFrame.getRootPane();
- ActionMap am = rootPane.getActionMap();
-
- Action helpAction = new AbstractAction() {
- public void actionPerformed(ActionEvent ae) {
- showHelpWindow();
- }};
- am.put("help", helpAction);
-
- InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
- KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
- im.put(helpKey, "help");
-
-* Oktavförändring i MooKeyboard
- Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
-
-* Funktioner för att sätta channel? mute? solo?
+\f
+VIKTIGT! Implementera playfunktionens beteende. När play aktiveras ska följande loop köras:
+
+ while(sequencer.isRunning()) {
+ Moosique.getGUI().update();
+ }
+
+ i View:
+
+ public void update() {
+ // Calls on each track view to update itself.
+ for (int i = 0; i < trackViews.length; i++) {
+ trackViews[i].update();
+ }
+ }
+
+ i GUI:
+ public void update(){
+ view.update();
+ // Calls on the toolbar to update the progress indicator.
+ toolbar.updateProgInd();
+ }
+
+ När låten är slut återställes play-knappen.
+
+ Göra detta som en tråd?!?
+
+\f
+x Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
+x Scrollningen?!? Horisontell behövs på både MooView och MooTrackView, men vertikal bara på MooView. Hur göra?
+x Får Moosique vara statisk? Fult?
+
+\f
+MIDI Messages
+
+FF 58 Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks
+FF 51 Tempo
+FF 03 Track Name String name = new String(getData());
+C0 Program change int pc = getData1();
+
+
+Sequence
+ private ShortMessage timeSignature, tempo;
+Track
+ private ShortMessage trackName, programChange;
+
+\f
+MooMenu
+
+x Kom ihåg sökväg vid Open
+
+ Musikrelaterade menyer i Midisoft Recording Session:
+
+ Track Insert New... Har vi
+ Delete... Har vi
+ Move... Har vi
+ Copy... Har vi
+ Combine... Onödig
+ Rechannel... Kanske
+ Split by Pitch... Onödig
+
+ Music Insert Measure... Lagt till
+ Delete Measure... Lagt till
+ Clef... Onödig
+ Time Signature... Lagt till
+ Key Signature... Onödig
+ Tempo... Lagt till
+ Scale Velocity... Lagt till
+ Transpose... Lagt till
+ Quantize... Onödig
+
+ Kanske också: Reset Solo / Mute
+
+\f
+MooNote / MootrackView / MooNoteElement
+
+ * Hur lägga till MooNote och NoteOff?
+ Internt vid skapandet - Då behövs track
+ Externt new MooNote(...);
+ ...add(MooNote);
+ ...add(MooNote.getNoteOffEvent());
+
+ * set/getDuration verkar inte fungera.
+\f
+MooTrackTitle
+
+ * Kanalinställning
+ Hämta från det första Event i ett spår.
+
+ * Funktioner för att sätta (och läsa?) channel? mute? solo?
+ För mute och solo gäller följande metoder (ligger utklistrade i Methods of Key Classes.txt):
+
+ boolean getTrackMute(int track) Obtains the current mute state for a track.
+ boolean getTrackSolo(int track) Obtains the current solo state for a track.
+ void setTrackMute(int track, boolean mute) Sets the mute state for a track.
+ void setTrackSolo(int track, boolean solo) Sets the solo state for a track.
+
+ När det gäller kanalerna velar jag lite. Antingen gör jag en mappningsmatris i Moosique som
+ man får läsa och skriva ifrån (vilket blir FULT!), eller så tar man allt direkt genom
+ MooNote. Metoden getChannel ska då leta upp den första MooNoten i det aktuella spåret och
+ ta getChannel på den. setChannel ska loopa igenom alla MooNotes (egentligen alla Events)
+ och ta setChannel på dem. Kan vara bra att fråga först eftersom det kan ta nån sekund.
+
+\f
+MooGUI
+
+ * Global KeyListener
+ Görs uppenbarligen så här:
+
+ JFrame someFrame = new JFrame();
+
+ JComponent rootPane = someFrame.getRootPane();
+ ActionMap am = rootPane.getActionMap();
+
+ Action helpAction = new AbstractAction() {
+ public void actionPerformed(ActionEvent ae) {
+ showHelpWindow();
+ }};
+ am.put("help", helpAction);
+
+ InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
+ im.put(helpKey, "help");
+
+
+ * Globala kommandon
+
+ * Oktavförändring i MooKeyboard
+ Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
+
+ * Play / Stop
+ Mappa till blanksteg. <-- Detta fungerar inte.. blanksteget
+ används av vår toolbar.
+
+\f
+Moosique
+
+ * getPosition och setPosition - kvar?
+
+\f
+Skräp
+
+ // Prints the number of notes in each track
+ int count;
+ Track[] tracks = seq.getTracks();
+ for (int k = 0; k < tracks.length; k++) {
+ count = 0;
+ for (int j = 0; j < tracks[k].size(); j++) {
+ if (tracks[k].get(j) instanceof MooNote) count++;
+ }
+ System.out.println("Track " + k + ": " + count + " notes.");
+ }
+
+\f
+MooNoteProp
+ * textfält som gör att man bara kan skriva in siffror?