Notes: Lots of changes since the last rc. The time is coming to start wrapping up the REAL 1.0 but still some to go. Try this is you like, ChangeLog since last release pasted.
Changes: From the ChangeLog * Feature: Right-click popup menu on a clone part now has "Select N clones", where N is number of clones. (T356) - Major addition: Part "clone chaining system". (See part.cpp for new functions). Speeds up searches for clones. * Feature: Added 'Paste clone' to arranger edit menu. Pastes clones of copied parts. (T356) - 'Paste' will behave as always, only making a fresh copy of non-clone parts, while cloning clone parts. - 'Paste clone' will always make a clone no matter if the parts are clones or non-clones. * Feature: Added 'Paste to track' and 'Paste clone to track' to arranger edit menu. (T356) - 'Paste' (and 'Paste clone') now attempt to paste to the original track(s) which the parts belonged to, or if the original track has been deleted, then the current track. 'Paste to track' and 'Paste clone to track' paste all copied parts to the currently selected track, which was the previous behaviour of 'Paste'. - Much work went into making sure that all scenarios work with these features, like copy/paste, drag/drop, drag/drop .mpt part files, drag/drop between different instances of muse etc. * Fixed: Importing or dragging midi part file (.mpt) into muse now supports multiple parts in the file. (T356) - Changed MusE::importPartToTrack(). * Fixed: Midi record into existing part past part end, in 'Replace' record mode, works now. (T356) - Finished an erase events 'TODO' block in Song::cmdAddRecordedEvents. * Fixed: Midi record into existing part, past part end, was decreasing part aref count, causing de-clone of clones. (T356) - Removed extra "part->events()->incARef(-1)" from Song::cmdAddRecordedEvents(). * Changed: Number of midi ports from 16 to 32. (T356) * Added: Muse application desktop file, and added installation of it plus the muse icon, upon 'make install'. (T356) - Desktop file submitted by Orcan Ogetbil. - Note if muse is installed to /usr/local, the desktop file might not find the icon. * Fixed: "-mcpu= is deprecated" compiler warnings. (T356) - Changed configure.ac to use -mtune and -march. * Speedups: Some heartBeat routines (such as Meter) were constantly drawing, wasting time and causing flicker. (T356) - Also fixed Track Info midi detect light, and Midi Sync lights. * Fixed: Midi strip vu meters now have a peak indicator. (T356) * Fixed: Audio mixer strips now update when config minimum meter/slider value changed. (T356) - Also fixed blocky 'aliased' drawing at low signals / low minimum meter settings. - Changed Track::_meter and ::_peak from ints to doubles for more accuracy, eliminate 'false' draw update triggers. * Added: Configurable shortcut key: "Transport: Goto start". Default 'W' key (as in reWind to start). (T356) * Added: Appearance configuration button: Clear background picture. (T356) - Also fixed Appearance::apply() to clear the string if <none> selected. - Also fixed Arranger::configChanged() to set canvas null background QPixmap. - This means clearing the filename in the 'select picture' dialog also works now. * Changed: Selected cloned parts now draw (inverted) dashed border, just like unselected parts. (T356) * Changed: Part drag-clone key from Shift-Ctrl back to Alt. (T356) - My fault. Was changed to Shift-Ctrl, but Ctrl is for selecting all items in a row or limiting movement to x or y. - Still not a good thing. Some desktops even reserve Alt, Shift-Alt etc. for window move, snap etc. - TODO: Must find a way to override desktop setting. Without Alt, we don't have enough keys to work with! Don't want user to have to disable setting. * Cleanups: Moved some methods outside of Part and Track classes which I had put inside them. (T356) - Methods like addPortCtrlEvents() deletePortCtrlEvents() etc. * Changed: Muse wants qt >= 3.2, but some .ui files had version 3.3. (T356) - Changed editinstrumentbase, editgainbase, aboutbox, configmidifilebase, gensetbase, midisync, fluidsynthguibase, and vamguibase .ui files. * Fixed: Midi Track info panel was allowing track name change to an already existing name. (T356) - Fixed Arranger::iNameChanged() to warn. Changing the name in the arranger Track List already warns OK. * Fixed: Crash or bizarre behaviour when undoing a track rename operation. (T356) - Replaced default simple Track class assignment operator with custom method. Added a flag parameter to Track::clone and Track copy constructors to indicate partlist is simply assigned, not parts cloned. Also removed the lines reassigning each part's track (!). Can get away with this since track rename is the only operation to use that, but something better would be needed if more 'normal' behaviour was needed in copy constructor and assignment operator ! 05.04.2009 * Fixed: Arranger part cloning works now! (Hold shift-ctrl while moving part - note dashed border on cloned parts). (T356) - In Song::cmdChangePart() do not call "oldPart->events()->incARef(-1)" if new part is clone of old part, (that is, old/new parts' eventlists point to same eventlist). - Changed from 'alt' to 'Shift-Ctrl' button combo to activate cloning in Canvas::viewMousePressEvent(). Alt is reserved for moving the whole window (on my machine), so most people probably never knew about cloning? - This also fixes a reference count problem when renaming a part, ref count was being dec'd past 0. Quite possibly fixes some other issues, too. Testing... * Fixed: Transport window was disappearing by itself. (T356) - Removed WStyle_Tool from Transport constructor. Seems to test Ok now. - Gave it a caption "Muse: Transport", to appear on task bar. * Fixed: Big time display now shows MTC minutes, seconds, frames, and subframes. (T356) * Fixed: Wave editor MTC cursor time readout was not right. (T356) - Use samplepos to set pos2 value in WaveEdit::setTime(). 03.04.2009 * Followup: Track info panel program, volume, and pan were not allowing editing values. (T356) - Fixed the track info heartBeat function. * Followup: Some more changes to respect MidiDevice open flags, set in midi config window. (T356) - Strangely, midi config 'write enable' lights still weren't stopping events from being played, even though the port was clearly unsubscribed successfully for writing (!) Also, strangely, only if Jack Midi was disabled, some device putEvent() error messages were appearing. I expected the messages to ALWAYS occur but it didn't happen, even though events were always played. - Added MidiDevice::_writeEnable and ::_readEnable, set when the device is opened or closed. - Changed the various ::putEvent methods to respect _writeEnable. (_readEnable not used yet, because port unsubscribtion for reading IS working - events stop arriving). * Added: Instrument definition file for playing to an Emu 4MBGSMT SoundFont. (T356) 01.04.2009 * Fixed: Midi config window: Clicking on green in/out enable lights was not actually dis/enabling in/out. (T356) - As initiated from MPConfig::rbClicked(), MidiAlsaDevice::close() was seeing the NEW flags, not the old. So, in MidiAlsaDevice::close(), removed _openFlags check, and added snd_seq_get_port_subscription() check. - Tested Ok disabling/enabling ins/outs, and clearing/setting port's device. * Fixed: Muse was not storing midi port 'openFlags' in the song files. (T356) - Muse could read the old 'record' flag and the new 'openFlags' tags, but only stored the old 'record' tag (well, it was actually storing rwFlags by mistake). - Added the necessary tag to file write. (Related to the fix above - now it stores the port in/out enable). 01.04.2009 * Fixed: Compile problem with muse widgets plugin "undefined reference to `main'". (T356) - Added -c to musewidgetsplugin_so_CPPFLAGS in muse/widgets/Makefile.am - Re-ran automake, configure, built, tested ok. - To be tested by users... * Fixed: Compile error: "editctrlbase.cpp:53: error: invalid use of incomplete type 'struct PosEdit'" (T356) - Added a <customwidget> section to editctrlbase.ui - To be tested by users... 31.03.2009 * Feature: Midi file export: Configuration options added for 2 or 4 byte time signatures + note off optimizations. (T356) - For 4 byte timesigs: Add fixed "metronome" value of 24 (once per quarter-note), and "32nd notes per quarter-note" value of 8. - For note off optimizations: Replace note offs with zero velocity note ons. * Fixed: Midi track info panel now updates when external changes occur, such as keyboard program changes. (T356) - Changed track info window from songChanged based updates to periodic heartBeatTimer based updates. * Feature: Added midi input detect indicator to track info panel. (T356) - Detects all note on-off, controller, aftertouch, program change, and pitchbend (but not sysex or realtime) events on the selected channels, on the selected midi ports. * Fixed: Midi program adjustment controls now respond when external program changes occur. (T356) - Added a section to handle ME_PROGRAM in MidiPort::sendEvent(), so that visual controls can update, such as trackinfo 'program' , and pianoroll 'program' controller adjustment knob. * Fixed: Some issues with 'Follow Song' setting and position cursor position/visibility. (T356) - Added 'xorg' in ppos calculations in Canvas::setPos() (and others like WaveView, but that still isn't quite right.) - For windows which have an appreciable x origin (space at the left of the contents), the play cursor was too far right or not visible sometimes, especialy with large horizontal zoom, particularly the arranger. With 'Follow Continuous', the play cursor should now stay about in the middle of the windows. With 'Follow Page', the view should now more or less always move in full 'pages'. 27.03.2009 * Fixed: Track info 'instrument patch' list box was not correct when selecting another track with unknown patch. (T356) - Broken last fixes. * Improved: Support for & < > \ " characters in xml files. (T356) - Fixed xml.cpp - Many places in muse can now use them (ex. track name, instrument names/patches/controllers etc.) - TODO: Writing: Must still check for places which manually use Xml::nput, put etc, but at least muse should now read them all without trouble. * Fixed: Instrument Editor was still asking to save sometimes even if user clicked save already. (T356) - Call instrumentNameReturn() patchNameReturn() and ctrlNameReturn() from various places, to force update. - TODO: Only realtime MC events are tested at the moment. MMC and MTC are not tested, or not working yet. - TODO: Fix midi sync clock input. Observed problems: wandering, even reversing(!) song cursor time. Can be stored in .med file that way (tempomap->fix is negative number!) making a bad file which won't play. 12.03.2009 * Fixed: Global configuration dialog 'Displayed Resolution', and added 'Midi Resolution' boxes. (T356) - Separate midi/gui configurations were allowed, but not implemented. - TODO: Now make the 'Displayed Resolution' setting actually do something. The 'Midi Resolution' currently sets BOTH what should be separated into midi and gui. Only config.division is used throughout muse, not config.guiDivision. Also, now that these settings are working, they reveal some issues with drawing, such as not enough pianoroll zoom-out ability with high resolution. * Improved: Midi Clock output. Was improper, causing external devices to misbehave. (T356) - Changed MidiSeq::processTimerTick(). - Tested: With RTC resolution at 8192, the target device slowly drifted out of phase with muse after about 20 bars. With RTC resolution at 1024 it was actually more stable (100 bars or more), despite more clock jitter. Used an equalization scheme to balance the time out. Must test if stability improves without this scheme. MidiSeq::processTimerTick() still needs some tweaking. - You may see severe phase difference if moving the cursor around and playing. Try playing from the song start. 19.02.2009 * Patch: Patch to find best available ALSA timer. (T356) - Submitted by Pedro Lopez-Cabanillas. Patch was named "muse_alsatimer_2nd.patch". - "This patch adds selection logic to ALSA timer initialization, trying to find the best available ALSA timer (a non slave timer with lowest resolution). Currently muse uses only the ALSA system timer, even when the system has an ALSA RTC or ALSA HPET drivers available, which are probably better for many users." * Patch: Patches for printf%zd/size_t, and grepMidi/gcc4.4 issues, and fix some compiler warnings. (T356) - Submitted by Orcan Ogetbil. - Patches were named muse-size_t.patch, muse-gcc44.patch, and muse-fix-some-compilation-warnings.patch * Fixed: Some more issues with manipulating drum tracks and underlying controller events. (T356) - Changing a drum track's output port, (and allowing muse to change the whole drum map), was not changing existing port controller values. - Also changing a track from 'midi' <-> 'drum' was not changing the port controller values properly. - NOTE: I still observed occasional 'ghost' midi port controller values. Tracking this issue... * Fixed: Seek or Init Instrument with XG instrument caused double loading of controller init values. (T356) - Moved controller init code from MidiPort::sendGm/XgOn() to a new MidiPort::sendGm/Gs/XgInitValues() and changed Audio::initDevices() to call them. * Added: 'Value' readout on menu toolbar (beside 'Cursor' readout), in Drum Editor. (T356) - Just like pianoroll, except it only shows controller values. - Now you can read the values you are drawing on the Drum Editor controller graph. * Fixed: Some issues with configuration, and appearance window. (T356) - Muse now remembers configured 'selected track foreground/background' colours. - Added "Midi Editor -> controller graph" colour configuration option (default navy blue). - Fixed Arranger and Style/Fonts windows not showing current values. * Fixed: Segfault with Appearance configured to show events, with a part tick > 0 on part canvas. (T356) - Added limit checks on from/to variables in PartCanvas::drawItem(). * Fixed: Midi controller graphs were displaying 'quantization' vertical lines instead of 'snap' lines. (T356) - Changed CtrlCanvas::draw() to use raster instead of quant value. - Also changed gray background colour to darkGray, so 'major' snap lines can be seen. * Added: Send 'null' midi controller parameters after each RPN/NRPN controler event. (T356) - Symptom: After muse sends any RPN/NRPN controller event, operating the 'data' (MSB/LSB) midi controllers affects that RPN/NRPN controller. - Cause: The RPN/NRPN parameters are still active, open to any subsequent data adjustments. - Cure: Send 'null' parameters after each RPN/NRPN event, so that subsequent data adjustments are sent there instead. - Added adjustable 'null' parameter numbers to the instrument editor. Typically they should be '127/127', but they are adjustable (select an unused controller number) if desired. They can also be turned off, if desired, by selecting 'off/off', so that muse will NOT send them. Turning them off is useful for instruments which do not use RPN/NRPN controllers. * Changed: GS/XG instrument patches high banks from 18 to 128, 17 to 127, and 5 to 65. (T356) - Was it a typo? XG specifications say high banks should be 128, 127, 65 etc. - Also, in instrument editor, reorganized XG Drum patches into Drum Kits and Sound FX. - TODO: Other instruments may have to be changed, too. * Fixed: Track info 'Rec' button: If new part was created, it was too short even to see. (T356) - Changed Song::recordEvent to round (tick + 1) up one bar. - Added separate record buttons for program (and bank), volume, and pan. 18.02.2009 * Added: Missing midi program controller to pianoroll/drum edit controller graph and adjustment knob. (T356) - Since the range is limited to 1-128, this only edits the program byte, NOT the program MSB or LSB! - Since only the program byte is edited, adding new values to the graph uses the CURRENT program MSB and LSB, as shown in the track info pane (H-Bank/L-Bank). If the current program is 'unknown' (all off), then the graph uses MSB=off, LSB=off if the song type is GM, and MSB=1, LSB=1 if not. - I considered using the 'previous value' on the graph for the MSB/LSB, but then there would be no way to quickly set the MSB/LSB when adding new values to the graph. - The only other way is to draw on the graph, and then use the midi event list editor to change the program MSB/LSB values. - TODO: Fix the track info H-Bank/L-Bank/Program behaviour. Do not allow program to be 'off' if H-Bank/L-Bank are not 'off'. * Changed: Instrument editor behaviour. Allow a 'user' instrument directory PLUS the 'built-in' directory. (T356) - Muse now looks first in the MUSEINSTRUMENTS directory (default MUSEHOME/muse_instruments, where MUSEHOME is default HOME/), then looks in the 'built-in' instrument directory (/usr/share/muse etc.) - Instruments found in the user directory OVERRIDE instruments with the SAME NAME in the 'built-in' directory. - This allows users to quickly experiment with existing instruments while keeping the same instrument name. - TODO: add a 'Delete' button to the instrument editor. * Added: Pitch bend sensitivity controller to fluidsynth. (T356) * Fixed: Organ synth: Volume not working. (T356) - There is no volume gui control to return proper min/max values. - Added a trap for CTRL_VOLUME in Organ::getControllerInfo() and set min/max to 0/127. * TODO: Fix some broken VAM synth midi controllers with improper range. (T356) 09.02.2009 * Fixed: Drum map: Grey vertical lines not proper when map header rearranged. (T356) - Used header->mapToSection when drawing grey vertical lines in dlist.cpp. 08.02.2009 * Fixed: Drum map - Changing ANote, Channel, Port now updates controller graph and knob. (T356) - Changing ANote, Channel, or Port of a drum map item now updates the controller graph and adjustment knob. Useful for XG/GS drum controllers. - TODO: Fix 'Undo' changing ANote, Channel, Port. * Fixed: Drum map - List item drag and drop works properly now. (T356) - Was not manipulating events properly, although port controller values were still OK. Useful for XG/GS drum controllers. - TODO: Fix 'Undo' of drag and drop. * Changed: All calls to some new message sending routines with direct calls. (T356) - Replaced all calls to msgSetTrackOutChannel, msgSetTrackOutPort, msgRemapPortDrumCtlEvents, and msgChangeAllPortDrumCtrlEvents, with direct calls (song->remapPortDrumCtlEvents etc.), bracketed by audio->msgIdle(true) and audio->msgIdle(false). - For complex operations, 'msgIdle' technique seems to be preferred over sending messages. - Tested such operations while in stop mode, and while playing. Tested OK. 06.02.2009 * Changed: Hard coded LADSPA paths in plugin.cpp and ssplugin.cpp to include /usr/lib64/ladspa and /usr/local/lib64/ladspa. (T356) - Suggested by Orcan Ogetbil - Note that the environment variable LADSPA_PATH still overrides these hard-coded paths. 06.02.2009 * Patch applied: Removes duplicate implementation of fast_log*() functions in ssplugin.h (T356) - Submitted by Orcan Ogetbil
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use