]> ruin.nu Git - moosique.git/blob - To Do.txt
some restructuring..
[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         * Inställningar
60                 - MIDI-enhet     Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja.
61
62         Musikrelaterade menyer i Midisoft Recording Session:
63         
64         Track           Insert New...           Har vi
65                         Delete...               Har vi
66                         Move...                 Har vi
67                         Copy...                 Har vi
68                         Combine...              Onödig
69                         Rechannel...            Kanske
70                         Split by Pitch...       Onödig
71                         
72         Music           Insert Measure...       Lagt till
73                         Delete Measure...       Lagt till
74                         Clef...                 Onödig
75                         Time Signature...       Lagt till
76                         Key Signature...        Onödig
77                         Tempo...                Lagt till
78                         Scale Velocity...       Lagt till
79                         Transpose...            Lagt till
80                         Quantize...             Onödig
81         
82         Kanske också:   Reset Solo / Mute
83
84 \f
85 MooNote / MootrackView / MooNoteElement
86
87         * Hur lägga till MooNote och NoteOff?
88                 Internt vid skapandet - Då behövs track
89                 Externt         new MooNote(...);
90                                 ...add(MooNote);
91                                 ...add(MooNote.getNoteOffEvent());
92
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
114 \f
115 MooGUI
116
117         * Global KeyListener
118                 Görs uppenbarligen så här:
119         
120                         JFrame someFrame = new JFrame();
121                         
122                         JComponent rootPane = someFrame.getRootPane();
123                         ActionMap am = rootPane.getActionMap();
124                         
125                         Action helpAction = new AbstractAction() {
126                              public void actionPerformed(ActionEvent ae) {
127                                  showHelpWindow();
128                              }};
129                         am.put("help", helpAction);
130                         
131                         InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
132                         KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
133                         im.put(helpKey, "help");
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.
142
143 \f
144 Moosique
145
146         * getPosition och setPosition - kvar?
147
148 \f