X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=To%20Do.txt;h=8d026dc37a46270b0a13f906573f7a7a0b91e11b;hb=c83e74facf762222fe4578f175408cc50d360518;hp=d6b5d3526763fdd942abbffa3860486afb3704be;hpb=9b6d5465bcc468fcf4b2a1801ed031a69087e570;p=moosique.git diff --git a/To Do.txt b/To Do.txt index d6b5d35..8d026dc 100644 --- a/To Do.txt +++ b/To Do.txt @@ -1,19 +1,165 @@ -* Inställningar - - MIDI-enhet Öppna en dialogruta med innehållet i getMidiDeviceInfo() och låt användaren välja. -* Keyjazz - MidiChannel: noteOn, programChange etc. + +FÖRDELNING -* Referenser eller objekt?!? - tracks.get(tracks.indexOf(noteOffEvent) ??? +Einar: Moosique(4), MooNote(4) +Micke: MooGUI(4), MooTrackTitle(2), MooNoteElement(6), MooNoteProp(4) +Björn: MooMenu(8), MooToolbar(3), MooViewCounter(1) +Rolle: MooTrackView(16) -* Hur lägga till MooNote och NoteOff? - Internt vid skapandet - Då behövs track - Externt new MooNote(...); - ...add(MooNote); - ...add(MooNote.getNoteOffEvent()); + +VIKTIGT! Implementera playfunktionens beteende. När play aktiveras ska följande loop köras: -* Kanalinställning - Hur sparas i spår? + while(sequencer.isRunning()) { + Moosique.getGUI().update(); + } -* Einar är dryg // rolle \ No newline at end of file + i View: + + public void update() { + // Calls on each track view to update itself. + for (int i = 0; i < trackViews.length; i++) { + trackViews[i].update(); + } + } + + i GUI: + public void update(){ + view.update(); + // Calls on the toolbar to update the progress indicator. + toolbar.updateProgInd(); + } + + När låten är slut återställes play-knappen. + + Göra detta som en tråd?!? + + +x Fixa en progress indicator till filladdningen om den tänker ta så lång tid. +x Scrollningen?!? Horisontell behövs på både MooView och MooTrackView, men vertikal bara på MooView. Hur göra? +x Får Moosique vara statisk? Fult? + + +MIDI Messages + +FF 58 Time signature: [0] / [1], [2] MIDI clocks per metronome tick, [3] / 32 per 24 MIDI clocks +FF 51 Tempo +FF 03 Track Name String name = new String(getData()); +C0 Program change int pc = getData1(); + + +Sequence + private ShortMessage timeSignature, tempo; +Track + private ShortMessage trackName, programChange; + + +MooMenu + +x Kom ihåg sökväg vid Open + + Musikrelaterade menyer i Midisoft Recording Session: + + Track Insert New... Har vi + Delete... Har vi + Move... Har vi + Copy... Har vi + Combine... Onödig + Rechannel... Kanske + Split by Pitch... Onödig + + Music Insert Measure... Lagt till + Delete Measure... Lagt till + Clef... Onödig + Time Signature... Lagt till + Key Signature... Onödig + Tempo... Lagt till + Scale Velocity... Lagt till + Transpose... Lagt till + Quantize... Onödig + + Kanske också: Reset Solo / Mute + + +MooNote / MootrackView / MooNoteElement + + * Hur lägga till MooNote och NoteOff? + Internt vid skapandet - Då behövs track + Externt new MooNote(...); + ...add(MooNote); + ...add(MooNote.getNoteOffEvent()); + + * set/getDuration verkar inte fungera. + +MooTrackTitle + + * Kanalinställning + Hämta från det första Event i ett spår. + + * Funktioner för att sätta (och läsa?) channel? mute? solo? + För mute och solo gäller följande metoder (ligger utklistrade i Methods of Key Classes.txt): + + boolean getTrackMute(int track) Obtains the current mute state for a track. + boolean getTrackSolo(int track) Obtains the current solo state for a track. + void setTrackMute(int track, boolean mute) Sets the mute state for a track. + void setTrackSolo(int track, boolean solo) Sets the solo state for a track. + + När det gäller kanalerna velar jag lite. Antingen gör jag en mappningsmatris i Moosique som + man får läsa och skriva ifrån (vilket blir FULT!), eller så tar man allt direkt genom + MooNote. Metoden getChannel ska då leta upp den första MooNoten i det aktuella spåret och + ta getChannel på den. setChannel ska loopa igenom alla MooNotes (egentligen alla Events) + och ta setChannel på dem. Kan vara bra att fråga först eftersom det kan ta nån sekund. + + +MooGUI + + * Global KeyListener + Görs uppenbarligen så här: + + JFrame someFrame = new JFrame(); + + JComponent rootPane = someFrame.getRootPane(); + ActionMap am = rootPane.getActionMap(); + + Action helpAction = new AbstractAction() { + public void actionPerformed(ActionEvent ae) { + showHelpWindow(); + }}; + am.put("help", helpAction); + + InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + KeyStroke helpKey = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0); + im.put(helpKey, "help"); + + + * Globala kommandon + + * Oktavförändring i MooKeyboard + Mappa F9-F12 till MooKeyboard.setOctave(n) där n = {2, 4, 6, 8} + + * Play / Stop + Mappa till blanksteg. <-- Detta fungerar inte.. blanksteget + används av vår toolbar. + + +Moosique + + * getPosition och setPosition - kvar? + + +Skräp + + // Prints the number of notes in each track + int count; + Track[] tracks = seq.getTracks(); + for (int k = 0; k < tracks.length; k++) { + count = 0; + for (int j = 0; j < tracks[k].size(); j++) { + if (tracks[k].get(j) instanceof MooNote) count++; + } + System.out.println("Track " + k + ": " + count + " notes."); + } + + +MooNoteProp + * textfält som gör att man bara kan skriva in siffror?