]> ruin.nu Git - moosique.git/blob - To Do.txt
no message
[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
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                 // Calls on the toolbar to update the progress indicator.
25                 toolbar.updateProgInd();
26         }
27
28         När låten är slut återställes play-knappen.
29
30         Göra detta som en tråd?!?
31
32 \f
33 x Fixa en progress indicator till filladdningen om den tänker ta så lång tid.
34 x Scrollningen?!? Horisontell behövs på både MooView och MooTrackView, men vertikal bara på MooView. Hur göra?
35 x Får Moosique vara statisk? Fult?
36
37 \f
38 MIDI Messages
39
40 FF 58   Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks
41 FF 51   Tempo           
42 FF 03   Track Name      String name = new String(getData());
43 C0      Program change  int pc = getData1();
44
45
46 Sequence
47         private ShortMessage timeSignature, tempo;
48 Track 
49         private ShortMessage trackName, programChange;
50
51 \f
52 MooMenu
53
54         * Inställningar
55                 - MIDI-enhet     Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja.
56
57         Musikrelaterade menyer i Midisoft Recording Session:
58         
59         Track           Insert New...           Har vi
60                         Delete...               Har vi
61                         Move...                 Har vi
62                         Copy...                 Har vi
63                         Combine...              Onödig
64                         Rechannel...            Kanske
65                         Split by Pitch...       Onödig
66                         
67         Music           Insert Measure...       Lagt till
68                         Delete Measure...       Lagt till
69                         Clef...                 Onödig
70                         Time Signature...       Lagt till
71                         Key Signature...        Onödig
72                         Tempo...                Lagt till
73                         Scale Velocity...       Lagt till
74                         Transpose...            Lagt till
75                         Quantize...             Onödig
76         
77         Kanske också:   Reset Solo / Mute
78
79 \f
80 MooNote / MootrackView / MooNoteElement
81
82         * Hur lägga till MooNote och NoteOff?
83                 Internt vid skapandet - Då behövs track
84                 Externt         new MooNote(...);
85                                 ...add(MooNote);
86                                 ...add(MooNote.getNoteOffEvent());
87
88 \f
89 MooTrackTitle
90
91         * Kanalinställning
92                 Hämta från det första Event i ett spår.
93
94         * Funktioner för att sätta (och läsa?) channel? mute? solo?
95                 För mute och solo gäller följande metoder (ligger utklistrade i Methods of Key Classes.txt):
96         
97                 boolean getTrackMute(int track)                 Obtains the current mute state for a track. 
98                 boolean getTrackSolo(int track)                 Obtains the current solo state for a track. 
99                 void setTrackMute(int track, boolean mute)      Sets the mute state for a track. 
100                 void setTrackSolo(int track, boolean solo)      Sets the solo state for a track. 
101         
102                 När det gäller kanalerna velar jag lite. Antingen gör jag en mappningsmatris i Moosique som
103                 man får läsa och skriva ifrån (vilket blir FULT!), eller så tar man allt direkt genom
104                 MooNote. Metoden getChannel ska då leta upp den första MooNoten i det aktuella spåret och
105                 ta getChannel på den. setChannel ska loopa igenom alla MooNotes (egentligen alla Events)
106                 och ta setChannel på dem. Kan vara bra att fråga först eftersom det kan ta nån sekund.
107
108
109 \f
110 MooGUI
111
112         * Global KeyListener
113                 Görs uppenbarligen så här:
114         
115                         JFrame someFrame = new JFrame();
116                         
117                         JComponent rootPane = someFrame.getRootPane();
118                         ActionMap am = rootPane.getActionMap();
119                         
120                         Action helpAction = new AbstractAction() {
121                              public void actionPerformed(ActionEvent ae) {
122                                  showHelpWindow();
123                              }};
124                         am.put("help", helpAction);
125                         
126                         InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
127                         KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
128                         im.put(helpKey, "help");
129         
130         * Globala kommandon
131         
132                 * Oktavförändring i MooKeyboard
133                         Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8}
134         
135                 * Play / Stop
136                         Mappa till blanksteg.
137
138 \f
139 Moosique
140
141         * getPosition och setPosition - kvar?
142
143 \f