]> ruin.nu Git - moosique.git/blob - To Do.txt
Fixed some bugs
[moosique.git] / To Do.txt
1
2 \f
3 FÖRDELNING
4
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)
9
10 \f
11 VIKTIGT! Implementera playfunktionens beteende. När play aktiveras ska följande loop köras:
12
13         while(sequencer.isRunning()) {
14                 Moosique.getGUI().update();
15         }
16
17         i View:
18
19         public void update() {
20                 // Calls on each track view to update itself.
21                 for (int i = 0; i < trackViews.length; i++) {
22                         trackViews[i].update();
23                 }
24         }
25
26         i GUI:
27         public void update(){
28                 view.update();
29                 // Calls on the toolbar to update the progress indicator.
30                 toolbar.updateProgInd();
31         }
32
33         När låten är slut återställes play-knappen.
34
35         Göra detta som en tråd?!?
36
37 \f
38 x Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
39 x Scrollningen?!? Horisontell behövs på både MooView och MooTrackView, men vertikal bara på MooView. Hur göra?
40 x Får Moosique vara statisk? Fult?
41
42 \f
43 MIDI Messages
44
45 FF 58   Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks
46 FF 51   Tempo           
47 FF 03   Track Name      String name = new String(getData());
48 C0      Program change  int pc = getData1();
49
50
51 Sequence
52         private ShortMessage timeSignature, tempo;
53 Track 
54         private ShortMessage trackName, programChange;
55
56 \f
57 MooMenu
58
59 x Kom ihåg sökväg vid Open
60
61         Musikrelaterade menyer i Midisoft Recording Session:
62         
63         Track           Insert New...           Har vi
64                         Delete...               Har vi
65                         Move...                 Har vi
66                         Copy...                 Har vi
67                         Combine...              Onödig
68                         Rechannel...            Kanske
69                         Split by Pitch...       Onödig
70                         
71         Music           Insert Measure...       Lagt till
72                         Delete Measure...       Lagt till
73                         Clef...                 Onödig
74                         Time Signature...       Lagt till
75                         Key Signature...        Onödig
76                         Tempo...                Lagt till
77                         Scale Velocity...       Lagt till
78                         Transpose...            Lagt till
79                         Quantize...             Onödig
80         
81         Kanske också:   Reset Solo / Mute
82
83 \f
84 MooNote / MootrackView / MooNoteElement
85
86         * Hur lägga till MooNote och NoteOff?
87                 Internt vid skapandet - Då behövs track
88                 Externt         new MooNote(...);
89                                 ...add(MooNote);
90                                 ...add(MooNote.getNoteOffEvent());
91
92         *       set/getDuration verkar inte fungera.
93 \f
94 MooTrackTitle
95
96         * Kanalinställning
97                 Hämta från det första Event i ett spår.
98
99         * Funktioner för att sätta (och läsa?) channel? mute? solo?
100                 För mute och solo gäller följande metoder (ligger utklistrade i Methods of Key Classes.txt):
101         
102                 boolean getTrackMute(int track)                 Obtains the current mute state for a track. 
103                 boolean getTrackSolo(int track)                 Obtains the current solo state for a track. 
104                 void setTrackMute(int track, boolean mute)      Sets the mute state for a track. 
105                 void setTrackSolo(int track, boolean solo)      Sets the solo state for a track. 
106         
107                 När det gäller kanalerna velar jag lite. Antingen gör jag en mappningsmatris i Moosique som
108                 man får läsa och skriva ifrån (vilket blir FULT!), eller så tar man allt direkt genom
109                 MooNote. Metoden getChannel ska då leta upp den första MooNoten i det aktuella spåret och
110                 ta getChannel på den. setChannel ska loopa igenom alla MooNotes (egentligen alla Events)
111                 och ta setChannel på dem. Kan vara bra att fråga först eftersom det kan ta nån sekund.
112
113 \f
114 MooGUI
115
116         * Global KeyListener
117                 Görs uppenbarligen så här:
118         
119                         JFrame someFrame = new JFrame();
120                         
121                         JComponent rootPane = someFrame.getRootPane();
122                         ActionMap am = rootPane.getActionMap();
123                         
124                         Action helpAction = new AbstractAction() {
125                              public void actionPerformed(ActionEvent ae) {
126                                  showHelpWindow();
127                              }};
128                         am.put("help", helpAction);
129                         
130                         InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
131                         KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
132                         im.put(helpKey, "help");
133
134         
135         * Globala kommandon
136         
137                 * Oktavförändring i MooKeyboard
138                         Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
139         
140                 * Play / Stop
141                         Mappa till blanksteg. <-- Detta fungerar inte.. blanksteget
142                         används av vår toolbar.
143
144 \f
145 Moosique
146
147         * getPosition och setPosition - kvar?
148
149 \f
150 Skräp
151
152                 // Prints the number of notes in each track
153                 int count;
154                 Track[] tracks = seq.getTracks();
155                 for (int k = 0; k < tracks.length; k++) {
156                         count = 0;
157                         for (int j = 0; j < tracks[k].size(); j++) {
158                                 if (tracks[k].get(j) instanceof MooNote) count++;
159                         }
160                         System.out.println("Track " + k + ": " + count + " notes.");
161                 }
162
163 \f
164 MooNoteProp
165         * textfält som gör att man bara kan skriva in siffror?