5 Einar: Moosique(4), MooNote(4)
6 Micke: MooGUI(4), MooTrackTitle(2), MooNoteElement(6), MooNoteProp(4)
7 Björn: MooMenu(8), MooToolbar(3), MooViewCounter(1)
8 Rolle: MooTrackView(16)
11 VIKTIGT! Implementera playfunktionens beteende. När play aktiveras ska följande loop köras:
13 while(sequencer.isRunning()) {
14 Moosique.getGUI().update();
18 Bör vara i MooView.. MooGUI bör bara ha en update som kör MooView's
21 public void update() {
22 // Calls on each track view to update itself.
23 for (int i = 0; i < trackViews.length; i++) {
24 trackViews[i].update();
26 // Calls on the toolbar to update the progress indicator.
27 toolbar.updateProgInd();
30 När låten är slut återställes play-knappen.
32 Göra detta som en tråd?!?
35 x Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
36 x Scrollningen?!? Horisontell behövs på både MooView och MooTrackView, men vertikal bara på MooView. Hur göra?
37 x Får Moosique vara statisk? Fult?
42 FF 58 Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks
44 FF 03 Track Name String name = new String(getData());
45 C0 Program change int pc = getData1();
49 private ShortMessage timeSignature, tempo;
51 private ShortMessage trackName, programChange;
57 - MIDI-enhet Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja.
59 Musikrelaterade menyer i Midisoft Recording Session:
61 Track Insert New... Har vi
67 Split by Pitch... Onödig
69 Music Insert Measure... Lagt till
70 Delete Measure... Lagt till
72 Time Signature... Lagt till
73 Key Signature... Onödig
75 Scale Velocity... Lagt till
76 Transpose... Lagt till
79 Kanske också: Reset Solo / Mute
82 MooNote / MootrackView / MooNoteElement
84 * Hur lägga till MooNote och NoteOff?
85 Internt vid skapandet - Då behövs track
86 Externt new MooNote(...);
88 ...add(MooNote.getNoteOffEvent());
94 Hämta från det första Event i ett spår.
96 * Funktioner för att sätta (och läsa?) channel? mute? solo?
97 För mute och solo gäller följande metoder (ligger utklistrade i Methods of Key Classes.txt):
99 boolean getTrackMute(int track) Obtains the current mute state for a track.
100 boolean getTrackSolo(int track) Obtains the current solo state for a track.
101 void setTrackMute(int track, boolean mute) Sets the mute state for a track.
102 void setTrackSolo(int track, boolean solo) Sets the solo state for a track.
104 När det gäller kanalerna velar jag lite. Antingen gör jag en mappningsmatris i Moosique som
105 man får läsa och skriva ifrån (vilket blir FULT!), eller så tar man allt direkt genom
106 MooNote. Metoden getChannel ska då leta upp den första MooNoten i det aktuella spåret och
107 ta getChannel på den. setChannel ska loopa igenom alla MooNotes (egentligen alla Events)
108 och ta setChannel på dem. Kan vara bra att fråga först eftersom det kan ta nån sekund.
115 Görs uppenbarligen så här:
117 JFrame someFrame = new JFrame();
119 JComponent rootPane = someFrame.getRootPane();
120 ActionMap am = rootPane.getActionMap();
122 Action helpAction = new AbstractAction() {
123 public void actionPerformed(ActionEvent ae) {
126 am.put("help", helpAction);
128 InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
129 KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
130 im.put(helpKey, "help");
134 * Oktavförändring i MooKeyboard
135 Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
138 Mappa till blanksteg.
143 * getPosition och setPosition - kvar?