]> ruin.nu Git - moosique.git/blob - To Do.txt
some changes
[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 GUI:
18         Bör vara i MooView.. MooGUI bör bara ha en update som kör MooView's
19         updatefunktion.. 
20
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();
25                 }
26                 // Calls on the toolbar to update the progress indicator.
27                 toolbar.updateProgInd();
28         }
29
30         När låten är slut återställes play-knappen.
31
32         Göra detta som en tråd?!?
33
34 \f
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?
38
39 \f
40 MIDI Messages
41
42 FF 58   Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks
43 FF 51   Tempo           
44 FF 03   Track Name      String name = new String(getData());
45 C0      Program change  int pc = getData1();
46
47
48 Sequence
49         private ShortMessage timeSignature, tempo;
50 Track 
51         private ShortMessage trackName, programChange;
52
53 \f
54 MooMenu
55
56         * Inställningar
57                 - MIDI-enhet     Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja.
58
59         Musikrelaterade menyer i Midisoft Recording Session:
60         
61         Track           Insert New...           Har vi
62                         Delete...               Har vi
63                         Move...                 Har vi
64                         Copy...                 Har vi
65                         Combine...              Onödig
66                         Rechannel...            Kanske
67                         Split by Pitch...       Onödig
68                         
69         Music           Insert Measure...       Lagt till
70                         Delete Measure...       Lagt till
71                         Clef...                 Onödig
72                         Time Signature...       Lagt till
73                         Key Signature...        Onödig
74                         Tempo...                Lagt till
75                         Scale Velocity...       Lagt till
76                         Transpose...            Lagt till
77                         Quantize...             Onödig
78         
79         Kanske också:   Reset Solo / Mute
80
81 \f
82 MooNote / MootrackView / MooNoteElement
83
84         * Hur lägga till MooNote och NoteOff?
85                 Internt vid skapandet - Då behövs track
86                 Externt         new MooNote(...);
87                                 ...add(MooNote);
88                                 ...add(MooNote.getNoteOffEvent());
89
90 \f
91 MooTrackTitle
92
93         * Kanalinställning
94                 Hämta från det första Event i ett spår.
95
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):
98         
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. 
103         
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.
109
110
111 \f
112 MooGUI
113
114         * Global KeyListener
115                 Görs uppenbarligen så här:
116         
117                         JFrame someFrame = new JFrame();
118                         
119                         JComponent rootPane = someFrame.getRootPane();
120                         ActionMap am = rootPane.getActionMap();
121                         
122                         Action helpAction = new AbstractAction() {
123                              public void actionPerformed(ActionEvent ae) {
124                                  showHelpWindow();
125                              }};
126                         am.put("help", helpAction);
127                         
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");
131         
132         * Globala kommandon
133         
134                 * Oktavförändring i MooKeyboard
135                         Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
136         
137                 * Play / Stop
138                         Mappa till blanksteg.
139
140 \f
141 Moosique
142
143         * getPosition och setPosition - kvar?
144
145 \f