diff options
Diffstat (limited to 'muse2')
-rw-r--r-- | muse2/AUTHORS | 80 | ||||
-rw-r--r-- | muse2/CMakeLists.txt | 24 | ||||
-rw-r--r-- | muse2/ChangeLog | 5736 | ||||
-rw-r--r-- | muse2/NEWS | 29 | ||||
-rw-r--r-- | muse2/README | 232 | ||||
-rw-r--r-- | muse2/README.de | 83 | ||||
-rw-r--r-- | muse2/README.effects-rack | 82 | ||||
-rw-r--r-- | muse2/README.instruments | 149 | ||||
-rw-r--r-- | muse2/README.ladspaguis | 56 | ||||
-rw-r--r-- | muse2/README.shortcuts | 192 | ||||
-rw-r--r-- | muse2/README.softsynth | 86 | ||||
-rw-r--r-- | muse2/README.svn-branch | 125 | ||||
-rw-r--r-- | muse2/README.translate | 62 | ||||
-rw-r--r-- | muse2/README.usage | 130 | ||||
-rw-r--r-- | muse2/SECURITY | 244 | ||||
-rw-r--r-- | muse2/config.h.in | 2 | ||||
-rw-r--r-- | muse2/muse/main.cpp | 5 | ||||
-rw-r--r-- | muse2/muse/miditransform.cpp | 28 | ||||
-rw-r--r-- | muse2/muse/miditransform.h | 17 | ||||
-rw-r--r-- | muse2/muse/mplugins/midiitransform.cpp | 59 | ||||
-rw-r--r-- | muse2/muse/mplugins/midiitransform.h | 1 | ||||
-rw-r--r-- | muse2/muse/widgets/aboutbox.ui | 2 | ||||
-rw-r--r-- | muse2/muse/widgets/aboutbox_impl.cpp | 4 | ||||
-rw-r--r-- | muse2/muse/widgets/itransformbase.ui | 15 | ||||
-rwxr-xr-x | muse2/share/scripts/RemoveDoubles | 52 |
25 files changed, 187 insertions, 7308 deletions
diff --git a/muse2/AUTHORS b/muse2/AUTHORS deleted file mode 100644 index db045180..00000000 --- a/muse2/AUTHORS +++ /dev/null @@ -1,80 +0,0 @@ -+-------------------------------------------+ -| MusE | -| This software has been brought to you by: | -+-------------------------------------------+ - -Name: user: <user> <at> users <dot> sourceforge <dot> net ---------------- --------- - -Active Developers: - -Robert Jonsson spamatica -Tim (E Real) Donnelly terminator356 -Orcan Ogetbil ogetbilo -Florian Jung flo93 - - -Former Developers: - -Werner Schweer wschweer -Nil Geisweiller a-lin -Frank Neumann franky -Mathias Lundgren lunar_shuttle -Joachim Schiele qknight - -Fluidsynth logo designed by Josh "Swami" Green. - - - -+------------------+ -| PGP Public Keys: | -+------------------+ - -Florian Jung: ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.10 (GNU/Linux) - -mQENBE/A9gcBCADKNwa/lSJRz73Vfs+IKmmltxnHqGZQvYGJ32nDQny04hdSzlOQ -XVqyZHYDREpbXHnAPtANJTPozQVWoegxsC9ePEvydw3ezMO9P7hDjanXZvd4egHY -VLR9ZpLvFx7WJDxTQqD1Zaa4sA7ZzSdDu9kv/Bc8Qx2Qtur5T67THV8Pr8izSFSN -MKqR5X5fKqkN0+54hTDnj1YguIloYPKVI6+ns9RGOgvbys4rC1X1EqXdkkRXv3OT -r98udsWNlq+FMmwR+igfzi8+B79V3OAmqUDtpNBAnGgmRW1N6mzv47jRjSX72Ev2 -3HI8GXM2rxrsUyjDuDfgGG2rA0KDnWGpwHZLABEBAAG0JEZsb3JpYW4gSnVuZyA8 -Zmxvcmlhbi5hLmp1bmdAZ214LmRlPokBPgQTAQIAKAUCT8D2BwIbIwUJCWYBgAYL -CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQc931Ar+c+qX3GAgAuFsDSSItndVq -mPeMtjnQDinWAx//trezRoc3puC4mlrvr8dHD6cZ4n/1dPr58kuuGmS9+CzcDgdo -7HGiY1+rXyZIS2K18Z/YurIfJk7ZRr2QNv0aiuvz5JUh/TunV6OrUqapBb2XBgtW -lDIDlFMQmWQ+pUq3g4FbjWgdoAJp3BDKniO2fAGqBSrWqLFllFhBI/RChdoVWD2v -hbYQw+msbZ/cZjx6rDceOxsYr/ltXmfIHTVNpkQ/B9W84xHT64vqW9Z1wKbJ7yOs -vf1qQ72h6yOTP4Ru17hY6oFNdFkIkkwmJPEmRC0hn2MnvvYOhgl6HwAJc+MM4W/D -5X2lO73StLQkRmxvcmlhbiBKdW5nIDxmbG9yaWFuLmEuanVuZ0B3ZWIuZGU+iQE+ -BBMBAgAoBQJP7gyJAhsjBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK -CRBz3fUCv5z6pZPQB/sHAU2Z1LBVQ+ECw5OygLxXhLJOJzbDmoZpbEMrqkndcDLq -80eyiTx6YfccwqA4NbNItfwMIlVBXg3uCUK9fRKWV3J4BC7geJtkDL2K+7Z/qpbF -V65OnghJtSyLYVSpKInEsKKAmNMZATZsnkdDrdJ7u953eLw1Y5W8aEa+1n4PYG2d -jxySbeMLbvfVDrmDwl87RSH1EpuGQCFX0hNqWpUN9OLmx8IP8/j6/jv9U9+2bqbN -up0O2AkKLNezkGZcXVUzhC8NECd0LTsrGNmSuVo632U2Q0v/AIAAMetqlHfk1DSx -zzB1hNoca6Yosd/+NTnz8jvDqWBiG8aTjU5fdfijtCpGbG9yaWFuIEp1bmcgPGZs -bzkzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD6JAT4EEwECACgFAk/uEfYCGyMFCQlm -AYAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHPd9QK/nPqlHcgH/23gHsd3 -JYUhxAatuVCz1RCcy+iURIBd1Do0kCxCyQVF0NA7Y98AOTLJoyFPNB2Koq0CYunG -InKGKZN8NFCDUFCmSkNu88PkjDRfNKWCq69z/nfE2OlyvEdAdmWn0FY89VFMvhUj -NvG9n8g7s8tZciymRny4otjQjPOEmZUZyt5qm4KPfY58R/F+H1AF0E5V0pjwkBrV -ItI3tsw15bKrvzFddU6pwospRNbyb2dcuedRSbSttnehXGR5w5rr41Myp3slQNVt -TVbJedjWVQWK5ImIzYj8SRmG+dCXIL75RiWE72ctiy65MN8h/gG1PX/Dt/E3f2vG -GaBRR0EHueE9ShK5AQ0ET8D2BwEIAMZEvoloCudmQEZ2L7L6FwzfULDyV1dFojbZ -YiPXXKe4sYrFf7TK5dUsOIsBxQUcUANPzCpFOw84Ii2A7FRDYMzUfyb+KP9vXIVE -W84WQI6zILN3YowhIa+bSTkQEx+7nn2JORnQp74goxxWKY9HaTtN3v6LgjseljSk -YxEh8nLo9l1W3d9AYuMNmSv3amzC+p7P66E/+iFGjmKw0Nlb6eJL9iYkFGt+wjgM -jbm7Rvheq95xtJpYcw6/1iqN7uQdup5ZwAk+PQhDOnM0DAZtbim20OujUP+imUot -oEJAfG1QojKQqn6hr9hz6i/2BdJNwiss4d6ywILryJUnTFzWypcAEQEAAYkBJQQY -AQIADwUCT8D2BwIbDAUJCWYBgAAKCRBz3fUCv5z6paB3B/9UISZmdmZD5ExQan1b -W7Mz/ZvrJe+3jun1C5/ZADvBRgKBYfTA7GbwL6x963ovUXzyWUN16GH7KQca4yaq -oneJk55s9DBXHzcICtSwnojZVXiZEK1765lna8lFvYEBjYWNR7upR4RlwH7N1P1V -AVJ8yNJwNNjUu86CJMZ4rVXIie/o/Y/L2PEHZYiXSDfQtxEBKapXjbN2MP1DK4iq -LexeEJLanIxyWKe1KHFE1W2iPnzVgqfvqv6LuIcMY6vy8/lRXrlne6nEXabMu9tN -EoTXpkh0hYQzx3WP+CIutORts95i6aBAlo5Cv/67z5xBffeWCp9dmt30rlr/JIYy -kkXE -=iCVh ------END PGP PUBLIC KEY BLOCK----- - diff --git a/muse2/CMakeLists.txt b/muse2/CMakeLists.txt index f417347a..66a2ea1b 100644 --- a/muse2/CMakeLists.txt +++ b/muse2/CMakeLists.txt @@ -109,14 +109,22 @@ SET(MusE_SHARE_DIR ${SHARE_INSTALL_PREFIX}/${MusE_INSTALL_NAME}) ## Lib directory SET(MusE_LIB_DIR ${LIB_INSTALL_DIR}/${MusE_INSTALL_NAME}) -FIND_PROGRAM(SVNVER svnversion) -if (${SVNVER} STREQUAL "SVNVER-NOTFOUND") - SET (MusE_SVNVER 0) -else (${SVNVER} STREQUAL "SVNVER-NOTFOUND") - EXEC_PROGRAM( svnversion - ARGS ${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE MusE_SVNVER ) -endif (${SVNVER} STREQUAL "SVNVER-NOTFOUND") +include(FindGit) +if (GIT_FOUND) + EXEC_PROGRAM( ${GIT_EXECUTABLE} + ARGS "log -1 --format='%ci'" + OUTPUT_VARIABLE MusE_GITDATE ) + EXEC_PROGRAM( ${GIT_EXECUTABLE} + ARGS "log -1 --format='%t'" + OUTPUT_VARIABLE MusE_GITHASH ) + EXEC_PROGRAM( ${GIT_EXECUTABLE} + ARGS "rev-parse --abbrev-ref HEAD" + OUTPUT_VARIABLE MusE_GITBRANCH ) + SET(MusE_GITSTRING "git: ${MusE_GITBRANCH} - ${MusE_GITHASH} - ${MusE_GITDATE}") +else (GIT_FOUND) + SET(MusE_GITSTRING "") +endif (GIT_FOUND) + option ( ENABLE_LASH "Enable LASH Audio Session Handler (or LADISH compatibility layer)" ON) option ( ENABLE_OSC "Enable Lightweight Open Sound Control (liblo) (DSSI also recommended)" ON) diff --git a/muse2/ChangeLog b/muse2/ChangeLog deleted file mode 100644 index 37efb381..00000000 --- a/muse2/ChangeLog +++ /dev/null @@ -1,5736 +0,0 @@ -14.05.2013: - - When midi in is enabled in drum editor the selected track is moved along with - the triggered key (rj) -12.05.2013: - - Fixed bug with playback of drums clicking on notes in the new drum editor, - it was playing the wrong instrument (rj) -08.05.2013: - - Yet another MAJOR audio engine and plugin/synth process chain re-write. (Tim...) - - Track controllers (vol, pan) now sample-accurate. - - Track controllers (vol, pan) slope limited for near-noiseless operation. TODO: User settings. - - Fixed: "Duplicate Selected Tracks" crashes. Also now copies plugins and synths too. - - DSSI + Native VST: Fixed not remembering generic/native GUI pos/size. TODO: DSSI native GUI. - - Fixed regression by flo: Sliders were recording multiple automation points at same value. - - Fixed canvases not remembering position/zoom - everything reopens at exact same pos/zoom now. - - Fixed automatable audio GUI controls 'jumpy' in TOUCH mode if heavy graphics causing slowdowns. - When pressed, any control now truly 'disengages' from competing/intefering controller stream. - - Improved audio automation modes, + READ mode can now be interrupted by GUI or ext control. - - MESS synths (esp Deicsonze): Controls (like Track Info program) and synth controls now mirror - each other, both ways. - - Deicsonze softsynth: Fixed several problems: Not remembering settings + ladspa plugin settings, - midi controllers were in wrong domain - moved to NRPN14 type. TODO: Fix 'biased' midi controllers - like pan and detune etc. - - Native VST: Call idle periodically. Makes some plugins like Glitch work, as per LAD mail. -05.04.2013: - - Change window title when there are unsaved changes (rj) - - Add auto-save feature, when enabled tries to save after 5 minutes - when there has been changes, unless transport is running (rj) -04.04.2013: - - Added pitch control to SimpleDrums, first version (rj) - - Fixed Ctrl+arrows in the arranger so the track list is scrolled (rj) -29.03.2013: - - MusE 2.1.2 released! (rj) -28.03.2013: - - Allow reading old drummaps for new style drumtracks (rj) - - Added metronome icon in main window (rj) -27.03.2013: - - Fixed moving events with keyboard in Drum editor (rj) -10.03.2013: - - Added color settings for: midi events in arranger,wave events in arranger, wave events in wave editor (rj) -05.03.2013: - - Added shortcut printout of tools in tool menu (rj) -03.02.2013: - - Generalized theming somewhat more and added a basic Ardour complementary theme (rj) -28.02.2013: - - Wave Editor: Fixed some painting problems. Optimizations, speed boosts. (Tim) -24.02.2013: - - Improved dark theme, midi editors now set background color, the current part of the ruler is darker. - Theme setting separated from the regular Ok button in the Appearance settings. Also fixed the color - viewer in the color selector when using the dark theme. (rj) -23.02.2013: - - Added missing line draw shortcut (F) to drum editor. (Tim) -22.02.2013: - * New: Install pre-built PDF + single/split HMTL docs. Separate devel docs. Added build script. (Tim) - Build script is /doc/build_docs.sh You'll want to use it or a variant to get the HTML .aux files. - Fixed table in my Appendix in tex file so it works with HTML. - - For now, I've changed F1 help to open PDF, if not found fallback to HTML. - I've #define MUSE_USE_PDF_HELP_FILE in help.cpp. Undefine for HTML only. - May at least need to keep track of viewer process (don't open copies), also try context-sensitive help. - Help opener always been LANG ready (looks for _xx) but this new build script is not 'automatic'. - - TODO: For some reason the generated HTML developer docs contain nonsense. (Unknown formatters?) - - Added new french translation from Yann Collette (rj) -21.02.2013: - - Fixed: Multiple label warnings in the LaTeX doc. Reference and formatting fixes. (Orcan) - - Improved: Table of contents and hyperrefs in te LaTeX doc. (Orcan) -19.02.2013 - * MASSIVE FIXES: MANY editor, usability, operation fixes and changes. (Tim...) - - Please see the files README.usage and README.shortcuts for general changes. - - Added: Pan and Zoom tools to editors. P + Z shortcuts. Added a Settings item for alternate behaviour. - - Fixed: MAJOR Canvas class re-writes/simplifications! - - Fixed: ALL auto-scrolling. Was 'drifting' while scrolling. Accuracy is solid now. - - Fixed: Moving/new parts now fit into the tracks they are hovering over. - - Improved: "Velocity per-note" is now per-graph. Also does not cause main window to activate (w/ Robert's new styles). - - Fixed: Pianoroll and Drum Editor 'Snap' boxes not remembering 1st or 3rd columns. - - Fixed: Arranger 'Snap' was not stored or remembered. - - Fixed: Accelerator buttons shift/ctrl/alt for moving/copying/cloning / restricting movement. - - Fixed: Shift key restricting movement: Ignore snap setting now. - - Fixed: Resize shift key ignore snap setting now. - - Fixed: Draw new item shift key ignore snap setting now. - - Fixed: Shift key was not snapping to vertical. - - Fixed/changed: Drum velocity level hot-keys/order. LV3 is default now. Re-ordered all MusE drum maps' LV3/LV4. - - Fixed: Open Wave Editor shortcut changed from Ctrl-W to Ctrl-Y due to ambiguity with MDI 'Close Window'. - - Fixed: ALL 'Speaker' related playing of notes. Works with new notes, moving notes, piano press etc. - - Fixed: ALL 'Speaker' related notes now send true note-offs instead of zero-velocity note-ons. - - Fixed: Drum 'Cursor' mode was playing double notes. - - Fixed: New Drums 'Cursor' mode and instrument up/down movement was broken, jumping all over the place. - - Fixed: Drum 'Cursor' mode was not working if no controller graphs were shown. (Silly error.) - - Improved: Shortcut listings: Added Wave/Score categories. Re-categorized several keys. Updated README.shortcuts - - Fixed: Memory leaks in CtrlEdit class (ownerships). - - Fixed: Drum Editor not saving tool state. - - Improved: Right-click menus expanded. Now also shows 'Tools' menu when clicked on parts. -17.02.2013 - - Added patch from Willy Foobar to remove warnings from compilation (rj) -13.02.2013: - * Added basic theme support selection, currently two themes selectable, light and dark (rj) -07.02.2013: - * Feature: choice of new metronome with different sounds and adjustable volume. - Also has additional ticks before each standard tick. The idea is to improve timing. - Still needs some work, especially buggy for large time signatures, e.g. 3/16 (rj) -04.02.2013: - - Fixed gain adjustment with 'Other' choice in wave editor, it was reversed (rj) -02.02.2013: - * Solved: "Old style" Drums: Track channel/port re-enabled, drum list columns default to them. (Tim...) - The drum list port and channel columns are now blank by default until overriden by user. - When blank they default to the track port and channel. - Internally, -1 is now an acceptable value for members DrumMap::port and ::channel, meaning default to track. - All built-in drum maps have been changed, as well as the initial and blank DrumMap structures. - - Since Old Style Drum and New Style Drum had the same icon, and the only way to tell the difference between them - was the port and channel columns, and that difference is now gone, this required some icon and colour changes. - - Fixed Old Style Drum lockup: Certain item channel overrides caused infinite loop in Audio::processMidi(). -28.01.2013: - - MusE 2.1.1 released! - - Added setting for default track height (rj) -27.01.2013: - * Feature: Shortcuts dialog modeless + has default global shortcut Ctl+Shift+F1 + "Printable file" button. (Tim) - - Memory leaks! Many widgets and dialogs had no parent and were not deleted! (Tim) - Including several top-level editors such as LMaster, MasterEdit, ListEdit, and WaveEditor! - Created MusE::deleteParentlessDialogs(), call it from MusE::closeEvent() to delete all parentless dialogs: - appearance, metronomeConfig, shortcutConfig, midiSyncConfig, midiFileConfig, globalSettingsConfig, - mitPluginTranspose, midiInputTransform, midiFilterConfig, midiRemoteConfig, midiRhythmGenerator, midiTransformerDialog. - Also moved call of destroy_function_dialogs() into it instead of at end of main. (Consolidation.) - Verified that all destructors were being called. -25.01.2013: - * Feature/fix: Zoom at cursor! Zoom Ctl+PgUp/PgDown (defaults) and Ctl+MouseWheel now zoom about cursor. (Tim) - Eliminated redundant call in ScrollScale::setMag(), by blocking signals. - Consolidated all HorizontalZoomIn and HorizontalZoomOut functions into a single HorizontalZoom. - Added eight more 'quick zoom' levels to class ScrollScale. - Modified all HorizontalZoom functions to pass cursor offset, and use it in ScrollScale::setScale(). -19.01.2013: - - Fixed confused controllers on seek with multiple muted/off midi tracks/parts on same port/channel. (Tim) - In MidiDevice::handleSeek(): Re-wrote controller value sending section - fixed obeying mute/off section. -17.01.2013: - - Fixed song length way too big after recorded wave is added. (Tim) - Was a simple regression in Song::cmdAddRecordedWave back when tempo recording was added. -15.01.2013: - - Reinstate old Arranger "Paste to track" (Ctl+Shift+V) and "Paste clone to track" (Ctl+Shift+B). (Tim...) - - Changed default shortcut of Arranger "Paste clone" to Ctl+B. - - Changed default shortcut of Arranger "Paste (show dialog)" to Ctl+G. - - Removed Arranger "Paste clone with dialog". Instead, paste dialog now remembers 'clone' checkbox setting. - - Fixed Pianoroll/Drum Ctl+V paste bug was pasting into other parts: Always paste into current part. - TODO: Score Editor still not working because there never seems to be a current part! Must ask Florian... - - Fixed Pr/Dr Function dialogs bring main window to front: Don't give them a parent, add destroy_function_dialogs(). - - Fixed "Duplicate Track" feature: If selected 'copy parts', it was quietly cloning. Re-wrote ASSIGN_PARTS sections. - Now it copies both clone and non-clone parts. Tests OK but needs a good workout. (Maybe push Parts to Undo list?) - TODO: Found C.O.W. bug when de-cloning a part on a duplicated Wave Track - it's still a clone. Investigating... - - Fixed Old-style Drum Editor: Was not playing new notes as they were drawn. Re-wrote a DrumCanvas::newItem(), - and eliminated dynamic_casts. - - Don't play midi parts if track is off. -13.01.2013: - - remote should depend on widgets through #including app.h otherwise Python bindings don't compile (Orcan) -06.01.2013: - - MusE 2.1 released! -03.01.2013: - - Fixed SimpleDrums GUI issues on AVLinux (and supposedly other debian based distros) (rj) -01.01.2013: Happy new year! - - Fixed playback of drumsounds during editing for new type drum editor (rj) -29.12.2012: - - Added clear automation to automation menu - - Changed automation color selection to hopefully make more sense with styles that - don't explicitly show an unchecked visual, color is shown in first menu also and - automation is enabled when color is selected in the color menu (rj) -18.12.2012 - - Enable fluidsynth and simpledrums to search for missing sounds in project dir if - the path was missing. (rj) - - Added change-dir to project dir when saving or loading songs, it needs to be - researched a bit if this has any drawbacks. The idea is that if plugins or - whatever wants to write to disk it should happen in the project dir. (rj) -14.12.2012: - - Made simpledrums ask to load another sample if a sample wasn't found during loading (rj) - - when dragging multiple notes in editors they are not played, to avoid hanging notes (rj) -12.12.2012: - - Fixed some vst controls stuck. (Tim) - - Added vst master timebase (sequencers should work now). WIP Not quite finished. (Tim) - - Fixed weird QString bug causing some patch names to appear with garbage characters. (Tim) -11.12.2012: - - Fix native vst path (VST_NATIVE_PATH, VST_PATH, then preset). Also ladspa, dssi paths. Added -help text. (Tim) -10.12.2012: - - Changed versions to rc2 - - Changed name of SimpleSynth to original name SimpleDrums, this - does affect loading of songs using SimpleSynth. Open the song file - in a text editor and change the name of all SimpleSynth to SimpleDrums - and all should be ok. (rj) -09.12.2012: - - Fix VST names: Use filename if effect name or product name blank. (Tim) - - Fix bug 3594221: End-to-end midi notes don't retrigger. My bad. (Tim) - In MEvent::sortingWeight(): Note-ons with zero velocity are really note-offs. -08.12.2012: - - Native VST fixes and changes. (Tim) - Redid cmake options. Please do 'prune' and carefully reconfigure. - Fixed track info banks and patch popup list bank issues. - Fixed plugins such as NoizeMaker: Kill harmful redundancies - call getParameter before setParameter. - Fixed crash reloading song with huge-chunk plugin like NoizeMaker: Stack overflow in processEvent(). - TODO: Fix all other such sysex stack buffer usages like possibly in DSSI. -07.12.2012: - * Feature: Native VST instruments support. Best results are from compiling with the vst sdk. (Tim) - Featuring: True sample-accurate parameter automation, full native GUI support for TOUCH, WRITE modes. - New cmake options for enabling native vst, enabling true sdk support, and the vst header path. - Plugins environment variable is currently VST_NATIVE_PATH else "/usr/lib/vst:/usr/local/lib/vst". - TODOs: Parameter ranges: fixed at linear 0.0 - 1.0 for now. Program categories. - Dynamic port changes. Plugins correct path and env var? No rack effect plugins yet. -25.11.2012: - - Changed playback of midi in editors to default to on (rj) -21.11.2012: - * Fixed: Markers and synth windows don't open at all on some desktops like Lubuntu. (Tim) - Solution was combination of REMOVAL of fix for "bug: 2811156 Softsynth GUI unclosable..." - (of which said removal BY ITSELF DID NOT FIX this problem) AND removal of some superfluous show()s. - Tested OK with Lubuntu and XFCE (which the original fix was for). - Thanx to knowledgable tester who told us to remove that bugfix. -20.11.2012: - - Fixed audio stuttering loud annoying repeated segments upon seek. (Tim) - Slight readjustment of audio prefetch and midi thread priority (-5 and -1 instead of +1 and +2). -17.11.2012: - * Improved: Deicsonze soft synthesizer: Fixed crash, bugs, added ladspa plugins. (Tim) - TODO: No plugin control automation. Some oddities with log slider/entry ranges. Maybe add delay wet/dry. - * Added: Request from forums: Auto-start Jack upon MusE startup. Command-line disable switch -J added. (Tim) - * "widgets" depend on "instruments". (Orcan) -15.11.2012: - * Improved: Popup menus: Auto-breakup too-wide menus in class PopupMenu. (Tim) - In some cases X/Qt was giving up if too wide AND/OR too many columns, menu would not appear. - Tested OK with Deicsonze track info patch popup, and a synth plugin with > 2000 automation controls. -13.11.2012: - - Fix init of gain for duplicated audiotracks (rj) -12.11.2012: - - Added aftertouch controllers to all relevant remaining instrument files. (Tim) - - Synths: Added aftertouch controller to fluidsynth, and aftertouch/poly-aftertouch to DSSI. (Tim) -11.11.2012: - - Finished Aftertouch controllers: Removed PAfter and CAfter Event types. Quietly convert such - events in old songs into the new controllers. Converted midi input (hopefully). (Tim) - Updated README.instruments. - * Feature: Piano KB and drum list show coloured dots when per-pitch controllers exist or have data. (Tim) -03.11.2012: - * Improved: Instrument Editor (controller tab): Redesigned. Fixed MANY bugs. Should be SOLID now. (Tim) - Two new columns: "Show in midi tracks" and "Show in drum tracks". - * Improved: Midi controller graph 'Ctrl' popup menus now unified (cascading). (Tim) - 'Edit Instrument' menu item now takes you right to the instrument and controllers tab. - * Feature request: Aftertouch and PolyAftertouch (channel/key pressure) are true MusE controllers now. (Tim) - Now FULLY supported in controller graphs AND in the improved Instrument Editor / Definition Files. - - Midi controller stuff: Fixed some bugs, added some methods and improvements. -28.10.2012: - * Improved: Eliminated copious unrequired "controller" sections from songs and templates. (Tim) - These controllers such as volume, pan are already always added, so it's useless to store them when "Off". - Added midiport.cpp:defaultManagedMidiController, populated and used in init, also used when saving song - to look up these controllers and ignore them if "Off". - - Eliminated ALL "controller" sections from built-in templates, which were already over-populated. - - Also eliminated ALL "midiport" sections from buit-in templates, so that they don't touch existing setups. - - Also, specifically for the "synth.med", changed synth ports to 198 and 199 so that it is (almost) - guaranteed not to touch existing used ports with the synths. - * Improved: Also, wrote mechanism allowing track port/channel = -1 in templates, so that it uses your - chosen default output port/channel from the midi ports setup dialog. Try midiGM.med template for example. -27.10.2012: - * Improved: Velocity graphs. Icon for showing per-note or all velocities. Also found in Settings. (Tim) - * Improved: Piano KB has current selected note (yellow). For velocity/polyaftertouch/other per-note ctrls. (Tim) - - Bad timing warning now has "don't show again". (Tim) - - Added 'speaker' icon to drum edit. And drum list and piano keyboard now obey the 'speaker' icon. (Tim) -22.10.2012: - - Oops, fixed regression: Re-add default managed controllers to midi ports at Song::clear. (Tim) - - W.I.P. Preparations for Aftertouch and Poly Aftertouch (channel and key pressure) graph editing. (Tim) -21.10.2012: - - Slight changes to midi track info hbank/lbank/program dblclick on/off behaviour. (Tim) - TODO Need to improve by having separate 'last valid hbank/lbank/program' instead of single 'last valid value'. -20.10.2012: - - In MidiEventBase::read() Repair controllers saved with lo byte 0xff. (Tim) - No such control. It was supposed to be 0x00. It's an error caused by a previous bug, fixed now. -19.10.2012: - * Improved: Midi initializations. New settings options, can be 'quiet'. Complete rewrite of initializations coding. (Tim) - * Improved: Midi controller graphs: Control selector 'S' popup now stay-open, AND NOW with multi-coloured dots: - Blank: Controller has no current 'manual' value (it is 'Off'), and no stored automation values. - Blue: Controller has a current 'manual' value (it is not 'Off'), but no stored automation values. - Green: Controller has no current 'manual' value, but does have stored automation values. - Gold: Controller has a current 'manual' value AND has stored automation values. - Bonus! Pianoroll and drum edit 'Ctrl' buttons ALSO now popup this very same menu. No more clumsy - adding of controllers - now just hold the ctrl key and select away and... "bing bing bing 1 2 3". (Tim) - * Improved: 'Old' drum track 'drum controllers' display and operation: Fixed several problems: Incorrect mapping to drum map etc. (Tim) - Now if more than one drum is pointing to the same 'anote', the others are overlaid as grey slivers. (TODO Not quite done.) - TODO: Although THESE "drum controllers" are improved, there are conceptual problems with NON-drum controllers old drum map: - If a NON-drum controller such as pan is adjusted, what then? If the drum map contains more than one port/channel/anote - it should be sent to ALL of them BUT we would like a 'track override' which when turned off, 'pan' could be locally - adjusted for EACH drum having different ports/channels/anotes. (So in theory drum track channel should be reinstated.) -09.10.2012: - - Fixed old fluidsynth bug: Drum patch numbers incorrect. (Tim) - Confusion due to special fluidsynth drum bank = 129. Changed FluidSynth::getFirstPatch, - ::getNextPatch, and CTRL_PROGRAM section of ::setController. - - Midi track info patches popup menu: Don't display category if empty. (Tim) -08.10.2012: - * !!! Song type is now removed !!! : (Tim) - TODO: Instrument init sequences. Need some kind of editor. Need timing mechanism while in 'stop' mode. - Was thinking these events should be in FRAMES or real time - not affected by tempo. Jack slow sync - callback might help. (Also try to re-enable metronome precount - similar concept here!) - * Improved: Multi-port (aka multi-channel) midi import and export, via Device Name, Port, or Instrument metas. (Tim) - - MusE can now export a midi file and re-import exactly as it was, all ports + devices + instruments incl. - - Extra options for import/export added. - - Import midi now passes 'unabsorbed' meta events on to the track. They were discarded before - lost forever. - - Solved: Export midi now stores an instrument's Init sequence, instead of the old song type sysexes. - - MPEventList now has highly customized same-time sorting, helps 'cement' import/export events in place, such - as controllers or program changes before notes, instrument metas before mode sysexes. (EventList NOT done.) - - Old bug: Fixed superfluous NULLS in meta texts in midi export. - - Old bug, annoying: Midi Import: parts are too short and 'events past end' indicator is on. - - TODO: Bug: Deicsonze: Midi track info patch popup: Screen all black until esc or click. -04.10.2012: - - Added Gain knob on channel strip for audio tracks (rj) - - Added descriptive tooltips for midi parameters in midi track info (rj) -03.10.2012: - - Changed WaveTrack and AudioInput to create mono tracks, AudioInputs - are also no longer muted upon creation (rj) -02.10.2012: - - Added descriptive tooltip to cursor mode in drum editor (rj) -01.10.2012: - - Fixed Step shortcuts 0,9 in drum editor so they actually update - the step size and fixed update of controller view when stepping - up and down (rj) -30.09.2012: - - Added part creation from wave editor - to make this really usable - more functions to set tempo etc, are needed (rj) - - Fixed name length of Aux ports and added index (rj) - - Fixed issue with moving aux:es in the track list causing the auxes - to be mixed up (rj) -29.09.2012: - - Added handling of missing soundfonts in fluidsynth load so - a dialog asking for replacement soundfont pops up (rj) -17.09.2012: - * Introducing: Copy On Write for waves. (Tim) - It asks to copy, to the Project Directory, any wave to be modified which is either - not writable or is shared with another independent (non-clone) wave event. - TODO: Improve by asking even for writable waves outside the Project Directory - (add a 'copy' checkbox column to the dialog, settable only under certain conditions). - * Added: Informative text on Undo/Redo buttons/menu text/tooltips ("Undo AddTrack" etc). (Tim) - In cases of multiple items in one operation, the first is shown, with ", .." ("Undo AddTrack, .."). -16.09.2012: - - Fixed allocation error with drag&drop of plugins (rj) - - Fixed close menu alternative in Instrument editor (rj) - - Changed Aux name on strips to reflect the actual Aux strip name (rj) - - Fixed CR:3567893 Play Event on note creation (rj) - - Removed 'fluid' from the list of built synths, it is inferior to fluidsynth - and causes confusion (rj) -09.09.2012: - - Added instructions on how to record audio with MusE to the new manual (rj) -08.09.2012: - - Follow up to Improved Wave Editor: Added Edit -> Adjust Wave Offset. Helps compensate for latency. (Tim) - FIXME: Respect clones! If operating on two selected clones of the same part, an extra event is created. - May not be this code's problem but seems like it, other operations like moving an event seem OK. -07.09.2012: - - Bug 3555569, 3555572: New informative ERROR, WARNING and HINT messages in cmake build script. (Tim) - Also, detect and report missing Doxygen executable. -06.09.2012: - - Bug 3555581: No synths listed in Edit menu: main.cpp: Move initMidiSynth() ahead of MusE. (Tim) - - Unrelated simple change: Privatize Arranger::parentWin. (Tim) - - Feature request 3565102: FLAC audio file import. (Tim) -04.09.2012: - - Fix for forum topic "Ordering of simultaneous events". (Tim) - Methods EventList::add() and ::move() now sort all same-time notes AFTER controllers. -03.09.2012: summer sleep is over! plugins can now be grouped (flo) -14.08.2012: - * Introducing: Improved Wave Editor. (Tim) - Class WaveView is replaced by WaveCanvas. - Wave Events can be selected, added, moved and deleted. - TODO: Bunch o' stuff, but currently it should be as good or better than the old editor. -04.08.2012: - * Introducing: More bits for Song Changed SC_* flags. (Tim) - Added MusECore::SongChangedFlags_t (in new type_defs.h file). Declared as int64 type. - All Song Changed parameters, handlers, connections, calls, colateral operations etc. now use - this new SongChangedFlags_t. - All the handlers are now ready for the code bodies to accept any extra flags, devs need not - do anything more than define new SC_* flags and write support inside the handlers. - Please beware these possible extra flags when writing songChanged handlers and setting updateFlags. -04.08.2012: - - Optimizations: Added Master::songChanged and ArrangerView::songChanged to filter some SCs. (Tim) -01.08.2012: - - Finished the Sysex Editor in the Instrument Editor. (Tim) - Create, delete, save named instrument sysexes. Does nothing more than that for now. -29.07.2012: - - Tweaked drum editor zooming to give correct initial zoom (rj) -12.07.2012: - - Fixed controllers go wacky after moving effects rack plugins up/down. My bad! (Tim) - Rewrote CtrlList::operator= and several others. Tested OK. - - Also fixed existing problem: After moving rack plugins up/down, graphs disappear. (Tim) - Simple oversight in AudioTrack::swapControllerIDX: New members 'color', 'visible', - and 'don't show' weren't being copied. - - Documentation: Some contributions to the documentation.tex file. (Tim) -08.07.2012: - - Changed naming convention for recorded wave files to include track name and it's - take number. (rj) - - added a warning dialog for the delete track key shortcut. (rj) - - Use cmake's own FindPythonLibs module instead of pkgconfig to detect Python (Orcan) -06.07.2012: - - Updated Czech translation from Pavel Fric (rj) - - Some strings that were not translatable are now (as reported by Pavel Fric) (rj) - - Updated translation files, and started completing swedish translation a bit (rj) - - increased zoom range in arranger, reversed zoom in wave editor (rj) -04.07.2012: - - added inc/dec tick for events in the list editor (rj) -03.07.2012: - - Fixed new drum parts disappear as sson as they're drawn. (Tim) -30.06.2012: - ======================================= - * 2.0 tagged (rj) - ======================================= - - Emergency crash fix: In automation popup midi control 'Clear' item. (Tim) - Cannot delete any actions from menu due to recent December PopupMenu fixes. -29.06.2012: - - Fixed file dialog: disable 'read configuration' for midi files. (Tim) - - Updated swedish translation (rj) - - reworked the REC button somewhat (rj) -28.06.2012: - - External sync fixes: Now have user-selectable of clock filtering and quantization. (Tim) - - Fixed clicking tempo master does not update wave parts. Allow SC_MASTER to call canvas->partsChanged. (Tim) - - Fixed problems with recorded wave part and event sizes, and 'past end' indicator. (Tim) - - Don't resize or destroy wave events upon part resize. (Tim) - - Init support for controlling midi engine from Jack timebase master. Completely disabled for now. (Tim) -26.06.2012: - - Added updated Czech translation from Pavel Fric[pavelfric@seznam.cz] (rj) -23.06.2012: - - automation graphs: deletion with middle-click, fixed automation (flo93) - editing. -18.06.2012: - - Removed printouts about no longer supported VST implementation, - use DSSI implementation instead (rj) - - Some preparations for 2.0 (rj) -16.06.2012: - - MusE as Jack Timebase master: Corrected ticks_per_beat and bar_start_tick fields. (Tim) - - Fixed bug by Geoff B and Flo: Changing a midi port device: We are only interested in altering - tracks using the port being changed in the midi port list. And don't change channel. (Tim) -15.06.2012: - * Sync fix: MusE now records tempo changes from externally clocked midi. (Tim) - Still experimental but non-intrusive: You will be asked at the end of recording if you - want to transfer the recorded tempos to the master tempo graph. - Tested OK so far with ALSA and Jack midi. Best results ATM may be when recording from - position 0, not 'continuing' a recording or skipping 'fwd' or 'rew'. - TODO: Record Jack timebase changes! Find patch someone sent years ago, likely still useful... -11.06.2012: - - Finally! Audio controller playback has smooooth frame resolution even with large audio buffers. (Tim) - CtrlList::value() now accepts a nextFrame*, filled with next event frame, which the - plugin and dssi process use to determine the run sizes. - Bonus! This processing is now guaranteed to be ALIGNED with user's chosen minimum control processing - period in Settings. Before, it was occasionally going to 1, 2, 4 frame runs etc., was not good. - TODO: Sorry, track audio/pan have no 'variable run length' support yet. Choppy with large buffers. - Tip: If a ping-pong effect is desired, try a plugin for now! - - Increased default minimum controller period from 64 to 256. Tests showed 256 is just fine, smooth. -10.06.2012: - - Add midi-to-audio control popups to right-click automation menus. (Tim) - - Track list audio automation popup now can stay open, for colour and 'clear' items. (Tim) -08.06.2012: - * Merge: From branch r2_0_extra. (Tim) - - More automation fixes. In AudioTrack::processAutomationEvents, optimize integer, bool, - discrete controller types to avoid multiple dots on flat straight-line graph segments. (Tim) - - Replaced Song::controllerChange() with a lower-level - CtrlList::guiUpdatePending()/clearGuiUpdatePending(). Checked and cleared in - Song::beat() at the nice slow heartbeat rate instead of direct calls to QWidget::update(). - This means ALL controls should update their graphs now, and at a more reasonable rate. (Tim) - - ARVT_STOP automation events are also recorded now - - When clicking sliders in the plugin's native GUIs or the - mixer with SHIFT held down, straight lines are drawn (no - intermediate control points are recorded) - TODO: does not yet work for muse-native, but customized GUIs (flo) -07.06.2012: - - More automation fixes. (Tim) -06.06.2012: - - Another midi-to-audio mapper classes rewrite. (Tim) -05.06.2012: - - Rewrote midi-to-audio control mapper classes. (Tim...) - - Added save and load midi-to-audio settings. - - Remap or remove mappers when rack items moved or removed. -04.06.2012: - - Side branch r2_0_extra, copied from release_2_0: - * Feature: Midi control of audio paramters. (Tim) - - More important timing, accuracy fixes. -03.06.2012: - - Merged documentation from local source to repository LaTeX document, 80% done (rj) -27.05.2012: - * Timing, resolution, accuracy, and automation fixes: (Tim) - - Ask audio driver for 'its' current system time instead of wallclock in utils.cpp:curTime(). - Reason: Jack's clock source can be wallclock, cycle counter, HPET etc. - TODO: Try more Jack time functions for accuracy in Audio::framesSinceCycleStart etc. - - Fixed automation 'manual' slider values: Update them from automation values at the current time - when switching to automation OFF. After some recent changes by me, the 'manual' values were - left 'independent' of the automation values. While this had interesting effects, the value - would 'jump' back to the manual value when switching to OFF, which became disconcerting. - The best solution, in muse_evolution (from where I adopted the previous changes), was to - continuously update the manual values during process, but there may be too many controllers, - so this was the other lesser option. - - All audio/plugin GENERIC gui controls now record their automation at FRAME resolution. - Previously the timestamps were ticks converted to frames (lossy). Now they are true frames. - This means these recorded graphs can be much denser with vertices now, if needed. - - Querying of plugin controller values in DssiSynthIF::getData, PluginI::apply, and volume/pan - controllers in AudioTrack::copyData/addData is now done at a more proper and accurate - frame time instead of wallclock-based queries via AudioTrack::volume/pan/pluginCtrlVal. - (Sorry, this does not mean frame accuracy on playback yet.) - - Menu 'Take automation snapshot' now operates with frame resolution. Added a warning message as well. - - Menu 'Clear automation' enabled and implemented. Added a warning message as well. - - DSSI synths: Fixed errors with Pitch controller on playback. Removed AND'ing of 0x3FFF in - CTRL_PITCH section of DssiSynthIF::processEvent. -20.05.2012: - - MusE can now compile with clang/llvm via -DCMAKE_CXX_COMPILER=clang++ flag to cmake. (Orcan) - - Update some URLs in README. (Orcan) -18.05.2012: - - Added Czech translation by Pavel Fric[pavelfric@seznam.cz] (rj) - - fixed native GUIs not updating (flo93) - - removed _guiUpdate{Program,Control[]} - - OscIF now stores the native GUI's state - - OscIF doesn't send control changes if they don't differ from the - native GUI's state (until enforced) -08.05.2012: - - ladspa/dssi/simplesynth controls: Fixed logarithmic defaults. (Tim) - Use log not log10 in plugin.cpp:ladspaDefaultValue(). - - ladspa/dssi/simplesynth controls: A better default than 1.0 if none found, compute from upper/lower. (Tim) - In plugin.cpp:ladspaDefaultValue(). TODO: simplesynth controls still wrong. - - ladspa: TAP Reverberator built-in MusE GUI: Fixed wet/dry infinity display "---". (Tim) - Added DoubleLabel 'offValue' Qt property. Set in file 2142.ui -07.05.2012: - - DSSI: Fixed second of two crashes when operating controls while playing notes. (Tim) - Just ignore rare out-of-order events. -06.05.2012: - - Added automation right-click remove point and printout with current value, also started - working towards editing multiple points (rj) - - Fixed crash bug in pianoroll when using arrow keys on an empty part (rj) - - DSSI: Fixed one of two crashes when operating controls while playing notes. WIP on other (rarer) crash. (Tim) -05.05.2012: - * Updated .ts translation files in repository. Updated with -no-obsolete to - trim away lots of unused strings (rj) -04.05.2012: - *Added: -A switch: "Force inclusion of ALSA midi even if using Jack". (Tim...) - - Fixed intermittent Jack crash at startup with jack <= 1.9.8. Fixed in Jack 1.9.9 - - Rearranged main.cpp, moved a few init items into it from app.cpp - - Fixed "Jack calling while audio disconnected" errors at startup. - - Fixed LASH leak: Added lash_args_destroy(). - - Fixed icons leak: Destroy all icons. - - Fixed function dialogs leak: Created with NULL parent. - - Removed QApplication::setColorSpec() call. Caused "pixmap is not an X11 class pixmap" errors. - - Fixed style changing problems (transparent MDI windows, other artifacts). Requires restart! -03.05.2012: - - Fixed crash bug with coloring of iR button on aux strip (it does not have one) (rj) -24.04.2012: - - Changed automation drawing in arranger to be more forgiving - shift no longer needed and it's not needed to be too close - to the line. TODO: some cleanup (rj) -23.04.2012: - - Global Settings: Start song: Changed to allow other templates. (Tim) - * Please revisit this setting or start with clean config so MusE can - initialize the box with the global default.med file. -22.04.2012: - - Duplicate Tracks: Fixed routing bug. (Tim) - In tracks' ::internal_assign(), don't call msgAddRoute, push_back the route node, - because caller later calls msgAddTrack which 'mirrors' that single routing node. - Exception: Audio Input and Output still need to call msgAddRoute which connects to Jack. - May still cause audio processing problems ? - - Added colorhints to iR and oR routing buttons (rj) -21.04.2012: - - Templates: File dialog: Added 'read Midi Port Configuration' box. (Tim) - - File dialog: Unset 'read Midi Port Configuration' box for Global folder, set for others. (Tim) - - File dialog: Made side bar buttons auto-exclusive. Some fixes, cleanups. (Tim) -19.04.2012: - - Reverted yesterdays description change, now shows label again (rj) - - Added tooltips to trackInfo which shows additional info for synths (rj) - - Fixed focus for tempo and signature widgets and patch selector in midi track info (rj) - - Fixed RJ's focus fixes. Now tempo/sig toolbar has proper Smart Focus and works in all related windows. (Tim) - - Removed Smart Focus restart requirement in Settings. Rewrote some silly signal connects. (Tim) -18.04.2012: - - Prefer native GUI for plugins when double clicking in the rack (rj) - - Prefer description instead of label in synth name in track list, it's more descriptive (rj) - - Grayed out "copy plugins" in duplicate track dialog since it's not finished (rj) -17.04.2012: - - Added gcc4.7 patch from Matthias Klose <doko@debian.org> (rj) - - Added -Werror=format-security from Alessio Treglia <alessio@debian.org> (rj) -16.04.2012: - - Fixed some bugs in swedish translation (rj) -14.04.2012: - - Optimize some QByteArray usages and use length() instead of taking strlen(). (Tim) -12.04.2012: - - Add new 'type' column to LADSPA browser, add tooltips to AO, AI CO, CI, IP, ID columns. (Tim) -09.04.2012: - - Feature request: Allow loading of DSSI synths (those with a run*_synth* function) in LADSPA browser. (Tim) -07.04.2012: - - Fixed bug with drawing of song position toolbar (rj) -25.03.2012: - - Added "beautifying" frame to the song position toolbar, hope that looks nicer - for all :) (rj) -24.03.2012: - - Fixed memory leaks in the undo system. Removed unused ModifyTrack action (flo93) - - Swapped usage of oPart and nPart in the undo system. this was completely - braindead: oPart was assigned the nPart_-ctor-parameter and vice versa (flo93) - - Removed unused UndoOp-ctors (flo93) - - Code cleanups in undo.cpp (flo93) - - changed some sharing-menu-debug-messages from debugMsg to heavyDebugMsg (flo93) - - added a copy-ctor to Part which increases the eventlist's refcounter (flo93) - - NPart stores serial number (flo93) - - Changed locale loading to use system setting instead of keyboard setting (rj) -23.03.2012: - - Changed file loading to use .toLocal8Bit instead of .toAscii seems to - fix issues to load files with local chars like åäö in the name (rj) - - Fixed invalid reads/writes/deletes when having the cliplist editor open: - there was a funny mixture of reference-counting smartpointers and normal, - "dumb" pointers, and some pieces of the code relies on the smartpointers - to delete stuff automatically (which was correct), other pieces just deleted - stuff, regardless of the refcount. - now everything using SndFile uses refcounting. HOWEVER this created a MEMORY - LEAK: when recording to a wave track (this creates a SndFile, refcount=1), - then undoing this (this doesn't delete, but only stashes away the part and - so the smart pointer), then opening a new song (this doesn't delete the stashed - away part and so the smart pointer, so refcount never drops to zero) the SndFile - is never deleted. (flo93) - - Made the DidYouKnow dialog actually work, add lines to share/didyouknow.txt (rj) -20.03.2012: - - arranger's part canvas now doesn't display thin slivers for - parts of hidden tracks (flo93) - - Header::write/readStatus now uses the save/restoreState functions, - simplifying the code and storing column widths as well (flo93) - - removed unused and non-working updateTListHeader function (flo93) - - PixmapButton (red LEDs, and Delta Mode): Eat up context menu events. (Tim) - - Class SpinBox, DoubleSpinBox, Dentry: Change to consistent "ctrl-double-click on/off". (Tim) -19.03.2012: - - column state is now stored into the global config, not - into the song file (flo93) - - Song load: Arranger MDI window: Fixed size restoration. (Tim) - In TopWin::readStatus(), if mdisubwin is maximized, restore it before setting pos and height. - - Changed reporting of bad timing a bit to possibly make it clearer what the problem is - and what to do about it (rj) -18.03.2012: - - Delta/absolute mode button: Improved behaviour. (Tim) - - Transport and NoteInfo toolbar positional editors: Fixed not updating when tempo or sig changed. (Tim) - In PosEdit::setValue(), checking different value is not enough. Must check whether resultant msf or mbt values changed. - TODO: updateValue() is now public so it can be called externally but it is not used yet - make NoteInfo and Transport - use it instead of setValue(). -17.03.2012: - - Custom columns can now either affect tick0 or song->cpos() (flo) - - hopefully fixed a bug in the custom columns dialog (flo) -16.03.2012: - - Custom columns now send their controller changes to the device - automatically if appropriate (flo) - - Drum editor: Added missing multiple-note editing. (Tim...) - - Midi editors: Don't allow notes to be added before part. (Caused crash in Drum editor, odd behaviour in Pianoroll.) - - Midi editors: Added "Delta Mode" button to Note Info toolbar. - - Code cleanups in Pianoroll, Drum editor. -15.03.2012: - - Updated swedish translation with help from Cristian Ramos (rj) -10.03.2012: - - Track routing: Fixed duplicate routes: Reverted usage of operation group in Song::addTrack. (Tim) - - Templates: Default routing: Restored default Jack out/in routes in audio.med, synti.med, default.med, monorecord.med. (Tim) - - Switch from LIB_PATH_SUFFIX to LIB_SUFFIX, and from CMAKE_INSTALL_LIBDIR to LIB_INSTALL_DIR in CMakeLists.txt. Still fall - back to CMAKE_INSTALL_LIBDIR if it is specified explicitly instead of LIB_INSTALL_DIR. (Orcan) - - Fix cmake warning in simpledrums when CMAKE_BUILD_TYPE is not set. (Orcan) -09.03.2012: - - Track list: Popup editors: Pre-select text. (Tim) - - Track list channel popup editor: Eat up dbl-clcks if already open. Caused pseudo 'wrapping' if disabled arrows dbl-clicked. (Tim) -08.03.2012: - * Comprehensive focus fixes: (Tim...) - * New: Gui behaviour option: "Smart Focus": All toolbar boxes give focus back to respective canvases. - (Most boxes except Score Velo On/Off changed to StrongFocus, for non-focused wheel support.) - - Focusing + tabbing fixes: Exclusions, tightening of tab sequences. - - !! Most spinboxes now wait until return pressed !! For example the Song Length box. - - PianoRoll toolbar: Fixed auto-repeats - optimized NoteInfo::setDeltaMode(). - - Midi boxes: Fixed Ctrl-click on/off. - - Master Editor: Fixed can't edit if not enabled. Also Transport sig box. - - TracK Info panel: Fixed Scrolling. TODO: Make step sizes reasonable, same as Pianoroll ScrollBox. - TODO: Scroll when tabbing among the Track Info controls ! - - Track List key handling: Fixed TList::moveSelection(). - - Visible Tracks: Drums and Synths: Fixed Track::isVisible(). - - Track List, and Master Editor: Fixed popup editors. Sizing fixes. Use no frames. - - Event List Editor: Fixed not updating when parts modified. - - Pianoroll and Drum Editor: Fixed not updating sometimes ex. moving part past end of song. - (Was returning prematurely from songChanged() coding if they got SC_SOLO.) -23.02.2012: - - Compile fix in pyapi.cpp (Orcan) - - Don't optimize debug builds of simpledrums (Orcan) -14.02.2012: - - added customizable columns to the arranger (flo93) -13.02.2012: - - CMake build system: Added cached variable LIB_PATH_SUFFIX, may be set to 64 so that installed library path is lib64 or whatever. (Tim) -12.02.2012: - - Midi: Force events in play event list to be sent when playing, even if redundant. TODO: Fix sending controllers during seek. (By Tim...) - - Midi revert: MidiPort::setMidiDevice(): Send controllers in song to synths. Synths were not restoring vol for ex. My old bad. - - Fluid: Fixed pitch input: Add 8192. - - Fluid + Fluidsynth + SimpleDrums: ::processEvent(): Don't return true for controllers (why?). Was causing multiple send attempts. - - SimpleDrums: Fixed too-short plugin chooser: In ctor SS_PluginGui rem'd a couple of height-fixing lines. Hm, FIXME - was OK before. - - Midi ports config window: Allow default output channel column to unselect all channels ie. no default output channels at all. -31.01.2012: - - Jack Midi: Added missing midi sync output functions start/stop/SPP etc. (By Tim...) - TODO: Give its own clock, currently it's driven by ALSA clock. TODO: ALSA clock out seems badly broken. - - Jack Midi: Fixed Song Position Pointer sync input larger than 10 bars. - - ALSA: Seek sends wrong CCs. putMidiEvent() not respecting CTRL_PROGRAM and CTRL_PITCH. (Thanks to Dennis Schulmeister). - - Routing popup: Fixed crash with empty ports. - - Jack Midi: Fixed crashes/lockups when 'Use Jack Transport' off. Completely re-wrote Jack dummy tranport sync to behave like Jack. - - Midi:Increased MIDI_FIFO_SIZE to 4096 and MIDI_REC_FIFO_SIZE to 256. - - Midi: Sustain: Fixed inhibit/re-enable on stop/play. Also added during seek to quiet things down. - - Midi: Don't send controllers during seek if part or track muted or off. - - Midi: Send controllers during seek only if a change occurred - but force sending if at position 0, or value exists at current position. - - ALSA Revert: Removed recent MidiAlsaDevice::playEventFifo. Hm, too cautious? - - Midi sync: Removed redundant and too-early 'continue' commands. Audio::startRolling already properly does this when sync 'ready to roll'. - - Midi: Fixed timing error. MEvent::operator<() Put same-time note-ons after controllers so that program comes before notes! (For example). - - Jack Midi: Fixed timing error: Reserve multi-events at same frame-time, NOT at successive frames. (Otherwise nightmare to sort stuff.) - - Midi Revert: Re-installed ALSA sequencer thread SEQM_SEEK and SEQM_STOP, and revert code to call them from audio thread. - TODO: Option "Don't use ALSA midi". Midi thread gets in the way of Jack. But ironically ALSA + long-period Audio timing currently best! - - Midi sync: Song saving: Fixed slight typo saving MMC sync: Was using MRT not MMC. -26.01.2012: - - Fixed crash with drag/drop copying plugins when their gui was open (rj) - - Fixed mid clicking to change aux value (rj) -25.01.2012: - - Fixed some focus stealing that prevented shortcuts from working for Snap dialog and Plugin rack (rj) -24.01.2012: - - Removed QT_USE_QTNSPLUGIN from CMakeLists.txt (rj) -15.01.2012: - - Added instrument definitions for "KORG microSTATION" sent - in by Marko Nikolic (flo) -14.01.2012: - - Added "write topwin state" checkbox (flo) -12.01.2012: - - Added Czech translation from Pavel Fric (rj) -11.01.2012: - - Complain more if timing source isn't good enough (rj) -10.01.2012: - - Store default style so we can do an immediate recall when setting 'keep system style' (rj) -07.01.2012: - - Added choice to keep system GUI style (rj) -07.01.2012: - - Fixed compile errors if not configured for OSC or DSSI. (Tim) -07.01.2012: - - MusE 2.0 release candidate 2 released (rj) -06.01.2012: - - added super-glue feature (flo) -03.01.2012: - - ADDED NEW STYLE DRUM TRACKS: (flo93) - - multiple tracks can be displayed in one editor - their drum sound columns can be reordered, mixed up, hidden. - drumtracks can be grouped by channel, not at all, or maximally - each track owns its own drummap - added drummap-definitions to instrument files (gs and xg.idf) - drumtracks' drummap can be automatically set according to - the currently used patch/program/bank - new-style-drumtracks can ignore muted, hidden or both sounds when - recording - - KNOWN ISSUES: when having multiple drumeditors open, the mute-column - may not work, because another editor is overriding this. - this is not a bug. - - - Global Cut: Fixed crashes with markers. Re-did marker section in structure.cpp:adjustGlobalLists(). (Tim) - TODO: Still get tempo, key, and sig not found warnings. -02.01.2012: - - Fixed drag and drop cloning parts - bad reference count in PartCanvas::moveItem(). (Tim) - - File Open dialog: Start with song data and configuration. - - Don't auto-open ALSA Midi Through device. Fixes "midi write error: Resource temporarily unavailable". -31.12.2011: - - 'Duplicate tracks' route copying now works, including Audio Input/Output Jack routes. (Tim) -30.12.2011: - - Added 'Duplicate tracks' Edit action, and dialog. Post-cleanups. TODO: Copy plugins, fix copying parts. (Tim) - Class Track, and some of it descendants, have fixed copy constructors, and a new assign() method. - Tested copy constructors and the new assign() method using the new duplicate tracks feature: Good so far, + undo/redo. - - Fixed compile errors when configured without OSC. Tested OK. Reported by Philippe Macaire. (Tim) -27.12.2011: - - Fixed some undo/redo/close crashes. TODO Global cut crashes from null Marker. (Tim. All marked p4.0.46) - Fixed some issues with track list and popup 'name edit' and 'channel spinbox'. Added to audio tracks. - REPLACED Undo type ModifyTrack: Two simpler 'ModifyTrackName', 'ModifyTrackChannels' type/struct/functions. - Some work was done in undo/redo and a couple of slight apparent leaks were fixed in evdata.h -21.12.2011: - - Fixed some mixer issues: Very slow updating with large mixer when setting visible tracks for example: Set and check - Style() object name in MusE::loadTheme() so that slow mixer ScrollArea::viewportEvent() is not called every time. (Tim...) - Split strips and amixer into configChanged() and songChanged() handling. Do not fully rebuild mixers upon configChanged(). - Fixed mixer windows raising above others, even briefly: Do not raise mixer windows in MusE::focusInEvent(). - - Fixed bigtime leak: Not destroyed. Give it a parent in MusE::showBigtime(). -20.12.2011: - - Litle break for some polish. Route button icons. Rebuild midi track info ui file - was 3 columns not 2. (Tim) - * Fixed: Hopefully, finally: Non-appearing track info scroll bar. (Tim) - Simple movement of recursive call of sb->setVisible() to end of TLLayout::setGeometry(). - - Audio strip prefader now controls audio. (Tim) -18.12.2011: - * Fixed: Annoying ladspa browser issues. Leak: Dialog was not destroyed. Sorting. Save complete state. (Tim) -17.12.2011: - - Fixed long-time graphics corruption issue: Large areas of desktop erased to background. (Tim...) - Fixed class RoutePopupMenu. Now a subclass of PopupMenu. Changed all usages to 'short-lived' ::exe(), - no more single 'long-life' pointer in class MusE. That should allow multiple instances, using ::popup(). - Also fixed class PopupMenu. Tested all submenu and item destructors - OK, everything destroyed on close. - - Fixed TList::ColorMenu parenting. Pass it a parent from TList::mousePressEvent. - - If Jack is running but no Jack midi devices were found at start, auto-fill with ALSA just to give something. - * Fixed: Some relief from mixer strip and midi track info bloated size. (Tim) - Changed default strip font size from 8 to 7. Changed icon sizing - just let strip layout do its thing, instead of forcing size. - Changed default style sheet to blank. Was causing problems with track info font size. - Fixed mixer: Rebuild mixer upon config font changes. - Re-arranged some font usages. Updated descriptive tooltips on font entry boxes. - Re-claimed font#5 as a 'small bold' font for things like markers. -16.12.2011: - * New: Midi routing matrix! No more clumsy routing menu items. Currently for Midi Track iR and Audio Input iR solo routes. (Tim) -14.12.2011: - - Corrected FSF address in ladspa.h and vam/COPYING. (Orcan) -12.12.2011: - * Improved: Midi ports list now fills automatically at start. (Marked as p4.0.41 Tim...) - An effort to help new users and others. If auto-filling the mid ports proves too much or unpopular, a simple change - will keep them out of the list, yet still auto-create and auto-connect Jack midi devices, which is still better than before. - Even if and when 'set and forget' configuration is added, this initial filling step may be welcome for new users. - NOTE: Virtually impossible to 'auto-pair' together Jack midi inputs and outputs. But I'm working on it, some code in there... - - When opening a song, choosing only 'Song data', without configuration, now does not upset the midi configuration at all, - yet controller data was attempted to be kept - may need to remove that effort. - - Moved start song loading into main.cpp, with helper in app.cpp. Disabled Florian's 'hackish loader', may be fixed now - TO BE TESTED!. - - List only writeable ports in track list output port column and midi track info combo box. - - Jack midi devices now save an additional required rwFlags xml tag. - - ALSA Midi fixes: (Un)subscription errors. Delete our simple port! Unsubscribe from announce port. Ignore SND_SEQ_PORT_CAP_NO_EXPORT - ports like 'qjackctrl' or 'port'. TODO: Possibly auto-assign newly discovered devices to available midi ports, in alsaScanMidiPorts(). - - Hack: "Midi Through" ALSA and Jack devices pushed to end of list, and list sorted, so useful outputs appear first. - - Stopped our own ALSA client from appearing as Jack midi alsa_pcm device. -10.12.2011: - - More improvements to project save dialog. And tries to suggest parent folder if saving existing project. (Tim...) - - Midi ports dialog: Auto dis/connect the stated default channels when selecting a device. -09.12.2011: - - Fixed popup menu behaviour with (nonstandard!) checkable submenus (flo) - - Fixed wrong START_DRAG when clicking on popup-columns (flo) -06.12.2011: - - Fixed drawing of logarithmic values (god how I hate these conversions!..!$%) hopefully... - should be improved by precalulating max and min values (rj) -05.12.2011: - - Complete Spanish translation from Cristian Ramos (rj) -03.12.2011: - * Improved: Project save dialog: Now has quick save as Template. Separate project/result paths shown. Editable project folder. (Tim...) - * Added: Project directory in global settings dialog. - * Added: Untitled project unique names. - - Fixed bug saving compressed files with spaces in name, in filedialog.cpp fileOpen(). - More work in progress... -02.12.2011: - * Added: Project creation dialog now has file type combobox (.med, .med.gz, .med.bz2) (Tim) - * Fixed: Remaining bugs with Header saving and loading (ex track, drum list header). (Tim) - Made two slight fixes in Header::writeStatus and readStatus. Tested thoroughly OK. -01.12.2011: - - Removed global settings User Instruments dir. Now fixed to muse config. Support for old files included. (Tim...) - - Changed: In File Dialog, 'User' initial prepend path changed to muse ./config path. So user files + templates are shown. - - Fixed: Template directory changed from /home/templates to muse config directory. Support for old files included. - - Moved QSocketNotifier from Audio::Audio into MusE::MusE. - - Fixed mixer and main geometry restoration. Moved ahead of doReadGlobalConfig check. - - Work In Progress! More to follow... -28.11.2011: - *Fixed: DSSI synth audio inputs. This means dssi vocoders, samplers etc. should work now. (Tim...) - *Re-write: Fixed audio mixing, meter processing. Audio, and meters, for all mono <-> stereo route combinations work sensibly now. - - Do not apply the track pan or volume to extra synth channels above 2. - - (Re-)fixed valgrind 'invalid read size' in node.cpp, my very-old bad. Moved temp stack buffers to top. (Thnx to Flo) - - Window titles of ladspa and dssi plugins now have track name prefix to help identify them. - - - Added "Unused Devices" menu to the arranger's port popupmenu for rapid device selection (flo) -28.11.2011: - - MusE 2.0 release candidate 1 released (rj) -27.11.2011: - - fixed invalid read problem in node.cpp: replaced the (ab-)use - of a temporary stacked buffer (which was deleted too soon) - by the use of a temporary heap buffer (new[]) (flo) -26.11.2011: - - Added config properties for add-track menu, show all, show only visible and property for making visible what you add (rj) - - Split behaviour and style configuration to two tabs (rj) - - Adding invisible tracks no longer update track-info in arranger (rj) - - clicking the background in tracklist and arranger no longer clear focus (rj) - - moved configuration items for track visibility to global config (rj) - - Added right click quit to channel strips (rj) -25.11.2011: - - fixed segfault when closing and SndFileList had more than 1 entry (flo) - - fixed some mismatched deletes (delete vs delete[]) (flo) -24.11.2011: - - Fixed: xml song loading ignores very large text such as with Hexter-DSSI. Reported by jphaenlin. (Tim) - Changed all local buffers to QByteArray (for unlimited size). Test OK loading/saving large songs + Hexter-DSSI. - - Fixed "Invalid Read/Write"-bug with moving parts past the song's end or past the last track. (flo93) - The problem was: when the song was automatically enlargened / a new track has automatically been - created, the song was update()d, and thus songChanged() was called. Within - songChanged(), the PartCanvas clearDelete()d its items list, deleting every - data pointed to by that list. However, right after that, the current loop's - CItem* is still used (which has just been deleted, that is, invalidated.). - In case the loop will go on, there would be even more similar errors. - Solution: - Added UndoOp::ModifySongLen-action, and used that one for altering song length. - - changed Song::addTrack() to write into operation groups. - adapted all code using Song::addTrack() accordingly - - changed PartCanvas::moveItem() to support whole lists of operations. - - Fixed a small unused-parameter warning (flo) - - Updated broken (but unused) UndoOp::typeName() function (flo) - -23.11.2011: - - Fundamental audio engine fixes/changes together with a variety of other fixes. (Tim...) - - Process track and plugin dssi controls always now, even if off. Fixed problems adjusting/saving gui values. TODO: Dssi when off. - - User is now forbidden to do circular routing. Routing menu items are now disabled according to whether they would cause a loop. - Installed anti-circular routing mechanism, allows processing should a circular route actually exist (old files, bugs, deliberate? etc). - - Fixed jack.cpp: Connecting routes. Some code was not checking if routes were JACK_ROUTE types, leading to errors. - * Fixed: Soloing system problems. Forgot to solo-chain all the way back to a midi track. Also fixed crashes if soloing a circular route. - * Fixed: Aux Tracks. They should 'just work' always now. Required major processing-order changes and routing path support/checking. - NOTE: Cannot use a track's aux sends if the track has an input route path from ANY Aux Track! Aux knobs/labels now DISABLED in that case. -22.11.2011: - - Increased contrast for midi event drawing in parts (rj) -21.11.2011: - - added super-glue feature (flo) -17.11.2011: - - Fixed all arranger/pianoroll/drumedit keyboard scrolling. (Tim) - Changed PartCanvas and EventCanvas ::keyPress() key scrolling sections. Plus custom behavior tweaks in each case. -16.11.2011: - - Ctrl+click or middle button now sets an absolute value for Knobs (as good as possible without advanced arithmetic) (rj) - - Structure operations: Split,Cut,Insert now work on audio tracks. The previous functionality with operating on selected - tracks have been split into separate menu items (rj) -15.11.2011: - - Fixed wacky arranger part selection via KB when 'Move single armed track with selection' set. (Tim) - Arranger::songChanged() was way too liberal, esp calling partsChanged(). Side benefit: Arranger speed-ups. - - Changed internal 'undo' shortcut from ctrl-y to standard shift-ctrl-z. (Tim) -14.11.2011: - - Fixed: Do not clear midi ports upon 'new' (template) or 'import midi'. (Tim) - Enabled some old code with which I had problems before, but that was long before 'clearing' fixes. - Remaining TODOS: 'New' Synth.med template still replaces existing midi ports, and only - the first port appears to be auto-connected to inputs upon import midi. - - fixed ScoreEdit bug: names are removed from the set on close and on delete. (Flo) - - indentation fixes in scoreedit.cpp,h and cobject.cpp (Flo) - - Removed 18.06.2011 experiment. Do not allow Synths to route to midi track inputs. (Tim) - It worked with MESS so far, allowed recording gui control movement. May prove useful - in future, but is a big auto-routing hassle ATM. Sections marked p4.0.35. -13.11.2011: - - ScoreEdit now saves some default init values (flo) - - seems like this fixed some valgrind bugs as well (flo) -12.11.2011: - - fixed "newly created subwins aren't focussed" problem (flo) - - when closing a subwin, automatically another (topmost) subwin - gets activated (flo) - - fixed "non-subwin topwin-states aren't restored when using - 'muse2 songfile.med'. (don't know who, probably Tim) -11.11.2011: - - Fixed all template .med song files. (Tim) -10.11.2011: - - Updated spanish translation by Cristian Ramos (rj) - - Fixed meters not updating upon vertically shrinking arranger. (Tim) - - Fixed TopWin xml errors such as "MusE: unknown tag <topwin [or tool or arranger] > at line xxxx". (Tim) - Used new TopLevelList::findType() in MusE::readToplevels() to find arranger, marker, and cliplist. Was broken ! - So, arranger now remembers its settings (mostly). - TODO: Fix broken default.med file, has serious xml errors. For long time MarkerView hasn't recalled its visibility. -09.11.2011: - - Further to 02.11.2011: Automatically convert old songs to use new 'fluid_synth' name. (Tim...) - - Added enum Synth::Type (MESS_SYNTH, DSSI_SYNTH etc) and used it throughout, ex. in findSynth(), also in song file. - Protects from name conflicts with future MESS, DSSI synths, and simplifies adding future types (say LV2 etc.) - - Simplified populateAddSynth(), made it agnostic. No more hard-coded synth type sorting - uses Synth::Type now. - - Fixed settings synth config lists not updated when 'Remove Instance' clicked. Also now shows the type in the lists. - - Fixed regression: No synthesizer patch names were listed. -07.11.2011: - - fixed restore-window-state bug (flo) - - fixed dialog translation problem (flo) - - Updated spanish translation by Cristian Ramos (rj) -06.11.2011: - - auto-expand fix (flo) - - NoteInfo-toolbar fix (flo) -04.11.2011: - - more valgrind fixes (flo) -02.11.2011: - - Fixed new runtime errors "undefined symbol fluid_synth_cc" and "fluid_synth_set_reverb", seen on Ubuntu 11.10 (Tim). - MusE "fluidsynth.so" module renamed "fluid_synth.so". Error seems due to required cmakelists LINK_FLAGS line, now removed. - Also removed required LINK_FLAGS line in fluid cmakelists. - PLEASE REMOVE THE OLD fluidsynth.so ! Or uninstall muse before installing again. -01.11.2011: - - Fixed Shortcut translations (flo) - - Added a QSplitter to the shortcut dialog (flo) -31.10.2011: - - Translation code fixes and added almost-complete German translation (flo) -28.10.2011: - - Slight fix of midi SMF 1 export. Include meta 0x01 text event comment. (Tim) - - Added Automation header in Song::execMidiAutomationCtlPopup(). - - Code comments cleanup in Song. -27.10.2011: - - Adapt context menu in arranger after what track types are currently visible there - Now it only allows to create the track types which are set to be visible (rj) - - Uninitalized value fixes in ScoreEdit (flo) -26.10.2011: - - Changed visibility of utility tracks so they are not seen by default in arranger (rj) - - Added a default audio connection in default.med (rj) - - More memory access fixes (flo) -24.10.2011: - - Fixed bug #3293339: Midi file export SMF format 0 broken. (Tim) - Removed erroneous extra 2 bytes. Allow metas in SMF0 in MidiFile::writeEvent(). - Fixed very weird timing issue MidiFile::write(). See comments there (hidden problems lurking still?). - Use single MidiFileTrack for SMF0 in MusE::exportMidi(). Added info to export dialog indicating that - SMF 0 grabs the track name and comment from first midi track in arranger. Iterate full tracks list - instead of midis list in MusE::exportMidi(), so that user can rearrange tracks on the fly before exporting. - Some not fully understood useage of meta 0x0F/0x01 text events in MusE::exportMidi(). Hopefully correct... - - Memory access fixes (flo) -22.10.2011: - - Catch return in spin boxes and move focus away (rj) -21.10.2011: - - rename fix (flo) -20.10.2011: - - Added missing triplets in quantisation dialog (rj) -16.10.2011: - - Fixed crashes reloading songs having open editors. Previous memleak fixes revealed some problems. (Tim) - Installed bool TopWin::deleting(). It is set true when closeEvent() is called in any self-deleting TopWins. - Used it to make all such TopWins and their corresponding child canvasses ignore songChanged signals. - Test OK so far, multiple reloads of song with all track types, all windows open. -14.10.2011: - - Fixed keyboard navigation in tracks to work with hidden tracks (rj) -12.10.2011: - - Made the plugins aware of namespaces. (Orcan) -11.10.2011: - - Fixed the build of experimental rhythm generator. (Orcan) -09.10.2011: - - Fixed track list midi port popup menu - too many ports listed. Separated empty ports into submenu. (Tim) -06.10.2011: - - SigEdit, up/down arrow in denominator only moves between powers of two (decreased thick headedness), - numerator is no longer validated (rj) - - Hopefully last big namespace update. The only namespaces in use are - o MusEGlobal: For global variables - o MusECore: For non-gui classes - o MusEGui: For gui classes - One or two more namespaces will be added for the stuff outside the main tree (synti, al, etc) (Orcan) - - Fixed python control add-on building. Left it off by default. (Orcan) -05.10.2011: - - SigEdit, up/down arrow in denominator only moves between powers of two, 2,4,8...128 (rj) -04.10.2011: - - More fixes to SigEdit, close on enter, navigate with arrows and / between values, fixed background color, focus (rj) -02.10.2011: - - SigEdit reworked to use two spinboxes, plan on adding Enter/Return detection so the widget will close when - Enter/Return is pressed (rj) - - Fixed HUGE massive memory leaks in all things using CItemList, and SndFile, dssi, fluidsynth and other huge leaks. (Tim) - Addition of 'delete' in places hopefully does not introduce any new unforseen instabilities. - Result: A song with 20 wave/midi tracks and several dssi, vst and fluidsynths, which leaked HUNDREDS of megabytes, - now only leaks about 2 megabytes. TODO: Still some funny business with ALSA, and dssi scanning. - Post-fix LEAK SUMMARY: definitely lost: 259,863 bytes in 356 blocks indirectly lost: 611,874 bytes in 22,834 blocks - possibly lost: 180,508 bytes in 5,211 blocks still reachable: 1,061,068 bytes in 10,522 blocks -30.09.2011: - - Fixed long-standing problem with themes (Ia Ora / Bespin etc) and MusE button icons. Some themes don't support - multiple-pixmap icons. So mute/solo/rec/stereo/thru always showed the same icon. Replaced w single pm icons. (Tim) - - Fixed midi strip blank automation box at bottom, too high. (Tim) - - Gradient for strip labels. (Hm, too pastel? Had to go top-high. Maybe change colours again Orcan, he he...) (Tim) - - Repaired some non-virtual paintEvent(), resizeEvent(), event() etc. (Tim) -28.09.2011: - - Optimization: Orcan's meters are insanely lightning-fast now. (Tim) - TODO: Fix very slight oversize at bottom upon first showing of mixer. Workaround: Simply resize vertically. - TODO: Redo the VerticalMeter (actually Horz) drawing, else should be easy Horz integration into existing Meter class. -21.09.2011: - - Drawing speed boosts in part canvas. TODO Fix slight dashed border shifting. Do 'hidden' polygons (Tim) - - Working on meter speed. WIP. Can enable by commenting out #define _USE_NEW_METERS in meter.cpp (Tim) - Combined with part canvas fixes, meter work so far makes MusE2 near-Muse1 speed when playing big songs - with many active mixer strip meters. -20.09.2011: - - Revert the change in coloring of the selected track in tlist. Making full transpaency optional - requires more substantial changes. (Orcan) - - Update the default config file with the same defaults as in gconfig.cpp. Question: Why do we - have defaults defined in multiple places? (Orcan) -17.09.2011: - - Minor namespace fix in osc.cpp. (Orcan) -16.09.2011: - - Fixed errors when ladspa plugins not found while loading. (Tim) - - Fixed forgotten bool to pointer conversion in some calls to song::addTrack, createSynthI. (Tim) -14.09.2011: - - added sane configuration defaults to muse (flo93) - - several minor fixes (flo93) - - added MDI-like and borland-like user interface (flo93) - - improved pasting, added dialogs, added "copy in range", - changed shortcut keys (flo93) - - New namespaces MusEArranger and MusEMixer. (Orcan) - - Updated default track colors on arranger. Indicate the selected track with a gradient instead of a - separate color. (Orcan) - - moved colorRect() and get_paste_len() into utils.cpp. (Orcan) - - Updated default colors of transport handles, bigtime foreground, waveedit background, track labels. - Made them more pastelish, easier on eyes. (Orcan) - - Made horizontal alignment of meter and slider in mstrip consistent with in astrip. (Orcan) -13.09.2011: - *Added: You can now insert new tracks instead of always at the track list end. (Tim) - If main menu 'Add track': Inserts before currently selected track, else adds at end. - If Track List right-click existing Track Name: New 'Insert track' menu inserts before clicked track. - If Track List right-click on empty space, or Mixer 'Create': Adds at end, as usual. - - Fixed track selection bug: Track info panel not clearing when clicking empty area. (Tim) - Added an emit selectionChanged(0) in TList::mousePressEvent. - - Observed: Ancient bug: Track Info doesn't change if selecting multiple tracks in reverse order. - Will need to be fixed if/when adding 'multiple track global editing'. - - Made Slider::sizeHint() a const function again, so that the plugin window respects its sizeHint. (Orcan) - - Explicitly disabled the scale support in Slider since it wasn't really in use for a while. (Orcan) -11.09.2011: - - Rewrote the rounding function for efficientcy. Moved the function into utils.cpp since it is written - for general purpose. (Orcan) - - The rounding in the meter is done in paintEvent now. I also enabled Antialiasing to make the corners - look nicer. Therefore I had to comment out Qt::WA_OpaquePaintEvent attributes in the meter and the - verticalmeter for now. Some testing needed. (Orcan) - - Plugin slider color codes are now generated from plugin ID numbers. (Orcan) - - Active plugins are colored in green in the rack. (Orcan) -09.09.2011: - - Removed sending of SEQM_ADD_TRACK, SEQM_REMOVE_TRACK, SEQM_CHANGE_TRACK, SEQM_REMOVE_PART, and - SEQM_CHANGE_PART to ALSA midi thread (which waits) from inside Audio::processMsg. - Replaced with hand-offs to Song::processMsg. TODO: SEQM_SET_TRACK_OUT_CHAN etc. (Tim) - - MidiDevice play and stuck event lists no longer directly accessible from outside - - replaced with ::addScheduledEvent and ::addStuckNote. (Tim) - - Installed a ring buffer for ALSA MidiDevice play/stuck notes event lists, filled by ::addScheduledEvent - and ::addStuckNote, because ALSA midi is processed in a thread other than audio. (Tim) - TODO: processMidi could do stuck notes better by bypassing their insertion in the play event list, - also applies to seek/stop handler block, but I'm not sure about the time comparisons. - - Removed MidiSeq::msgSeek and ::msgStop, and removed calls from Audio::seek and ::stopRolling. (Tim) - Removed Audio::msgShowInstrumentGui and ::msgShowInstrumentNativeGui. - - Some more separation of ALSA and Jack Midi, one step closer to configurable choice of either/or. (Tim) - - Massive cleanup of audio, midi, mididev, alsamidi, jackmidi, dssi modules. Moved some stuff from - Audio::processMidi into MidiDevice. (Tim) - - Test OK here so far, with stress files and complete pre-existing songs, ALSA, Jack, and Synth midi. (Tim) - TODO: Restoration of sustain upon play seems broken for a while - try putEvent instead of addScheduledEvent - in Audio::startRolling(). - - Cleaned some namespace change artifacts. Fixed signal/slot mechanism related to bigtime, pianoroll, - drumedit. Fixed config file corruption. (Orcan) - - Made plugin slider colors fancy, experimental. (Orcan) -08.09.2011: - - Finished namespace MusEWidget. Added namespaces MusEUtil, MusEDialog. (Orcan) -07.09.2011: - - Introducing namespaces. So far, we have MusEApp, MusEGlobal, MusEConfig, and I just started - MusEWidget. zynaddsubfx does not crash anymore. (Orcan) -06.09.2011: - - Add licensing information (GPLv2 or later) to source code files. Update FSF mailing address - to the most recent one in the existing copyright notices. (Orcan) -05.09.2011: - - Remodel the EffectRack. There is still an ongoing issue with the minimumSizeHint, which I worked - around by adding a fixed offset. (Orcan) - - Fall back to using Meter's own size functions rather than the event rectangle's size functions - in paintEvent(). The latter caused corruption when toggling mono/stereo. (Orcan) -04.09.2011: - - Remodel the Slider (Orcan) - - moved and changed muse.pro file (flo93) - - added update_pro.sh and update_translations.sh (flo93) - - added paste dialog (flo93) - - updated translations (flo93) - - moved stuff from functions.cpp out to dialogs.cpp (flo93) - - fixed behaviour of movePartsTotheRight(): parts which - begin at "start of move" aren't expanded, but moved now (flo93) -01.09.2011: - - Fixed tough old skeleton: Selecting 'previous/next event' in Song::execAutomationCtlPopup now moves cursor - with exact frame resolution, all the way through via proper song->setPos > audio->msgSeek rather than - song->setPos > set pos[0] etc. There was a bug that it got stuck on too-close points on the graphs. (Tim) - - Reverted controls to full speed (again): Removed too-cautious msgSetVolume, msgSetPan, msgSetPluginCtrlVal. (Tim) - Reviewing some other possibly unneeded too-cautious msgXXX audio messages :) - TODO: Fix current automation values (the 'off' value). - - Removed unused PanKnob from mixer CMakeLists. (Tim) -29.08.2011: - - Fixed Robert's fixes (flo93) - - Fixed audio automation graph editing. And now 'snaps' to discrete integer or bool types. (Tim p4.0.32) - All control movements should update display now. Also slightly changed behaviour of Ctrl class. - TODO: Fix some painting corruption, improve discrete display, add transparency etc. etc. - - Applied compilation patch to rhythmbase.ui by Jean-Damien Durand. (Tim) -28.08.2011: - - Fixed wierd column expansion for [rec] column by removing autoexpand of the last column. Still - something fishy with moving columns (rj) -27.08.2011: - - Changed mousewheel behaviour, vertical scrolling is default and horizontal scrolling (shift) is reversed (rj) - - Added fullscreen shortcut to all editors which have full screen action (rj) - - Part text editor now closes when focus is lost (rj) -17.08.2011: - - Convert some Qt3 style coding in ComboBox to Qt4 in terms of menu entry handling. (Orcan) - - Add mouse wheel support to ComboBox. (Orcan) - - Fix AutoType indicator coloring. (Orcan) -16.08.2011: - - More drawing fixes, improved accuracy (grids, timescales, edges, markers guaranteed to align now). (Tim p4.0.30) - Much drawing changed to device (pixel) space instead of virtual space, for accuracy. - - Fixed display of audio automation graphs. (But not editing). (Tim) - - Fixed unreadable Master Edit tempo scale (on left side), and added toolbar saving and restoring. (Tim p4.0.31) -15.08.2011: - - Remodel the Meter and the VerticalMeter (Orcan) -13.08.2011: - - Make the shininess of the Knob ring a little smarter (Orcan) -05.08.2011: - - Parts having hidden events now drawn using 'jagged' ends and special white edges. (Tim p4.0.29) - - Improved border drawing guaranteed to show L/R touching part borders. TODO: Top and bottom borders. (Tim) - - Muted parts now show names and events. Filled with a special brush pattern for easy recognition. (Tim) - - Huge changes to PartCanvas::drawItem(). And to all View::XmapXXX methods for better accuracy. (Tim) - - Changed bool Part::hasHiddenNotes() to int Part::hasHiddenEvents(). Added int Part::cachedHasHiddenEvents(). (Tim) -02.08.2011: - - Changed behaviour of part clones (flo93) - -31.07.2011: - - Remodel the Knob (Orcan) - -28.07.2011: - - speeded up structural operations (flo93) - - fixed several heavy bugs in structural operations: (flo93) - - global insert freezed muse - - global cut and global insert behaved wrong on parts not - starting at the zeroth tick - - fixed upper_bound vs. lower_bound issues - - clicking below the track list now deselects all tracks (flo93) - - moved checkRegionNotNull() where it belongs (flo93) -14.07.2011: - - Fixed loading of old songs with synths. (Tim) - Added static keyword to array in each synth's oldMidiStateHeader() member. -27.06.2011: - - Massively speeded up muse by using operation groups (flo93) - - Changed behaviour of middle click in all canvases to "delete" (flo93) -21.06.2011: - - Fixed wave editor position and marker drawing corruption. (Tim) - - Updated Yamaha m06 IDF file to version 4 by Geoff King. (Tim) -18.06.2011: - (By Tim. Marked as p4.0.27) - - Major work, all synthesizers. Sysexes now wrapped in a header MFG ID (0x7c) + synth ID. Fixed leaks, crashes. - Each MESS synth (or just the single DSSI host) now has a unique ID, used in the sysex header. - TODOS: Finish DeicsOnze::getControllerInfo. Fix Fluid - must set to High Bank #2 to see any patch names! - *NOTE: Some data will now change upon saving a song! Compatibility with old songs is built-in and transparent. - Ask Tim for details. - *Feature: SimpleDrums now FULLY functional including effects. Support old songs + MusE-1 songs, tested OK. - - Fluid soft synth now remembers and displays the font name. - - Fixed midi TrackInfo patch name not initializing at position 0 even when value stored, with FluidSynth (possibly others). - - Fixed some leaks, lack of dtors cleanup call when repeatedly loading songs. Should be a weee bit more stable now. - - EXPERIMENT: Midi track input routes can now come from any of the synthesizers! This is a WIP and might change or disappear. -06.06.2011: - - removed (unused) support for disabling the keymap (flo93) -04.06.2011: - - fixed regression with switching ctrl/shift when manipulating - items in canvas. drag+shift limits movement, drag+ctrl copies (rj) - - changed behaviour of middle click in all canvases to "delete" (flo93) -02.06.2011: - - the score editor now allows batch-movements, that is, - you can transpose or move the whole selection and not - only single notes (flo93) - - the functions now return as boolean, if they have triggered - undo (flo93) - - applied another patch from WillyFoobar: moved Q_OBJECT - to the top of each class definition, where it belongs (flo93) -30.05.2011: - - implemented cut,copy'n'paste and the "select foo" entries in the score editor (flo93) - - added select_foo() functions to functions.cpp (flo93) - - removed "midi in" button from score editor (flo93) - - added a spinbox to the arranger's "Ch:" column (flo93) -29.05.2011: - - moved cut,copy'n'paste to functions.cpp, removed unneccessary duplication (flo93) - - changed behaviour of paste: now the pasted, not the original notes are selected (flo93) -28.05.2011: - - fixed dragging and resizing of track header, also changed default index of new - sections, they should appear last now (rj) - - fixed the buggy bugfix of the "invalid Part*s" bug (flo93) -27.05.2011: - - fixed bug in scoreeditor: invalid Part*s are now not used any more (flo93) - - applied some hunks of the patch sent in by WillyFoobar (flo93) -25.05.2011: - - Added midiin and steprec buttons again (flo93) - - Added step-rec-support for drum edit and score edit (flo93) - - put step-rec-stuff into its own class (flo93) - - moved clefTypes out of scoreedit.h to prevent compile-horror (flo93) - - Declared struct Route as QMetaType to make it a QVariant type. (Tim) - - Moved: All routing popup menu stuff from app, astrip, mstrip, mtrackinfo into - new class RoutePopupMenu, *massively* cleaning up those 4 files. - Used the new Route QVariant type as action data instead of integers. - - Moved MenuTitleItem definitions from astrip.cpp into it's own menutitleitem.cpp (Tim) - - Added to settings: "Make popup menus stay open. Otherwise hold Ctrl." (Tim) - To avoid showing new users non-standard behaviour, the default is off! -24.05.2011: - - Awl::PitchEdit now can be set with the musical keyboard (flo93) - - fixed y-stretch (flo93) - - cleaned up step-rec and midi-in buttons and stuff (flo93) - - steprec now supports a "insert rest" key, which can be set (flo93) - under Midi -> Input Plugins -> Remote Control - - song->midiNote now also delivers note off events (flo93) - - fixed pitch-spinbox (flo93) - - removed auto-resize from tracklist-header (rj) - - removed channel from track list for a drum track and grayed it out in track info (rj) - - fixed samplerate warning from templates (rj) -23.05.2011: (all changes made by flo93, except one) - Function-related changes: - - made all the stuff in the "functions" menu global - - added crescendo, legato functions, improved erase function - - removed unneccessary _to and _quant* - stuff from piano roll and drum edit - this also involved changing the Toolbar1 - - changed behaviour for step-recording: the note-length is now the "raster"- - value instead of the "quant"-value - - changed behaviour for scripts: the "quant"-parameter they get isn't the - quant-combo's setting, but the snap-combo's now - - removed unneccessary short cuts: SHRT_OVER_QUANTIZE etc. instead added - SHRT_QUANTIZE - - Score-Editor-related changes: - - using the proper AL::raster functions in the score editor - - added support for selections to the score editor - - distance between staves is now automatically increased if neccessary - - fixed "change pitch freezes scoreeditor"-bug - - added clef-combobox to midi tracks (rj and flo) - - don't install the *.mf files any more - - added a modified MTScale to the score editor - - Other Stuff: - - speeded up importing midi massively - - when step-recording, chords can now be entered with only the musical keyboard - - swapped ctrl and shift behaviour to make muse accord to standards - - toolbar states are now saved - - improved "cakewalk" mode for arranger: added y-stretch and drawing some controllers - - added line tool to drum editor - - added "reorder list" function to drum roll - - changed ctrl-edit's behaviour when control key is pressed - -20.05.2011: - - Popup menus: If stay-open mode, space triggers item and double-click simulates return (closing). (Tim) -19.05.2011: - * Feature: Popup menus now auto-scroll if too large to fit on desktop. (p4.0.25 Tim) - Added auto-scroll to my class PopupMenu. Added selectable stay-open. TODO: Use it more, where needed. - - Changed midi track info patch popup behaviour. Now stays open for auditioning patches. (Tim) - - Changed editor 'ctrl' controller popups. Split instrument/other (+ common controls!) + show ctrl numbers. (Tim) - TODO: Add custom (R)NRPN dialog to 'other' section. -15.05.2011: - - Changed mouse wheel behaviour in graphical editors except the score editor (rj) - * wheel scrolls left-right - * shift+wheel scrolls up-down - * control+wheel zooms horizontally - TODO: - - score editor - - zoom to where the mouse is located -14.05.2011: - - Fixed problem with project save dialog missing a forward slash '/'. (Tim) - ~/.config was being polluted with wrong folders. Fixed ProjectCreateImpl::updateDirectoryPath(). -13.05.2011: - - New spanish translation from Cristian Ramos (rj) - - Added dialog to remove unused wave files (rj) - - Changed default imported midi song type to GM. (Tim) - - Added GM drums patch in MidiInstrument::populatePatchPopup() for GM songs on ch 10. (Tim) -12.05.2011: - - Changed template song "default.med" song type from NO to GM, to help new users. (Tim) -10.05.2011: - - Added general settings audio item: Minimum control process period 1-2048, default 64. Test OK. (Tim) - Adjusts minimum allowable number of samples in a LADSPA or DSSI run, ie control 'smoothness'. - Still TODO: AudioTrack controllers contribution. - - Added Yamaha Mo6 instrument file by Geoff King gsking1 A T gmail D O T com. (Tim) -08.05.2011: - - Draw event canvas notes if they extend past part end. (Tim) - - Added checkbox to select if songinfo should be displayed on song start (rj) - - fixups to structure functions, now inserts/cuts markers, and master track events with undo (rj) -06.05.2011: - - MusE 2.0beta2 released (rj) - - Added Yamaha-CS1x.idf instrument from Ernie Rymer <ethylene77 A T yahoo D O T com> Thanks! (Tim) - Turned off executable permissions on some others. -05.05.2011: - - Fixed regression: Plugins would not restore saved control state when loading song. (Tim) -04.05.2011: - - Fixed meter drawing for zero values in feedback parameters to plugin guis (rj) -02.05.2011: - - MusE 2.0beta released (rj) -01.05.2011: - - More fixes, improvements to ladspa and dssi processing, control responsiveness, of 25.04.2011. (Tim) - Timestamp control ring buffer items with linear Audio::curFrame() instead of circular Audio::timestamp(). - Added Audio::curSyncFrame(), used it in process routines to subtract from timestamp. - All effect/synth generic/native gui controls should be quick now. - - Dssi synths respond to Audio track controller graphs now. - Still TODO: Make Audio track controllers full-speed (like the controls), they are still once per period. - Do same for midi->ladspa controller code. -28.04.2011: - - More separation of Alsa and Jack midi processing. Possible fix for crash report by Geoff B. (p4.0.22 Tim) - Added MidiDevice::handleStop(), ::handleSeek(). Split processing among MidiSeq::processStop, ::processSeek - and Audio::stopRolling, ::seek. Also some sustain resetting code and midi sync code was moved into - these two new MidiDevice methods. - TODO: There is more separation to be done. Hopefully it makes MusE more stable and timing-proper. - - Small fix to scoredit in color_image(). Use bytesPerLine() * height() for older Qt. Test OK. (Tim) - - Fix to Robert's DssiSynthIF::paramOut(). Call getParameterOut(). (Tim) - - Changed all plugin and dssi module's 'unsigned' usage to 'unsigned long' for more consistency. (Tim) - - fixed multiple connects in master list editor and some cleanups suggested by WillyFooBar (rj) -27.04.2011: - - added first version feedback parameters for plugins (rj) - - merged score edit branch into trunk (flo) -25.04.2011: - - added a songChanged at the end of clear when loading a new song, intended effect was to - clear GUI before loading new song to fix some nasty crashes, seems to work (rj) - - Overhaul plugin.cpp/h: Fix all float <-> double and int <-> unsigned usages. (p4.0.21 Tim) - - Improved ladspa and dssi controller responsiveness even with large audio buffer size. (Tim) - Implemented variable run-lengths for frame-accurate controller processing. - Improved volume, pan, and plugin control responsiveness - used track->setPluginCtrlVal() - instead of audio->msgSetPluginCtrlVal() which waits until next audio process. - Work in progress! Still not complete yet. Please bear with me. -24.04.2011: - - Improved master list editor editing of keys, dropdown should not 'stay behind' anymore (rj) -21.04.2011: - - Fixed drag&drop plugin instantantiation (again), was using a string pointer to private data - now copies the data before use (rj) -19.04.2011: - - Added undo/redo to master list editor for key editing, should implicitly - mean that SC_KEY is emitted to detect song change (not tested) (rj) - - fixed bug with undo not working for first signature event (rj) -16.04.2011: - - Added KeyList for keeping key change events and ability to edit it in - master list editor (rj) - - fixed stuff in master list editor (rj) - * editing tempo signature is now atleast working - * editing time position is now atleast working - * double clicking a line moves the playpointer to this position if we are not playing - * changed adding tempo/sig/key so they pick the postion from the play pointer instead - of just incrementing the time position, I can't fathom when that would be preferrable - (if there is a time, I'm sure someone will let me know :) ) - - song changed not implemented yet - - undo/redo is not implemented - - Fixed crash in dssihost.cpp - my bad from recent p4.0.20 changes. (Tim) - - Added destructors to sigmap and tempomap. Test OK. (Tim) -15.04.2011: - - And while we're at it... Invert drum track 'slivers' in arranger parts. (Tim) - - Move part name text to bottom to accommodate drum 'slivers'. - Use lowest gradient colour from new gGradientFromQColor(), to determine whether to invert. -14.04.2011: - - Fixed notes 'sliver' drawing in arranger midi parts. Invert if too dark. (Tim) - - Gave arranger part name text drawing a shadow to help contrast with drawn events. - Also moved part name text out of the way, to top of part. - - Removed DSSI gui QProcess kill timers. In Qt4 they can only be used that way with threads started with QThread. - Kill is not nice anyway. On terminate, gui may prompt user to save work etc. App should check at close - if all these guis closed and ask to abort closing, or kill the guis, or leave them alone. - - Improved dark part colour gradients. Added gGradientFromQColor() in widgets/utils.cpp and called from PartCanvas draw. -12.04.2011: - - Another fix for FLAM GUI controls - 300ms delay before sending control values in PluginI::oscUpdate(). (Tim) - Good enough? How to make sure (any) gui is really ready? -11.04.2011: - - Possible fix for FLAM GUI controls - send current control values in PluginI::oscUpdate().(Tim) -10.04.2011: - * Added: Expanded all routing choices: Synth to Wave track, Wave track to Wave track etc. (Tim) - * Added: DSSI synths can now show generic LADSPA GUI as well as native. (Tim p4.0.20) - WIP: Controllers not finished + maybe need a chooser for which ones (of possibly 1000's) are shown. - I reserved an Audio track controller index of 9 for them. If we ever decide to increase the number - of rack plugins, that gives us room for 8 maximum, for now. (But increasing the maximum number - of controllers would mean altering the list structure, requiring a bump-up of file version.) - - Dummy audio: Fixed lockups, or crash at line: "while (drvPtr->cmdQueue.size())" in dummy loop. (Tim) - Replaced loop code with with muse_qt4_evolution's (usleep-based instead of timer). - TODO: Try subtracting process time from sleep time for more accuracy. - TODO: Use a better sleep routine - usleep may be have terrible resolution in some cases. -09.04.2011: - - No more sleep icon when cancelling a quit operation (rj) - - added Ctrl+Shift+LeftMouseButton to add entire rows to selection in all canvas editors (rj) -01.04.2011: - - Fixed custom LADSPA DSSI GUI support. Tested OK with FLAM. Thanks to Luis Garrido for help. (Tim) -31.03.2011: - * Feature: Support for custom LADSPA DSSI GUIs, such as those generated by FLAM. (p4.0.19 Tim) - - Initial support. TODO: Refine how a particular UI file is chosen - uses first one found for now. - Also may need to support multiple choices if multiple lib-level and/or plugin-level UIs are found. -27.03.2011: - - Fixed end/off-screen selections not being drawn in midi controller graphs. (Tim) - - Reverted Midi Track Info ui layout more or less to pre- Mar 5, with some improvements. (Tim) - - Added: placeholder for Score editor (rj) - - Reclaim some screen real estate. Set zero margin and spacing in ScrollScale constructor. (Tim) - - Fixed midi controller graphs' velocity items selections. (Tim) -24.03.2011: - - Fixed: Problems with midi event list editor. (p4.0.18 Tim) - For ex. problems selecting items while pianroll open. Changed ListEdit::songChanged(). - - Fixed: Some problems drawing/editing on pianoroll controller graphs. Also added drawing speed-ups. (Tim) - - Added: Pianoroll controller graph items can now be selected/highlighted. Sync'd with midi event list editor. (Tim) - Just a step towards better editing of controller graphs. WIP (No copy/cut/paste/move yet.) -16.03.2011: - - Added: Midi events drawing while recording (rj) - - Fixed, hopefully, MESS synths sometimes being silent (rj) -12.03.2011: - - Cursor mode in drum editor should be usable now (rj) - Changes: - * delete current event with delete - * change edit step size on toolbar and using 0 and 9 - Try setting step size to 16 with snap 16, place cursor on the first beat for kickdrum - hold down 'b' to add all kickdrums. - Now move to snare at position 8 hold down 'b' again. - A basic beat should now be entered kick/snare/kick/snare - * auto scrolling of view when event is outside view - * move current event as with standard event operations -10.03.2011: - - Added: Say hello to 'CURSOR MODE' in drum editor (rj) - the idea is to edit drums more like a mod tracker, doing all from the keyboard. - shortcuts defined for entering cursor mode (U) and V,B,N,M for entering notes. - TODO: Step parameter, auto scrolling, mouse integration and more - - color tweaks for wave tracks in arranger (rj) -07.03.2011: - - draw gradients in arranger (rj) -06.03.2011: - - added simple part drawing while recording, does not draw events or waveform (rj) -05.03.2011: - - Store toolbuttons in song file (rj) - - Fixed issue with opening editors (rj) - - Zoom shortcuts in arranger (rj) - - detect samplerate and warn if samplerate isn't same in song and system (rj) - - adjust columns and store size of shortcut dialog (rj) - - Fixed up some missing keyboard accelerators for menus (rj) -01.03.2011: - - Added feature to show/hide track-types from arranger, this far only with toolbuttons - and no persistent storage (rj) - - restore window geometry for Midi configuration dialog (rj) -28.02.2011: - - Added progress dialog for loading projects (rj) - - Aligned meters on mixer strip (rj) -27.02.2011: - - Fixed piano roll controller graph text drawing (finally!). (Tim) - - Fixed crashes in drag & drop for plugins and drag presets from outside muse into a plugin (rj) - - Support for multiple drops of files to arranger, e.g easy import of a bunch of wave files (rj) - - Added some missing Qt headers, found by Flo on Debian Lenny. (Tim) -26.02.2011: - - Fixed some piano roll controller graph drawing issues. (Tim) - Draw velocities on top of grid, but draw non-velocity items behind grid. -24.02.2011: - - Improved default midi auto-connections. (Tim p4.0.17) - Midi ports list default input routes column now shows 'all' by default. - Improved and fixed default input and output routes columns. - With those two columns' popup menus, users can now apply defaults to all existing tracks. - - Fixed Organ synth crashing. Added setupUi(this) in OrganGui::OrganGui(). (Tim) - - Fixed synth devices should not be listed as soloing chain popup items. (Tim) -18.02.2011: - - Disable saveAs dialog for rec when project dialog isn't used (rj) - - changed the default setting for move single rec with track, default is to NOT move (rj) - - fixed (hopefully) bug in shortcut editor, global shortcuts were not always - taken into account when checking if a shortcut was in use (rj) - - added shortcut F for linedraw, applicable to automation drawing in arranger and pianoroll (rj) -15.02.2011: - - Automation fixes, better detection, not perfect (rj) -14.02.2011: - - Fixed midi track info panel layout and spacing. Should be much better now. (Tim) - - Added patch to remove warnings from WillyFoobar (rj) - - Fixes to graphical automation (rj) - * select color in menu - * offset bug, can now edit automation although it's scrolled down - TODO redrawing issues when using slider automation for instance. - - mixer slider now updates canvas to get automation updated (rj) -13.02.2011: - - restore toolbar locations for main window and editors (rj) - - fixed some layout issues in general settings (rj) - - removed window geometry from default template, TODO add a menu option for creating - templates, which might not contain certain types of data, including geometry (rj) - - fixed bug if jack zombifies during project load which led to a crash (rj) - - Fixed MusE failing with non-RT kernel. Now falls back to normal 'OTHER' scheduling. (Tim p4.0.16) - - Fixed dummy audio thread not running FIFO with RT kernel - set PTHREAD_EXPLICIT_SCHED. (Tim p4.0.16) -10.02.2011: - - added cut/copy/paste and keyboard shortcuts to wave editor (rj) -09.02.2011: - - fixed regression with Bounce to File and Bounce to Track (rj) - [[[ By Tim. Marked as p4.0.15 ... - - Removed MidiDevice::nextPlayEvent, and instead of erasing 'already played events' at top of - Audio::processMidi(), let each device erase played events immediately after playing them. - Still a bit uneasy with this one, but nextPlayEvent was causing some problems. - This required forced event erasure, if the track is off, in SynthI::preProcessAlways(), - which may need more tweaking for other non-processed circumstances. - - Added MidiDevice::putEventWithRetry() which will wait and retry sending an event. - So far it is only used in MidiPort::setMidiDevice(), which runs in the GUI thread where - it can wait a bit. - - Increased playback MidiFifo size from 512 to 2100, to accommodate large block sends, - such as in MidiInstrument::reset() which sends 2048 events at once. - Created new recording MidiRecFifo with reduced size of 160 instead of previous 512. - Replaced SynthI::putFifo and MidiJackDevice::eventFifo with unified MidiDevice::eventFifo. - TODO: Allow ALSA devices to also make use of it, in case events cannot be delivered. - - Added a timestamp to OscControlFifo events. To be used for better, faster OSC processing - TODO. - - Fixed DSSI processing timing in DssiSynthIF::getData(). Should be much better now, tested OK. - - Fixed Jack Midi 'lost event' messages due to full buffers. Now it waits until next cycle if buffer is full. - Slight mod: SysEx events forced to be lost, since it is most likely that the sysex is too big and Jack Midi - could never allocate enough space for it, meaning the event would linger around forever attempting to - be sent, tying up other events. ]]] -08.02.2011: - - made muse compilable under gcc-4.6. ptrdiff_t type requires inclusion of cstddef. (Orcan) -31.01.2011: - - added cmake option (-DMODULES_BUILD_STATIC=ON) to build the internal modules - statically. It should be possible to run muse from the build tree. (Orcan) - - Moved -fPIC to the global build flags. (Orcan) -26.01.2011: - - moved automation lines ontop of parts (rj) - - fixes to automation editing, still many bugs though (rj) -21.01.2011: - - Added: graphical editing of automation, also now stores which parameters are visible (rj) - Edit with new automation tool in arranger, to create new points hold down ctrl. - TODO: Easy selection of colors, create new points need improvement, and probably a - bunch of bugs, drawing does not always work for instance, and some cleaning -17.01.2011: - - fixed: panic button (rj) - - fixed: initialization crash when loading a new project (rj) -15.01.2011: - - fixed: bug were wave track appeared to be rec enabled but no file was created. (rj) - - made create project dialog optional, also some minor tweaks to the dialog (rj) - - -09.01.2011: - - These changes marked as p4.0.14: - - Applied aux send fix AudioTrack::writeProperties() by Remon. Thanks. (Tim) - - Fixed very slow midi trackinfo property adjustments with mixer shown. In AudioMixerApp::songChanged(). (Tim) - * Feature!: Complete soloing system (after 4 years). Support chaining Midi Port/Audio Out -> Audio In. (Tim) - Click on audio strip iR, or midi strip oR, or midi track info oR buttons to see new additions. - Tested thoroughly, but of course this major change needs wider testing. - TODO TODO: Fix trackinfo width (a minor button placement gui issue). - * Some tweaks for automation viewing, more to do. (rj) -04.01.2011: - - Added saving and restoring of pianoroll trackinfo h-splitter state. (Tim) - - Fixed multiple velocity controllers appearing on song reload. Tested OK. (Tim) - - Fixed arranger trackinfo widgets sizing - were allowed to shrink vertically. (Tim) - TODO: Fix trackinfo scrollbar not showing at right time. - - Replace all QWidget::setShown() calls with setVisible(). (Tim) - It's supposed to be a Qt3 function, but still supported. - - Enabled displaying of audio automation on tracks (rj) - - Added right-click on track ARM buttons, now enables/disables all tracks of it's kind (rj) -02.01.2011: - - Fixed arranger focussing problems again. (Tim) - Scratch setFocusProxy() fix of 31.12. Gave MusE a keyPress handler and pass it on to canvas. - - Fixed transport +/- position snapping. Works globally now too. (Tim) - Moves by, and snaps to, snap setting of either an editor, or globally to arranger by default. - - Added transport position "Shift + +/-" keys, for no snapping. (Tim) - - Removed (hopefully) the last bits of Qt3support functions from .ui files. (Orcan) - - fixed patch loading for deicsonze and reverted to it's standard colortheme (rj) -31.12.2010: - - Possible fix for arranger focussing problems. (Tim) - Added parent->setFocusProxy(canvas) just after canvas created. - Also added to pianoroll. - - Added shadow behind the wallpaper titles for easier read. (Orcan) -30.12.2010: - - Suggestion by OOM team: Add default velocity controllers to pianoroll and drum edit. (Tim) - *Feature: Appearance part color names now can now be edited. (Tim) - TODO: Add per-song settings and add toolbar with some colour goodies. - *Feature: Mixer label colours can now be edited in the appearance settings. (Tim) - TODO: Remix track icons using use alpha channel and special routine to mix in - these settable colours. - *Fixed: Appearance settings palette was broken. (Tim) - Note: A few odd Qt styles are wacky (Motif, Windows). Your mileage may vary. - - In ctrl canvas, draw the grid before anything else. (Orcan) -29.12.2010: - - Fixed Bigtime display when using a style sheet for MusE. (Tim) - Set window font using a style sheet. Bigtime used QFont::setPixelSize(). - Application style sheets (even a blank one) override with the fixed application - font size (evidenced by adjusting MusE config font#0, then bigtime font size changed). - TODO: Darn, the tooltips fonts are as big as the labels! Must fix. - - Added 2 wallpapers from Geoff Beasly. - - Fixed focus stealing of transport (rj) -28.12.2010: - - Tweaked and added some delays during project load to counter threading - issues during loading of projects (rj) - - Commented out the comment placeholder text line in projectcreateimpl.cpp. It - broke the compilation against Qt-4.7. (Orcan) - - Fixed the shift modifier issue in renaming parts in the arranger. (Orcan) - - Fixed the 'no selected track' trackinfo background MusE logo display. (Tim) - It was a memory leak as well. Was a simple fix in Arranger::genTrackInfo(). -27.12.2010: - - Added a first try at project creation dialog, we'll see how much territory - it covers, intentionally it's only used upon creation of a project, later 'Save As' - operations use the old dialog so multiple .med files can be saved for the - same project (rj) - - deferred creating *.wav files until the global record button is clicked, - if a project does not exist at that time, pop up the new project dialog (rj) - - changed 'new' project from listing PROJECT_VIEW to GLOBAL_VIEW where the - templates reside, an enhancement would be to list USER_VIEW if it's template - dir exists (rj) - - Added myself to the AUTHORS list. Oops. (Orcan) - - Added a mimetype file for *.med, *.med.gz, *.med.bz2 and associated MusE with this - mimetype (and also midi and xml mimetypes) in the .desktop file. (Orcan) - - Got manpages from Debian by Daniel Kobras, and updated them for MusE2. (Orcan) - - Remove rem'd preview code in filedialog.cpp. I reimplemented it in appearance.cpp. (Orcan) - - Remove the environment variables info from the usage output. (Orcan) - - midiedit links to ctrl. (Orcan) - - Merged changes from ccherrett into pianroll (h-splittter). (Tim) - - changed open dialog to view stored project directory for PROJECT_VIEW (rj) - - Fixed midi track info size issues. (Tim) -26.12.2010: - - Initial addition of midi track info to pianoroll. WORK IN PROGRESS. (Tim) - TODO: Just to get off the hard drive. A few things still need to be linked up! - And we really need icons to replace those 'T' 'C' 'S' 'X' buttons. - - Fix minor issues that surfaced when I built an RPM for the alpha release (Orcan): - o Added missing AudioVideo category to the .desktop file. - o Fixed the executable name in the .desktop file. - o Converted README.softsynth, synti/vam/README, README.de, SECURITY to UTF8. - o Made the default MusE_DOC_DIR consistent with other default definitions. - o Removed explicit rpath to ${QT_LIBRARY_DIR}. cmake should add it automatically - if there's need. - o Removed unnecessary linkage to libQtSvg. - o utils are installed with executable permissons. -25.12.2010: - - Added fancy background selection widget with live preview to Appearance Settings. (Orcan) - - Applied Geoff King's second capitalization patch. -23.12.2010: - - MidiTrackInfo is now self-contained. (Tim) - Moved all of its members from Arranger into MidiTrackInfo. Removed trackinfo.cpp -23.12.2010: - - MusE 2.0alpha released! (rj) -22.12.2010: - - Capitalizations in the menus thanks to Geoff King (gsking1->gmail. com) - - Added some comments in app.cpp that I've been willing to include for a while. (Orcan) - - Added a line to CMakeLists to install the splash image. Commented out for now. (Orcan) - - added new-user help dialog for Input button on midi track-info (rj) - - Fixed *some* gui drawing speed issues. (Tim) - Use Qt::WA_OpaquePaintEvent for windows we fully draw on, like part canvas, track list, meter. - In PartCanvas::drawItem(), ignore null intersect of item bbox + rect. - TODO: Other windows like Slider and Knob could probably use this. And with many parts, - drawing is still slow (esp waves), possibly because of alpha blending. -21.12.2010: - - Moved all the config files "~/.musePrj, ~/.MusE, ~/.deicsonze.dco" into ~/.config/MusE/ - and renamed them as "projects, MusE.cfg, deicsonze.dco", respectively. (Orcan) - - User instruments path is made user configurable with default location in - ~/.config/MusE/instruments - - In simpledrums2, set the 64bit ladpsa plugin paths. (Orcan) - - Fix: gensetbase was opening in the last tab instead of the first. (Orcan) - - Eliminated environment variables usage (MUSE, MUSEHOME, MUSEINSTRUMENTS). (Orcan) -20.12.2010: - - Fixed arranger grid h-line drawing, track, and part drawing alignment, border issues. (Tim) - - To open help pages, use the default browser of the system via QDeskopServices. Removed - the configuration option to select the browser. (Orcan) - - Added some groupboxes and layouts to Global Settings to make it look more uniform. (Orcan) - - Don't pack the binary and subversion directories when doing "make package_source". (Orcan) - - Updated the Russian translation again thanks to Alex, alex54m -> mail.ru - - Fix a typo in awl/CMakeLists.txt that disabled the translations for awl. (Orcan) - - Updated all the .ts files with the latest strings. Made sure that share/locale/CMakeLists - is scanned last so that all the translations are collected before coming to that. (Orcan) - - Fix: cliplist target should depend on widgets target. (Orcan) -19.12.2010: - - Fixed not saving part colours and part canvas background appearance settings. (Tim) - *Feature: Added 'global opaqueness' (transparency) appearance setting. (Tim) - Currently only affects part colours. - TODO: Fix the darn black rectangle drawing. Apply the opaqueness to some other things. - - Fixed arranger part drawing borders. Used QPen::setCosmetic(true) when drawing. (Tim) - - Individual parts are now built as shared libraries. (Orcan) - - Moved main() and first degree relatives into main.cpp (Orcan) - - Fixed bad link in README. Updated German README. (Orcan) - - Major clean-up in all CMakeLists.txt files. Hopefully, this will be the last time. - Unified their notation. Added copyright notices to those which were missing. - - Defined MusE_SHARE_DIR and MusE_LIB_DIR in config.h.in so that these directories - can be accessed conveniently in the code. (Orcan) - - Install documentation files to the standard docdir specified by FHS. (Orcan) -18.12.2010: - - Fixed transport shortcuts not working in some windows or situations. (Tim) - Added event->ignore to PartCanvas::keyPress. Added setFocusPolicy() to WaveView, Master. - Added (canvas or view)->setFocus() to WaveEdit, MasterEdit. Test OK. - - Fixed rack drag'n drop. Added individual tooltips for effects since the astrip might - be too narrow. (Orcan) -17.12.2010: - - Fixed crash with song loaded then File->New. Marker view had non-existent items from cleared marker list. (Tim) - - Some memory leak cleanups. Delete midiInstruments and midiDevices. (Tim) - TODO: Many more leaks to fix. -16.12.2010: - - Fixed track list track moving/resizing - added ev->buttons() check to mouseMoveEvent(). (Tim) - - Fixed meter drawing (speed) - removed double buffer pixmap. Test OK. (Tim) -15.12.2010: - - Major cleanup in the #includes. Emptied all.ha nnd moved its contents to individual files. - The build is roughly 20% faster now. (Orcan) - - Fixed track list drawing - removed double buffer pixmap. Test OK. (Tim) -14.12.2010: - - Fixed corruption on track info instrument patch button due to latin1() conversions. (Tim) - Changed MidiInstrument::getPatchName() and EditInstrument::getPatchName() to return QString. -13.12.2010: - - List the available locales in the --help output. (Orcan) - - Fixed audio/midi control right-click automation popups were greyed out due to typo. (Tim) - - Fixed some QMenu usages without parent and/or delete. (Tim) - - DeicsOnze: Fixed: Crash in ctor, _preset not init. by time loadConfiguration called. Re-arranged. - And 3 popup QMenu usages without delete. Test OK. (Tim) - - Deicsonze: Fixed all missing icons throughout. Added qrc file, changed ui file. Looks nice now. (Tim) -12.12.2010: - - Integrated the translation system into cmake. Added a -DUPDATE_TRANSLATIONS flag to cmake - which will update the .ts files in the source tree with the newest strings. I used this to - update the existing translations. Also I removed the .qm files from the SVN, as they will - be now installed from the build tree. (Orcan) - - Added a -l flag to the muse executable to override the locale detection, mostly for testing - purposes. (Orcan) - - Updated the Russian translation thanks to Alex, alex54m -> mail.ru - - When updating the .ts files, by adding proper dependencies, make sure all targets are - scanned. Otherwise .ts files may miss some strings. (Orcan) -11.12.2010: - * Feature: Added default midi track in/out channels to midi ports list. (Tim) - - For now, the boxes use the old text channel strings ("1 3 5", "1-5", "all, "none" etc.) - * Changed: Experimental: Mid ports now default to 'GM' instrument. (Tim) - - Was stopping new users from seeing instrument patches etc. - - TODO: Overhaul instrument type, instrument sysexes, and song type. - * Changed: Audio groups and inputs no longer default connect to first audio out. (Tim) - - Find it tedious, once a song grows with groups and inputs, to keep disconnecting them from output. - - TODO: Add a better audio default routing system. -10.12.2010: - - More compiler and build warnings fixes. (Orcan) - - Restored the scripts menu and fixed scripts handling. Tested OK. (Orcan) - - Added left, right, up, down to shortcuts dialog. Test OK. (Tim) - - Fixed ctrl canvas not lining up in drumedit and pianoroll. (Orcan) - - Fix: Save project file dialog should have a "Save" button instead of "Open". (Orcan) - - Fix: Crash when Ok is clicked in the plugin selection dialog with no plugins - selected. Well, I fixed the crash, then I also disabled the Ok button until - a plugin is selected. (Orcan) - - Feature: Middle mouse button click on a plugin in the rack will (un)byass the - plugin. (Orcan) - - Actually, use Qt:MidButton instead of instead of Qt:MiddleButton in rack.cpp. - The latter is Qt >= 4.7 only. -09.12.2010: - - Fix: column orders mess up in the main window, and they do not save properly in - the .med files. (Orcan) - - Made MusE the owner of transport object so it's now deleted when MusE object is deleted. (Tim) - - Improved PosEdit class, supports undo/redo levels, focus-out + return pressed updating. (Tim) - This also fixes the Transport position boxes' sections jumping to last section. - TODO: There's still trouble editing with KB in Bar-Beat-Tick mode, the bar and beat being '1' based. - TODO: Fix SigEdit (the time Signature Editor boxes). - - Fix some build and compiler warnings. (Orcan) - - Fix the max slider value in the transport. This was a typo I made during conversion. (Orcan) -08.12.2010: - - Ported many more Qt3 methods to Qt4. (Orcan) - - Turned off Qt3Support. Muse2 is now a pure Qt4 application. (Orcan) -07.12.2010: - - Ported rack. TODO: Drag and drop needs a hand. It's not working. (Orcan) - - Converted various Qt3 support methods to Qt4 in many files. (Orcan) - - Includes cleanup in app.*. (Orcan) - - Converted all instances of latin1() and crossed my fingers. Initial tests OK. (Orcan) -06.12.2010 - - Built Awl::posedit and Awl::sigedit, and replaced /widget versions and all usages. (Tim) - TODO: Awl::sigedit has no returnPressed signal, for lmaster. - TODO: Transport position posedits jump to sub-ticks sections - can't auto-inc other sections. - - Reverted class SpinBox to previous revision. Test OK. (Tim) -05.12.2010 - - Completed porting of dlist module (the drum list). Test OK. (Tim) - - Ported sigedit and posedit. Used SpinBox in place of Q3SpinWidget. TODO: Needs some work on - locating the arrows of the SpinBox accurately. Maybe we need to implement another SpinBox - from scratch? (Orcan) - - Ported plugin.cpp. Both internal and LADSPA plugins tested okay. (Orcan) - - Trivial conversion of Qt3 support methods to Qt4 in some widgets: slider, sliderbase, knob, - ttoolbutton, mlabel. (Orcan) -04.12.2010 - - Fix: Escape button does not exit track renaming editor. (Orcan) - - Fix: Midi ports config table items are editable when they are not supposed to. (Orcan) - - Ported scldiv. Things seem to work as before. Maybe needs more testing. (Orcan) - - Removed fontsel, and synthwizardbase from the project. (Orcan) - - Feature: In waveedit, the mousewheel controls the vertical slider. (Orcan) - - Completed porting shortcutcapturedialog, filedialog. Added paste clone, 2track, clone2track, - insert empty, insert, to configurable shortcuts. Changed all arr/pianoroll/drumedit hard-wired - keys to refer to shortcut table. (TODO: Other windows?) (Tim) - - Correction: Convert all state() to QInputEvent::modifiers() and stateAfter() to modifiers() - (I forced a downcast to QInputEvent if required). Is correct? QT Help says: - QInputEvent::modifiers() "Returns the keyb. mod. flags that existed imm. before the event occurred." - QKeyEvent::modifiers() "Returns the keyb. mod. flags that existed imm. after the event occurred." -03.12.2010 - - Ported all copy/paste/drag/drop coding. Including pianoroll, drumedit, pcanvas, prcanvas, dcanvas, - and effect rack. Test OK cut, copy, paste, also drag n drop various files to arranger and rack. (Tim) - - Fixed arranger menu cut/copy enabling. Was never right before. Test OK cut and copy. (Tim) - - Completed port of MidiInstrument. Fixed its populatePatchPopup(), which fixes midi trackinfo - instrument selection not updating h-bank, l-bank, and prog spinboxes. (Tim) - - Some cleanups: Remove the old Header class. Rename HeaderNew to Header. (Orcan) - - Ported: osc, wave, dcanvas. (Orcan) -02.12.2010 - - Ported alayout, tlist, arranger (Orcan) - - Minor tweak in the HeaderNew API to set column widths easier. Also commented out the - old Header class. We can probably remove it soon. (Orcan) - - Ported help.cpp as is. But maybe we should use QDesktopServices to open user's default browser - instead of the browser specified in a config option. (Orcan) - - Ported scrollscale and splitter (Orcan) -01.12.2010 - - Ported listedit. (Orcan) - - I missed to port one action call in drumedit. Now it's (hopefully) done. (Orcan) - - Ported midiport. This also finishes the port of dlist. (Orcan) -30.11.2010 - - Ported vscale and ctrledit. (Orcan) -29.11.2010 - - In Mess::processEvent(), added ME_PITCHBEND case. For synths which don't override - processEvent (like Vam and Deicsonze). Pitchbend should work in them now. (Tim) - - Added a new HeaderNew (Qt4 based) class to be used instead of Header (Qt3 based). (Orcan) - - Ported drumedit except a Q3PopupMenu reference that needs to be ported in midiport.cpp. - This update restores the tooltips, adds icons to edit menu items in drumedit window. (Orcan) -28.11.2010 - - Finished porting Marker View. (Orcan) - - Ported ctrlpanel. Needs some testing. I also removed usage of the Oxygen's "pen" icon - in place of the pencil. The pen looks bad in ctrlpanel. (Orcan) - - Deicsonze2 added (!!) Fresh re-import from evolution. Test OK. (Tim) - TODO: Plugin controllers disabled - we need the Ctrl class. - Restoring of state (that's a MusE problem I think). - Fix deicsonze.cpp:3612: warning: deprecated conversion from string constant to ‘char*’ - - Ported Mastertrack list view. (Orcan) - - Finished porting of Canvas module. Should be done. Not sure about one mouse event buttons() usage. (Tim) -27.11.2010 - - Completed porting pianoroll module including menus, shortcuts. Should be done. (Tim) - - Ported the following .ui widgets to Qt4: organguibase, gatetime, midisync, - routedialogbase, vamguibase, 1050, 2142. (Orcan) - - Fixed the whatsthis and tooltip bits of tho Midi Ports dialog. (Orcan) - - Ported Quant Config dialog. (Orcan) - - Ported the popup menus in the canvas. This should restore the color selection of tracks. (Orcan) - - Removed midiportroutebase.ui, fdialogbase.ui (the one from organ) (Orcan) - - Removed some unnecessary Q3* references. Converted popup menus in various places. (Orcan) -26.11.2010 - - Fixed midi trackinfo growing size - set output device list box and instrument button - h-size policy to 'Ignore'. (Tim) - - Fixed trackinfo spinboxes only go to 99 - changed some trackinfo ui spinbox properties - (maxValue -> maximum, minValue -> minimum etc). (Tim) - - Fixed SpinBoxFP class. Was never right before. (Tim) - - Fixed transform and input transform ui files and dialogs - using the corrected SpinBoxFP. (Tim) - - Converted comboQuant widget to Qt4 (found in miditransform dialog). - TODO: Doesn't actually open - why? (Tim) - - Finished porting edit instrument dialog to Qt4. listitem.h is removed as it is no longer - needed. (Orcan) - - Added missing includes on comboQuant. The compilation was failing here. (Orcan) -25.11.2010 - - Fixed column widths, alignments, device renaming and jack device creation issues in synthconfigbase. - Somehow the last changelog entry about this didn't get committed. That's added too. (Orcan) -24.11.2010 - - Resinstated the Midi Transformer. Was left out when both TF and iTF were removed, and then I - asked for them to be put back. So yes, transformbase.ui is used now. (Tim) - - Completed conversion of waveedit(.cpp, h), including menus and shortcuts. Should be done. (Tim) - - Set undo/redo shortcuts on global undoAction/redoAction, instead of Q3Accel in each window. (Tim) - - Fixed some leftover setAccel()'s in app.cpp (Tim) - - Fixed delete shortcut key. Set in MusE constructor. (Tim) - - Reinstated special Toplevel::CLIPLIST case in MusE::toplevelDeleted(). Caused problems. (Tim) - TODO: Still not right with the menu checkmark... - - Ported rhythmbase, fluidsynthgui, fluidgui to Qt4 (Orcan) - - Removed patchbaybase from the project (Orcan) - - Added ENABLE_EXPERIMENTAL flag to cmake. Marked rhythmbase, s1 experimental (Orcan) - - Fixed a connection in miditransform (Orcan) - - Fixed crash in FluidSynthGui::channelItemClicked(): Use item->row() for the channel. Test OK. (Tim) - - Start porting synthconfigbase. It's mostly functional. TODO: Column widths and alignments, - renaming device name, port Q3WhatsThis bits (Orcan) -23.11.2010 - - Added Track::cname(), applied to strip labels' object names, so they may be used in style sheets. (Tim) - - Added struct SysEx and some friends, to minstrument.h, prep. for the instrument editor. (Tim) -22.11.2010 - - Oops, fixed regression, marker view and cliplist crashes, removed setAttribute(Qt::WA_DeleteOnClose) - from TopWin constructor, and added it to individual TopWin sub-classes (only MidiEditor needs it). (Tim) - - Final major leak fixed: We can now delete the main MusE object just before returning from main! (Tim) - Now that markerview, cliplist et. al. are also being deleted (verified, dtors called), I changed - MusE::startClipList() so the main MusE instance owns it like all the others. It deletes too, now. - Also removed odd special Toplevel::CLIPLIST case in MusE::toplevelDeleted(). Hope it works... - Tested closing complex song, with all windows open. Nice to see final Finished! message (new, with -D). - - Eliminated double-buffer pixmap in View class (not required in Qt4). TODO: install event handler. (Tim) - - Ported the following .ui widgets to Qt4: editgainbase, gensetbase (Orcan) - - Removed unused .ui widgets: wtrackinfo.ui, editctrl7dialogbase.ui, editmetadialogbase.ui (Orcan) - - Fixed remaining alignment issues in editors, using setSpacing(0). TODO Controller panels. (Tim) -21.11.2010 - - All menus now use QActions. Some shortcuts are left to be assigned correctly (Orcan) - - Clean up: Remove submenu integer ids from the MusE class in favor of QActions (Orcan) - - Ported the following .ui widgets to Qt4: didyouknow, transposebase, cliplist, - configmidifilebase (Orcan) - - Ported View and MidiEditor classes. Fixed TopWin constructor. Test OK all editors. (Tim) -20.11.2010 - - Remove most wrapper classes around .ui widgets. I was wrapping them too much. Some widgets - (e.g. songinfo) still need wrappers though. (Orcan) - - Ported the following .ui widgets to Qt4: appearancebase, mixdowndialogbase, - shortcutcapturedialogbase, shortcutconfigbase, aboutbox, editsysexdialogbase, - editnotedialogbase, editctrlbase (Orcan) - - Converted all of editevent.cpp to Qt4 (Orcan) - - Load default compiled-in style-sheet resource :/style.qss in main(). (Tim) - Added style sheet support to Appearance settings, with reset button. -19.11.2010 - - Started some conversions of midieditor, pianoroll, drumedit, incl. their QGridLayouts. (Tim) - - More icon conversion work (Orcan) - - Move global, user, project .xpm files into the xpm/ directory. Handle them the same way in - filedialog.cpp as we handle other pixmaps elsewhere. (Orcan) - - Ported the following .ui widgets to Qt4: commentbase, metronomebase, mtrackinfobase, - midifilter (Orcan) -18.11.2010 - - Updated build part README file - read it! Tell user to specify Release build type. (Tim) - - Added printout of build type in top level cmake. (Tim) - - Removed duplicate LASH detection in top level cmake. (Tim) - - Ported the following .ui widgets to Qt4: transformbase, itransformbase, mrconfigbase (Orcan) - - Finished remaining port work of mixer and strips. Should be all done now. (Tim) - - Modified icons.cpp to Use theme icons whenever possible. We now need to match muse - icons with the standard theme icon names (Orcan) -17.11.2010 - - Removed a fix which cured graphic corruption for me in MusE-1. Not required now. (Tim) - - Small change to Orcan's filedialog, re-enabled global button. (Tim) - - Ported the following .ui widgets to Qt4: songinfo, mittransposebase, velocitybase (Orcan) -16.11.2010 - - Fixed track info sizing problems. In Arranger::switchInfo() added tgrid->update(). (Tim) - QLayout::update() seems to be a new method, we needed to call it here. - - Fixed mixer maximum and minimum sizes. (Tim) - Bit of a tough hack. Is there a better way? Done by sub-classing QScrollArea and catching - LayoutRequest events, just before paint events when the window sizes are finally correct. - TODO: Still off by a few pixels when mixer first opened, because main window frameSize - is not set yet, by the time LayoutRequest is caught. - - Transformed file dialogs to Qt4. This was the first attempt to transform a .ui file to Qt4 - as well. New .ui files do not store image information. Thus I moved the 3 icons from - qfiledialog.ui into their own files. - TODO: Qt4 does not support file preview in file dialogs yet. The relevant code (wallpaper - preview) is disabled. Now we either have to implement an image previewer, or forget about - this feature. (Orcan) - - Only try to use theme icons in file dialogs if Qt >= 4.6 (Orcan) -14.11.2010 - - renamed deicsonze2 files and classes with '2' suffixes - - Applied patch by Orcan to convert populateAddSynth(). (Tim) - - Changed all setMargin() calls to setContentsMargins(). (setMargin() is obsoleted!) (Tim) - - Fixed crash in MusE::closeEvent() upon close: save, skip, abort? = abort. (Tim) - TODO: Some other suspicious looking closeEvent()s. May need to fix... -12.11.2010 - - Fixed arranger alignment issues - set layout margins to zero. (Tim) - TODO: Track list items aligned to canvas tracks are still off by one lousy vertical pixel. -11.11.2010 - - WIP: Mixer and strips re-designed to be theme/font friendly - no more fixed STRIP_WIDTH. (Tim) - - Fixed Slider, Knob and DoubleEntry classes. Knob anti-aliasing applied (where allowed). - - Transport handle colour fixed - added setAutoFillBackground(true). -10.11.2010 - - Ported transport window to Qt4. The handle color needs a fix (Orcan) -09.11.2010 - - Fixed audio and midi strips and converted to Qt4. Looks OK now, but will be better... (Tim) - TODO: Convert Slider, Knob, EffectRack, ComboBox classes etc. (After that the strips will be perfect.) -08.11.2010 - - Add missing link to libdl.so. Caused bulid failure on Fedora 14 (Orcan) - - Fixed strip name label colours, also name label auto-font-sizing. (Tim) - - Updated some window flags (stay on top, delete on close...) (Tim) -07.11.2010 - - Mixer is fixed and converted to QT4. (Tim) - - Conversion of TLLayout class to QT4. - - Conversion of TempoEdit class to QT4. Displays proper doubles now. -06.11.2010 - - Yipee! De retour aux les popup menus 'stay-open'. (Tim) - - Fixed PopupMenu class. All routing popups done (midi trackinfo, midi strip, audio strip). - TODO: Fix midi 'toggle all'. Use routes as QVariant action user data (someone started this already)... - - Major cleanup of audio and midi strip comments, code. (A fresh start for your tired eyes, you guys...) - - Test OK so far with all track types. -04.11.2010 - - Fixed LADSPA plugin dialog. TODO: fix sorting order. (Tim) - - Fixed MenuTitleItem class. Fixed some usages of it (Jack popup routes, midi cfg routes). (Tim) -02.11.2010 - - Solved! All the MESS synths load now. Removed mpevent(.h, .cpp) and evdata.h from /libsynti, - conflicting with copies in /muse, causing crashes. Versions in /muse are newer. - Should only be one version. Whether we end up putting it in a library, or leaving it - in the main app as I have done here, it had to be moved one way or another. - If we really need 'reduced, simplified' functionality of the /libsynti mpevent versions, - then it should be a base/inherited class type of solution, not two different copies. (Tim) -02.11.2010 - - Fluid, fluidsynth, simpledrums: Testing: For now, disable certain sendSysex() calls crashing. (Tim) - Marked as "MusE FIXME:". At least fluidsynth appears to be working now. Other two not so good. -01.11.2010 - - Fixed all MESS plugins: compile with -fvisibility=hidden, to avoid namespace conflicts. - In particular, simplesynth was causing conflict with variable 'plugins' causing it to - be overwritten. - - So, this fixes LADSPA plugins not appearing in plugin list. - - Added simpledrums from muse_qt4_evolution, is called 'simpledrums2' and replaces the original. -31.10.2010 - - Fixed Toolbar1 class. 'Snap', 'Quantize' combo boxes should work now. Thanks to Luis G. for help. (Tim) -30.10.2010 - - Fixed Deicsonze crash and missing Organ. Both load now. (Tim.) -27.10.2010 - - Fixed drawing of Slider widget and Meter widget (rj) - - Fixed keyboard shortcuts for tools on toolbar (rj) - - More conversions with windows done previously done, fixes. Marker, Master gui + List. (Tim) - Some new style header fixes here/there. -26.10.2010 - - Fixed non-opening view menu windows (mixers, marker, bigtime etc). (Tim) - Found all the isItemChecked() returning opposite of before (for example in toggleBigTime()). - And yet the setItemChecked() remains unmodified and it works (for example in showBigtime()). - Not understood why - yet. -26.10.2010 - - Applied large patch by Orcan to (start) converting to native QMainWindow and QToolBar. (Tim) - - Completed piano roll, drum edit, MusE app, and arranger toolbars. -24.10.2010 - - Finds MESS synths now including fluid/fluidsynth, but all crash except Vam and S1. (Tim.) -22.10.2010 - - cmake scripts changes thanks to Orcan Ogetbil oget.fedora > gmail.com (Tim.) - 'make uninstall' facility added! - Drop our obsolete pkgconfig for newer native cmake pkgconfig. - LASH detection fixed. - Summary added. - Renamed installed executable 'muse' to 'muse2'. - Install /utils, /packaging, and /demos files. - Other minor changes. -21.10.2010 - - Toolbar1 usage of Q3ListBox changed to QTableWidget. (p4.0.3 Tim) - - More Toolbar1 fixes. (p4.0.4 Tim) - - Fixed widgets/tools.cpp EditToolBar::EditToolBar connect Q3Action. (p4.0.5 Tim) - - Crashes: Removed all "undoRedo->removeFrom..." from destructors (~pianoroll() ~drumedit() etc.) (p4.0.6 Tim) -20.10.2010 - * Fixed: cmake should work now. (T356) - - Changed the QT4_WRAP_UI3 macro to generate <filename>.h instead of ui_<filename>.h - - In /muse/CMakeLists.txt, included all the uic generated headers paths (the 'build' paths). - - Tested OK with fresh svn pull. -19.10.2010 - * Fixed: Some missing files, errors with cmake build. (T356) -19.10.2010 - * Changed: Build system changed to cmake. (T356) - - Some other suitable changes. p4.0.2 - - WIP Need to fix a few placed in code with regards to installation search paths (MESS synths not found etc.) - - Choose suitable version number. Currently left at 2.0.1 - - Maybe a few other things. Change name of prog so as not to conflict with existing muse installation? etc. etc. - - Default install location is /usr/local. Be careful not to overwrite an existing working muse-1 ! -16.10.2010 - * Fixed: Routing and popup menus should work now. Sorry, no 'stay-open' menus for now. (T356) - - p4.0.1 Reverted back to regular non-overloaded Q3PopupMenu behaviour (self-extinguishing) for PopupMenu class. - - Removed "gRoutingMenuMap.clear()" and "gRoutingPopupMenuMaster = 0" from MusE::routingPopupMenuAboutToHide(). - Instead, added protection from non-visible menu in MusE::updateRouteMenus(). - * Tested: Pianoroll, drums open but toolbars are very messed up. Marker, transport, bigtime, all others seem OK. -15.10.2010 - * Feature: Unified Jack midi devices in midi ports list. Can be both input and output, just like ALSA devices. (T356) - - Marked as p3.3.55 - * Corrected: Three things which did not compile in conversion to new muse-2: (T356) - - <string>true</string> -> <bool>true</bool> in mtrackinfobase.ui, for recEchoButton toggleButton property. (T356) - - Surround with QString(): "strerror(errno)" in MusE::save(), and "incstr" in MidiDeviceList::add(). (T356) -14.10.2010 - ======================================= - * muse2 branch (Conversion to QT4, QT3 compatibility mode for now) checked in (rj) (T356) - ======================================= - -09.10.2010 - * Fixed: Gluing of midi track parts, over tempo changes, caused incorrect note times and lengths. (T356) - - Fixed Song::cmdGluePart(). -08.10.2010 - * Disabled: Precount does not work, disabled function in gui (rj) - ======================================= - * 1.1 tagged (rj) - ======================================= - * added: missing headerfile in dssihost.cpp, required for building on Ubuntu Maverick (rj) -21.09.2010 - * Fixed: Mixers not restoring their size properly upon song load. (T356) - - Rearranged MusE::loadProjectFile1() slightly so mixer resizing done at end. Tested OK. - * Changed: Disabled some optimized code always enabled in Dsp::cpy(), for now, in case of 64-bit issues. (T356) -16.09.2010 - * Created rc2 release for 1.1 (rj) - * Fixed: Delete track(s) not disconnecting track routes, causing routes to hang around and store in song file. (T356) - - Fixed major regressions (my fault) in Song::insertTrack2() and ::removeTrack2(). - * Fixed: Dummy audio device: Crashes when Jack midi device created in device manager, or loaded from song. (T356) - - This allows to create Jack midi devices even when dummy audio driver is used. - - Tested OK loading complex Jack midi based songs with dummy audio driver. - * Fixed: AlsaTimer cannot start, with dummy audio device. (T356) - - Reverted: Back to default SND_TIMER_GLOBAL_SYSTEM in AlsaTimer, for now until a better fix. - - Also replaced pop-up warning in dummy loop with terminal output instead. - * Changed: MidiDevice <-> Track routes replaced with MidiPort <-> Track routes. (T356) - - This allows to change a port's device (even to <none> !) while keeping all the track channel routes. - * Changed: Single midi <-> track route with channel mask, instead of one route-per-channel. (T356) - - Potentially saving very many routes from memory and in song file. -10.09.2010 - * Fixed: regression with oR routing for Aux strips (rj) -05.09.2010 - * Fixed: shortcut for insert moved to Ctrl+Shift+X (rj) - * Added: Select all toggle for midi channels iR menu (rj) - * Added: Auto-route-connect old songs with obsolete midi input port/channel masks (before iR button added). (T356) - - Added MidiTrack::setInPortAndChannelMask() and called it from MidiTrack::read(). -03.09.2010 - * Changed: Updated German localizations muse_de.qm and muse_de.ts from <babarosa [at] gmx.at> (T356) - * Added: Instrument definitions and drum maps for Kurzweil SP2X, from <babarosa [at] gmx.at> (T356) -28.08.2010 - * Created rc1 release for 1.1 (rj) - * Added: Instrument definitions for AKAI SG01 and Waldorf-microQ from <babarosa [at] gmx.at> (rj) -23.08.2010 - * Added: Possibility to turn on/off move-armed-track with track selection in settings (rj) -21.08.2010 - * Renamed: Soft synth configuration changed to Synth configuration, as per patch from Geoff King (rj) - * Fixed: Shortcuts with modifier keys wasn't working for global shortcuts, should be now (rj) - * Added: Shortcuts for changing len of events, default Ctrl+Shift+Left/Right (rj) -10.08.2010 - * Fixed/Changed: Grid reacts to midi resolution change (rj) -01.08.2010 - * Added: Move track selection when part selection is moved, is this a good approach? (rj) - * Added: Backspace unarms all armed tracks (rj) -24.07.2010 - * Feature: Audio and midi routing popup menus now stay open, for making rapid connections. (T356) - * Fixed: Delete some objects hanging around upon close like song, audio, midiSeq, and prefetch. (T356) - TODO: Find a way to delete the 'muse' object without causing problems like seg faults. -21.07.2010 - * Improved: Note lanes in pianoroll and marking of C-notes (rj) -20.07.2010 - * Fixed: illegal shortcut no longer reported on startup (rj) -18.07.2010 - * Fixed: Handle errors during timer initialization more gracefully (rj) -15.07.2010 - * Added: Volume control for audio metronome (rj) -12.07.2010 - * Fixed: When wave files were edited allocation was on stack which caused crashes for larger selections, now done on heap (rj) - * Added: Print svn version in -v and About box. (rj) - * Fixed: Bug with RemoveShortEvents plugin script, would not remove anything due to index error (rj) -10.07.2010 - * Added: Insert measure, inserts empty space and moves everything after playpointer to the right and - Part-insert, pastes parts and moves everything after the paste point to the right - it's currently not possible to change the shortcuts for these, wip (rj) -06.07.2010 - * Added: Button in transport to enable/disable jack transport. (rj) - * Fixed: Dropdown Snap and Type in arranger toolbar no longer steal focus, annoyed the helloutame (rj) - * Fixed: Making edits to larger chunks in wave files no longer cause a crash, heap is used for allocation (rj) - * Improved: Part selection when navigating with keyboard, previously there was sometimes a need to use the mouse - to get a part selected, now the first one should be selected (rj) - * Added: some automation (very)wip stuff, not enabled, just to get it off my harddrive (rj) -22.06.2010 - * Fixed: Crashes loading a song while another is loaded. Or worse, it loads but saving corrupts the file! (T356) - - Song::clear(): Clear all midi port devices. Delete Jack midi devices, and remove all ALSA midi device routes. - - Route::read() Ignore bogus midi routes in med file if the device they refer to is not in use by the song (port is -1). - - MidiJackDevice::writeRouting(), MidiAlsaDevice::writeRouting(): Ignore and do not write midi routes if the device - they refer to is not in use by the song (port is -1). This prevents bogus midi routes writing to med file. - - Fifo::~Fifo(): Free the buffers! Fifo::getWriteBuffer(), Fifo::put(): Verify allocation. Fifo::get(): Verify buffers. -15.06.2010 - * Fixed: Jack midi output: Sent pitch bend and program values were incorrect, if coming from midi keyboard. (T356) - - Reported by Pieter while using Hurdy Gurdy vst under fst. Tests OK now, here. - * Fixed: Drum editor: Controller graph not in current tool mode (pencil, eraser etc.), when first opened. (T356) - - Call setTool() in DrumEdit::addCtrl(). - * Fixing: Drum editor: Velocity controller graph showing incorrect for selected drum, or showing for all drums, when first opened. (T356) - - WIP. Still not quite correct, but at least now it doesn't show all drum velocities when first opened. - (This is interesting! I will try to allow 'no drum' list selection, to show all drum velocities at once, just like piano roll.) -13.06.2010 - * Fixed: More fixes to marker list, selected item was still not right. (T356) -03.06.2010 - * Fixed: Time signature editing problems in master track list and gui. (T356) - - Fixed SigEdit::outOfRange(). Added Sig::isValid(), and check it in LMaster::returnPressed() to fix crash with 0 n or z. - * Fixed: Marker/list problems. Double entries. Pianoroll/arranger timescale 'shift-left/right-click-to-add/del-marker' fixed. - Marker 'lock' (smpte/ticks) works now. Up/down buttons fixed. Marker list selection 'stays put' now - when adding or deleting markers. (T356) - * Fixed: Graphics corruption in arranger and track list when vertically scrolling. (T356) - - Changed rectangle to full w/h in 'shift down' section of View::setYPos() and TList::setYPos(). - Should not have to do this, but it cured my problems. No noticable change in speed. - - Arranger corruption occured on more than one machine with xorg nv, ati drivers. More severe arranger AND track list - corruption occured with proprietary drivers. Corruption is also observed in several other windows (ex. ladspa browser) - but there's not much I can do, the corruption is found in ordinary usage of QListView for example. - * Changed: Increased arranger vertical scroll step, was too slow to scroll. (T356) - * Possible fix: Auto-scroll in pianoroll and arranger take waaay too long to stop scrolling. (T356) - - Increased timer timeout from 40 to 80 ms in Canvas::scrollTimerDone(). Helped for me, on a 1.6Ghz P4... - * Changed: Ladspa plugin guis now have scroll bars. Helps when there are many controls. (T356) - - Still toying with the code a bit, please bear with me while I try to get it right. - * Started: Addition of MusE-native ladspa guis for dssi synths. (T356) - - No visible changes yet, just under the hood. Added class PluginIBase which is inherited by - DssiSynthIF and PluginI. Changed class PluginGui and DssiSynthIF to fit. -07.05.2010 - * Fixed: Xml file trouble: Tag attributes not storing xml-friendly entities, trouble reloading song. (T356) - - Fixed all usages of Xml::nput, ::put, ::tag, and ::etag. Discovered by Geoff B. -06.05.2010 - * Fixed: Audio Input tracks: Loud noises or DC output with unconnected input routes. (T356) - - AudioInput::getData(): Do not get buffers of unconnected client ports. Causes repeating leftover data. - * Fixed: Audio Input tracks: Stereo processing not correct if both input routes connected to same port. (T356) - - AudioInput::getData(): Just copy the buffers always, don't set buffer pointer directly. - * Fixed: Effect rack plugins: Not saving correct number of plugin channels. Upon reload, channels are wrong. (T356) - - PluginI::writeConfiguration() and PluginI::readConfiguration(): Write and read the channels, not instances. - - Optimize TODO: Is xml plugin 'channel' really necessary? Well not now, but later if we optimize the effect rack - by not creating redundant plugin instances if the next plugin in the rack doesn't need them. - What I have changed is always make the number of plugin channels equal to the number of track channels. - PluginI::setChannels() and PluginI::initPluginInstance() then sort out the details of how many instances to create. - * Fixed: Effect rack plugins: Some plugins crash MusE, for example plugins with no audio outputs. (T356) - - PluginI::setChannels() and PluginI::initPluginInstance(): Be more aware of different audio ins and outs. - * Added: First draft help file README.effects-rack titled "Understanding the Effects Rack". (T356) - - Details how MusE uses plugins, especially now with these changes. -27.04.2010 - * Changed: Building: Separate --enable-dssi --enable-osc configure options. (T356) - --enable-dssi (Enable dssi synths AND special handling of dssi-vst ladspa effect plugins. No guis if by itself.) and - --enable-osc (Enable dssi guis. Useless by itself at the moment). - Use both for best features. - * Feature: If dssi and osc support are enabled, audio track effects rack dssi-vst plugins can now show their NATIVE guis. (T356) - * Fixed: Storing dssi synth states. Remembers current program, all configure strings, and control settings - for current program ONLY. (T356) - - With dssi-vst synths, some better are than others at remembering program. - - Todo: Ignore unwanted dssi-vst config strings/values like "guiVisible" "<name-of-fifo-file>" (gives non-fatal error on reload). - * Fixed: Dssi native synths (hexter, LTS etc.) should actually work now. Their gui controls operate the sounds now. (T356) - - Todo: If using large audio buffers (Jack), my 'one-at-a-time-per-audio-process' osc control fifo streams kinda suck, - with a delay in their processing. Want to try MULTIPLE 'run's or 'run-multiple's PER audio process, for SAMPLE accuracy and - better quicker message processing. Just need to add a timestamp to my osc fifo items, then all forms of change - whether - control, midi event, or program - have a timestamp with which we can SPLIT UP the runs into 'runs between changes'. - * Tip: Currently a patch to dssi-vst is required for their guis to update properly. (For now, ask about this on our lists.) -21.04.2010 - * Fixed: Shortcut for moving between tracks in arranger. Ctrl+Up/Down (rj) -19.04.2010 - * Patch: Fix for libdir bug causing synths to not be available on some 64bit systems. By Orcan Ogetbil (rj) - * Fixed: Drawing of grid when snaping to less than measure (rj) -12.04.2010 - * Fixed: LADSPA rack effects: Do not display LADSPA output controls (such as latency). (T356) - * Fixed: Bug when cancelling 'save as' operation, says 'file exists'. Caused by my earlier compressed save fixes. (T356) -11.04.2010 - * Fixed: DSSI requested midi mapped controls were not correct. (T356) - * Changed: Working on controllers, and saving their state. Synths like Organ should remember their state now. (T356) - - Working on DSSI controls... Working on OSC stuff... -06.04.2010 - * Fixed: Jack midi, and DSSI: Midi controller knobs, sliders, boxes etc. not updating with current values. (T356) - - Copied code in MidiPort::sendEvent() to JackMidi::processMidi() and DssiSynthIF::getData(). - * Fixed: DSSI: Crashing with unkown controllers sent to synths. (T356) - - Ignore unkown controllers in DssiSynthIF::processEvent(). -05.04.2010 - * Added: Rec enabled track moved with selection when only one track is rec enabled (rj) - * Changed: Made canvas show grid the default (rj) - * Added: Jack midi ports can now be renamed in the ports list dialog, by clicking on the name. (T356) - - Also cleaned up ports list behaviour and added tooltips. -30.03.2010 - * Major reworks: Jack midi, routing system, multichannel synth ins/outs, midi strips and trackinfo pane. (T356) - - WORK IN PROGRESS. Should be usable for current projects. - - ADVISORY: If opening current projects you are advised to "save as" or back up your med files (waves should be OK) - until all is deemed to be working OK. It is possible more changes to .med file structure are needed later. - - Some .med project file structures have CHANGED (like routing). I have tested opening large existing projects, - then re-saving them. OK so far. - However, I have not added importing code for the old midi trackinfo panel 'input port' and 'input channel' boxes (gone now). - If you want to wait, I am planning to do that, but later... Otherwise you must re-enter them with the new midi input routing. - - ** Multichannel synth inputs and outputs: Fairly satisfied with popup menus, hopefully no major reworks... - Routing system fully supports multichannel synth mono/stero paths but is NOT COMPLETE yet. - When changing a connected track from stereo to mono, there is no coding yet to ensure the existing stereo routes are - changed from stereo to mono (just like the audio input and output tracks have always done with Jack routes). - Also coding must be added to avoid simultaneous mono and stereo routes - make them mutually exclusive - although - there's nothing technically wrong with it, it's just not desirable. - - ** Jack midi: You now create your own Jack midi ports. I have not added any means to delete them yet, but I believe - if you 'unselect' them in the midi ports list so that they are not used, then the saved .med file will ignore them. - - Multi-instances of MusE should work OK now - all ports should hopefully have unique names. - - Number of midi ports increased from 32 to 128. It's a bit much for the ports list, was planning "create your own - midi port as needed" (like RG). Obstacles seem to have been cleared now, but it would be a big job (lots of places to change). - - Along the way various tweaks and fixes when I spotted them. -18.02.2010 - * Added: Separate Jack midi client ports per MusE port. (T356) - - For now, you will have to manually add further connections to those ports if desired, each session. - - Tested OK rec/play so far. - * Fixed: Some inconsistencies in midi controller number decoding. (T356) - - Everything now references the values listed in midictrl.h - * Fixed: Some Jack code was not calling free after calling certain functions. (T356) - * Changed: Midi priority now deaults to audio priority +1. (T356) - - Thanks to RJ for the convincing argument. -14.02.2010 - * Added: Jack midi input should be working now. Controllers, too. (T356) - - Tested with large 1024 frame buffer. Events are recorded with good sub-tick (frame) resolution, - as viewed in pianoroll with 64T snap grid. -13.02.2010 - * Fixed: Jack midi output should now be frame-accurate, support variable length events (like sysex), - and most controllers should work. (T356) - - TODO: No record yet. Just playback. - - TODO: I have code in place for multiple device listing (like ALSA) with auto-connect, - instead of single 'jackmidi' device, but it doesn't seem to want to actually connect. - Simply enable the #define JACK_MIDI_SHOW_MULTIPLE_DEVICES in driver/jackmidi.h - and it will magically switch. Shows port names as their alias #1 (with a rem'able line to - revert to non-alias names - to be made configurable later). I swear it was working, - then intermittent, then not at all. Hmm... -06.02.2010 - * Fixed: MusE hanging on close, with Jack driver. (T356) - - Unregister Jack midi ports on destruction of JackAudioDevice. -05.02.2010 - * Fixed: Top level windows: Do not open if there are no parts. Case: bogus -1 top-level part index stored in med file. (T356) - - Changed MusE::readToplevels() and stuff in listedit.cpp - - Was causing crash of list editor upon loading a song saved with the list editor open. - Somehow a bogus -1 top-level part index can make it in to the .med file. Checking this... - * Changed: Preparations for audio processors: Moved stuff out of class Event and into class WavePart. (T356) - - WavePart needs a converter map to lookup events in the part's (shared) event list, in case clones exist ! - Ughh, it's going to be tough to ensure the map is always correct because an event cannot tell what part owns it... -04.02.2010 - * Improved: Grid handling in arranger improved, it should now be actually usable (rj) -01.02.2010 - * Fixed: Jack midi output: Stuck or missing notes. (T356) - - Must only be one jack_midi_event_reserve() per event in handle_jack_midi_out_events(). -31.01.2010 - * Changed: Midi sync window: Clock is now seperated from other real time commands (play/stop etc). (T356) -31.01.2010 - * Fixed: Midi sync in: Should be very solid and 'in time' now, play/stop/continue. (T356) - - Re-coded to begin incrementing immediately upon first-clock detection. Forbid MusE to send transport commands - while in external sync mode - our sync router handles that. Was causing problems. - - Tested OK: Ensoniq ESQ-1 KB (sends clocks ony between start and stop) and Roland TR-505 drums (clocks always running). - The measured general timings were quite different, but (thankfully) clocks and events were not. - - MusE responds better to the TR-505 than the ESQ-1 does with a direct midi cable connection! (ESQ gains ticks on continue). - * Added: Midi sync window: 'Rewind on start' column. (Also a 'Send first clock delay' box - not implemented yet). (T356) -29.01.2010 - * Feature: Dummy audio driver: Added global settings for sample rate and period size. (T356) - - The period size affects midi resolution, and the default was just too long. So this was added. -27.01.2010 - * Changed: Don't process audio prefetch, or getData() in Audio::copyData(), if track is 'Off'. (T356) - * Added: Arranger track list: Quick 'right-click' or 'ctrl-click' or 'ctrl-mouse-wheel' toggling of Track On/Off. (T356) - - Note this includes midi tracks now! Remains to be seen whether allowing midi off is useful and will work, - or should be filtered out. **TODO: Turn off remaining controls in midi strips, turn off actual midi playback and record. - * Feature: Initial Jack midi support. Imported from Larry Valkama's GIT repo. (T356) -26.01.2010 - * Fixed: Import midi 'replace' broken last fixes. (T356) - * Fixed: External midi sync: Wait until first clock after start to start transport, and >= second clock to increment ticks. (T356) -24.01.2010 - * Added: Midi sync: Added 'Jack timebase master' checkbox, removed requirement of MusE being tempo map master. (T356) - * Added: While on external sync and Jack timebase master, reports correct MusE BBT info to Jack. (Tempo not correct yet). (T356) - * Added: Midi import option: Whether to split imported tracks into multiple parts. (T356) -23.01.2010 - * Fixed: External midi sync in: MusE transport not rewinding upon reception of start. (T356) - * Added: Midi sync: MusE now transmits and receives some MMC commands, and displays some MTC and SMTPE info. (T356) - - No transmit MTC or receive MTC syncing yet, just transport control stuff. - - Tested OK with Rosegarden and Ardour, but they do not seem to have an option to sync to the input midi clock, - only MTC or internally. Must test when MTC output added to MusE. - * Improved: Midi sync editor window: Shows MMC and MTC activity and works with them now. (T356) -21.01.2010 - * Fixed: First tests: External midi sync in works now! Should be rock solid no matter what is thrown at it. (T356) - - All changes are labeled "p3.3.25" - - Switched to a 'direct drive' method instead of 'calculation of tempo' method. - Drift between source of master and slave is non-existant since the incoming midi clocks - drive the midi engine directly. This is at the expense of exact 64th note resolution. - At MusE's fixed 24 midi clocks per quarternote, triplet 32nd notes are resolved (32nd note divided by three). - MusE's default 'division' (ticks per quarternote) is 384. 384/24 gives a division of 16 MusE 'ticks' per midi clock. - - Normally when using the tempo map (external sync is off), device play event times are in frames, - because the tempo map provides for that kind of sub-tick frame resolution. - But now, during external sync, device play event times are in ticks, not frames. - Hence the compromise between exactness of note times, and master/slave drift. - - Tested heavily with a Roland TR-505 which has a variable 'analog' tempo knob. - Combined that with a complete midi song, and other test 'tick' tracks driving external synth KB, - was rock solid going 'absolutely nuts' with the tempo knob up to 260BPM, surprisingly good resolution. - - TODO: Check safety of 'midiExtSyncTicks = 0' inside audio thread while midi thread is counting it up. - Also fix seek operations and check for any more place needing these 'tick'frame' alterations. - * Changed: Some more changes for compressed files operations. (T356) - - More to be done, but tests OK so far. -19.01.2010 - * Fixed: Saving/loading compressed .gz/.bz2 MusE .med files, + loading compressed .mid/.kar files (save broken, off for now). (T356) - - Changed filedialog.cpp:getSaveFileName() and MusE::loadProjectFile1. - - Added seperate save file dialog filters in globals.cpp. - - Disabled exporting of compressed midi/karaoke files (.mid/.kar) for now because - a compressed file is opened as a pipe, and pipes can't seek, resulting in a - corrupted midi file in MidiFile::writeTrack(). -18.01.2010 - * Added: Piano roll and drum editor edit menus: "Select prev/next part". With default hotkeys Alt+Left/Right. (T356) - - This is an easy way to switch parts when multiple part editing in one window (via Ctrl-E or Ctrl-D). - And it was absolutely essential, for multiple dedicated controller track editing since there are no notes, - and no (other) way to select another part to edit. -17.01.2010 - * Feature: MusE now has two mixers, with selectable track type display. (T356) - - Changes to .med file were needed. Tested OK so far with old and new song files. - * Fixed: Builtin freeverb and TAP reverb ladspa GUIs, or custom user GUIs not showing controls. (T356) - - Broken since removal of musewidgetsplugin library months ago. - Added PluginWidgetFactory class to handle local creation of controls. - (Custom user GUIs must be done by hand since the removal of musewidgetsplugin library). - * Fixed: Appearance settings red colour adjustment larger than others. (T356) - * Changed: Default controller graph foreground colour from blue to medium orange. (T356) - - Avoid clash with blue colour used by left and right markers. -12.01.2010 - * Release: 1.0.1 (rj) -10.01.2010 - * Fixed: python detection exchanged for script from http://libvirt.org/ (rj) -09.01.2010 - * Removed: Disabled watchdog thread. (T356) - - Tested OK (normally) without it, although behaviour needs to be tested if audio or midi thread - would stop unexpectedly. - * Changed/Fixed: Thread priorites: Added command line switches for audio (-P) and midi (-Y). (T356) - - Audio (-P) applies to dummy driver only. (Else audio priority is fixed by Jack). - - Also changed default settings so that no two threads have same priority. May fix problem reported - by user GB, concerning high midi latency. - * Added: Enable/disable LASH command line switch (-L), (if LASH support is compiled in). (T356) - - Helps prevent some issues like auto-starting Jack, or automatically routing midi to fluidsynth (observed). -07.01.2010 - * Fixed: BUG ID: 2879426: *.med does not save meta event types. (T356) - - Changed midievent.cpp MidiEventBase::write(). Now saves value A, B, C and sysex/meta data. Tested OK. - * Fixed: Midi meters now show for each track even if they're all on same device and channel. (T356) - - Oversight, long overdue. The meters AND automation control needed to be 'per-track'. - * Applied: muse-destdir.patch Scripts and utils packaging fix submitted by Orcan Ogetbil. (T356) -06.01.2010 - * Feature: Jack transport enable/disable in Midi Sync settings window. Stores setting per-song. (T356) - - Should be Ok to use and test. Needs a bit more work. See jack.cpp and jackaudio.h - * Fixed: Speedups of audio pre-fetch especially when moving the cursor around (seeking). (T356) -23.12.2009: - * Added: DeicsOnze2 initial import. (ng) - * Fix: deicsonzepreset.cpp for Xml muse 1 API -20.12.2009: - ======================================= - * 1.0 tagged (rj) - ======================================= -19.12.2009: - * Feature/Fix: Audio metronome: Send output tracks now selectable in Settings->Metronome. Also fixed bad noises.(T356) -15.12.2009: - * Patch: New patch for 64-bit memory issues, from Daniel Kobras (rj) - * Reworked: Output of configure script to point out deprecated stuff and list the interesting stuff (rj) - * Fixed: Old bug: WaveTrack muting slow to respond or odd behaviour. (T356) - - Removed track mute check in WaveTrack::fetchData(). Was causing 'delayed repeated muting' since the mute check is - done at a time when audio segments are fetched which are to played a few seconds into the future. - Tested OK so far, playing and bouncing wavetracks. Mute is now quick to respond and does not 'repeat' or 'delay'. -14.12.2009: - * Fixed: Overhauled AudioTrack processing. Fixes noises if multiple output routes exist. Eliminates costly redundant - processing of audio tracks, and their effects racks. Waves, groups, inputs, outputs, synths etc. (T356) - - Made better use of AudioTrack::outBuffers, as a 'post-effect/pre-volume' caching mechanism if the track has more than one - output route. WaveTrack was already using this scheme, but I moved it up 'higher' and now all tracks benefit from it. - - See AudioTrack::copyData() and ::addData(). Most changes there. (Comments included!) - * Fixed: Old songs made before recent synth changes were not loading their synths. (T356) - - In .med file, added synth 'label' tag to go with existing 'class' tag, to support synths like dssi-vst. - - Songs made recently after the changes might not load their synths and will simply have to be re loaded and re-saved. -07.12.2009: - * Fixed: Add Synth popup menu: Show names AND descriptions. Now sorted, too. Also separate MESS, DSSI, VST, and Other. (T356) - - Added app.cpp:populateAddSynth() function. - * Fixed: Increased buffers for reading xml. Song files with large patchdata from vstis caused crashes (rj) - * Fixed: Self inflicted bug with setting inital song loading in general configuration (rj) -06.12.2009: - * Fixed: List popup synths by description. Cleaned up soft synth main list. Added persistent names, descriptions, ver, etc. (T356) -05.12.2009: - * Fixed: ddsi synths: Ticking or crackling when more than one output route path. (T356) - - The synths were being run more than once per process cycle, due to multiple out routes eventually calling getData. - - ** Work in progress - must also do MESS synths and other track types which should only process once per cycle. - * Feature: SSE support configure build option and SSE enabled dsp routines added. (T356) - - Currently none of the routines are actually used, yet... Borrowed from MusE-2. - - They appear to only be enabled for 64-bit CPUs. Investigating why not 32-bit... - * Feature: i386 optimized dsp float buffer copy routines. (T356) - - Should work on all i386 compatible CPUs (uses asm movsl). Borrowed from MusE-2 - - I couldn't bear to add yet another unoptimized memcpy usage, so I added this. - * Changed: All audio buffers now allocated with 'posix_memalign' instead of 'new'. (T356) - - Borrowed from MusE-2. -03.12.2009: - * Fixed: Support for initial vst chunk storage support if available in dssi-vst - requires a patch to dssi-vst. - * Fixed: Better cleanup on closing MusE. (T356) - - Added Song::cleanupForQuit called from Muse::closeEvent. Disconnect gracefully from LASH before app quit. - Clean up memory. Make vst synth processes which were in undo or redo list at close go away. -02.12.2009: - * Fixed: Do not send default midi values back to dssi synths. Let them handle their own default setting mechanisms. (T356) - - Also saves a bit of loading time for synths with hundreds of controls. See MidiPort::setMidiDevice(). -02.12.2009: - * Fixed: dssi: Crashes when loading most vst synths. (T356) - - All ports must be connected even if not used. - Made sure all audio in/out and control in/out ports are connected, - including latency control out port. Test Ok. -30.11.2009: - * Added: Configuration option for vst plugin in-place processing, fixes ladspa vst plugins not working or loud feedback. (T356) - - Hmmm, they were working before when I upgraded OS. Now they're not. Extensive testing: It seems this is not MusE's fault. - - R.J. reports they weren't working too. Investigating... -29.11.2009: - * Fixed: dssi: Loading of synths with more than 2 out channels. (T356) - - Currently only the FIRST TWO channels of the synth will be used. - - Tested ok so far with A.D. drumkit. -28.11.2009: - * Fixed: dssi: List only synths found, not effect plugins. (T356) - - Does the exact opposite of what dssi-vst does for ladspa plugins, - therefore all plugins should be covered - effects will be listed - in ladspa effect dialog, while synths will be listed as synths. -27.11.2009: - * Fixed: dssi: Both native guis and vst guis should open now. Ooooh - pretty! (T356) - - ** But still: Keep an eye on your process list and manually kill any - synth instances lying around after exit. For now try to 'politely' - close dssi guis and delete any dssi synth tracks before exiting muse. - - Working on gui open-close-reopen-show-hide stuff. Kinda weird esp. with vsts right now... -26.11.2009: - * Fixed: Loading dssi crash bug. Should at least load them now. (T356) - - Also some controller functionality via track controllers... -25.11.2009: - * Feature: Dis.. Dis.. Disposable wha? (T356) - - dssi support. Work in progress. - - ** VERY IMPORTANT Currently you must manually 'kill' any synth instances lying around after exit !!! - - Should work OK for tests and fun... -22.11.2009: - * Added: Support for reading ogg files through libsndfile (rj) -18.11.2009: - * Fixed: Audio and synth tracks not processing when output path ultimately leads nowhere. (T356) - - ALL tracks now always animate meters, and process audio 'quietly', and synth tracks - process their gui messages, if output path leads nowhere. - - This fixes a few problems: For example fluidsynth was not allowing loading of soundfonts. - And synths would suddenly 'dump' any backlogged events when processing was turned back on. - And during play, when disconnecting and reconnecting the track outputs, the audio would be - out of sync because it was not processed during that time. - - See Audio::process1() to understand the changes more. Follow from there to SynthI, SynthIF etc. - * Fixed: Minor issue with port 0 display in track list port column for synths, from previous fix. (T356) -17.11.2009: - * Changed again: Arranger: Track list: Left click synth track's port column now lets you choose a port. (T356) - * Fixed: Do not list synths as instruments in ports/synths settings window. (T356) -16.11.2009: - * Added: Script functionality moved from PianoRoll to song class, available in main menu (under 'Midi') - and drum editor (mg) - * Added: 'Add synth' sub-menus now automatically assign the instance to a free midi port. (T356) -15.11.2009: - * Added: Added 'Add synth' sub-menu to main 'Edit menu' and Mixer 'Create' menu. (T356) - * Changed: All audio track types now start with two channels and 0db volume. (Input tracks remain muted as usual). (T356) - * Fixed: Organ synth: Drawbar harmonics and sustain midi controllers were not working. (T356) - - Applied auto-bias corrections. -14.11.2009: - * Added: DoubleSpeed plugin script for PianoRoll (mg) - * Fixed: Disable Python ifdefs (mg) -13.11.2009: - * Feature: Mixer labels: Auto-Font-Size(TM) using Appearance Settings font # 6. Word wrap (only with spaces) supported. (T356) - - The mixer labels will try to fit the text, trying font size from font #6 point size down to point size = 5. - * Feature: Arranger: Track list: Right-click 'Add ...' now lists soft synths ! (T356) - * Feature: Arranger: Track list: Left/right click synth track's output port column now shows synth gui ! (T356) - * Changed: Midi track info: Removed redundant track name box, changed label to behave like mixer strip. (T356) - * Fixed: Appearance Settings: Manual entry into font name boxes now works. (T356) - * Fixed: Appearance Settings: Added tooltips to font #0 - #6. Explains which font does what. (T356) -12.11.2009: - * Fixes: Some Python API refcount code added (mg) -10.11.2009: - * Added: Effect disable/enable + add/remove track to Python API (mg) -09.11.2009: - * Feature: Added 'Echo recording to output' button to midi track info panel. (T356) - - Turns on or off echoing of incoming record events to output device. - * Fixed: Midi tracks not recording when no output device selected. (T356) - - Now tracks will record with no output device selected. - * Fixed: Problems since increasing number of midi ports from 16 to 32 several months ago. (T356) - - Added Xml::parseUInt() and ::uintTag(), utils.cpp:u32bitmap2String() and string2u32bitmap(). - - Fixed saving and loading of input port mask in med files. - - Fixed display of input port mask in track info panel. -08.11.2009: - * Added: First test shot at part managing app in Python (mg) - * Added: Python api functions for selected track + import of part file (mg) -06.11.2009 - * Fixed: Python configure.ac problems. (T356) - * Removed: musewidgetsplugin (QT3 Designer widgets plugin) which may cause CVS build to fail with libtool2. (T356) - - Infamous '-o' trick no longer required to build from CVS. Removed until further notice. -04.11.2009 - * Added: Shortcuts to drumeditor + pianoroll: goto current pos, scroll left + right (mg) - * Fixed: Added command line switch (-y) for enabling Python control - disabled as default (mg) - * Added: Shortcut keys added to pianoroll and drumeditor (mg) - * Added: Startup dialog showing 'good to know' info, can be disabled (rj) - * Added: Song info dialog, can be used to record song related arbitrary text information (rj) - * Changed: the output limiter is now configurale, and by default off (rj) - * Fixed: Midi loop recording now honours the transport cycle record mode setting. (T356) - - Cycle mode REPLACE: Only record notes in current loop. Erase any previous loop notes from rec stop pos to loop end. - - Cycle mode NORMAL: Same as REPLACE, but don't erase any previous loop notes from rec stop pos to loop end. - - Cycle mode MIX: Keep all recorded notes from all loops. - - Use the transport record mode OVERDUB or REPLACE as usual to either mix with or replace existing track notes. - * Fixed: Midi record (incl. new part, looping, part auto-extend) now honours the arranger snap selection. (T356) - - Previously the left and right ends of the part would always be 'snapped' to bars, and any new notes recorded - past the end would not snap the part. - * Changed: muse/mpevent.h: Changed MREL list from using audioRTalloc to midiRTalloc. (T356) - - This must have been a mistake? midiRTalloc was not even being used anywhere before. The comment lines gave clues. - * Fixed: Multiple copies of wave events appearing in wave parts after resizing part. (T356) - - Changed EventList::find() to respect wave or midi. D'oh! Missed this obvious one from changes I made many months ago. - * Fixed: Audio loop recording now respects arranger snap setting. (T356) - - Previously the left and right ends of the part would always be 'snapped' to bars. - * Fixed: Audio recording now respects punchin and punchout points. (T356) - * Fixed: Audio loop recording now works (currently replace mode only). (T356) - - WORK IN PROGRESS: Only overwrite (replace) mode supported. Working on overdub mode... - - If recording is started INSIDE the loop points, then allowed to loop, the - 'zeroth loop' wave contents will be 'shifted' back to the left loop point. - This may have to change if mix mode is to be supported. In other words - keep that 'zeroth' portion of wave in place. May change it anyway. -02.11.2009 - * Added: Midi track controller + audio track volume to Python interface (mg) -28.10.2009 - * Fixed: No, or badly shifted wave recording, since libsndfile 2008-05-11 (T356) - - Fix for recorded waves being shifted ahead by an amount equal to start record position. - - Removed _recFile->seek() in AudioTrack::record(). Since libsndfile 2008-05-11, "seeking past - end of file during write" is allowed, which caused problem with the line seeking the record - file to an absolute frame which *included* the recording start position. -25.10.2009 - * Added: Mute functionality to Python interface (mg) - * Fixed: Midi mixerstrip mute update issues (mg) - * Fixed: initialization in pandelay ladspa plugin (rj) -21.10.2009: - * Added: functions for looping to Python interface (mg) -19.10.2009: - * Added: more functions to Python interface: deletePart, set position of locators, get/set song - length, get division, set midi track parameters (mg) - * Added: now possible to create and modify parts via Python bridge (mg) -18.10.2009 - * Added: backported ladspa plugins doublechorus and pandelay from svn-muse (rj) - * Fixed: Mixer was not updating when a midi track's channel was changed. (T356) - - Created a new song changed flag SC_MIDI_CHANNEL and used it to only update mixer midi strips, - not the whole mixer. Changed AudioMixerApp::songChanged() and ::updateMixer(). - * Fixed: Mixer was not shrinking enough when a track was removed, leaving space between strips. (T356) - - Added a couple of lines to AudioMixerApp::updateMixer() STRIP_REMOVED section. - * Fixed: Bug with reading soundfonts from song dir fixed (rj) -17.10.2009 - * Examples: added some example scripts, DoNothing and RemoveShortEvents (currently requires PyQt4) (rj) - * Added: more tags to plugin format in pianoroll, see readme in dist: share/scripts (rj) - * Added: Updates to Python API, now possible to modify part data. Needs a lot of testing (mg) -16.10.2009 - * Added: Added a few functions to Python remote API (start/stop playback + location queries) - * Feature: Each drum instrument listed in the drum map now has a playback 'volume' setting. (T356) - - Currently it affects playback only. I am looking to maybe add record level, too. - * Changed: Default drum map velocity level 3 (110) and 4 (127), now 127, 110. (T356) - - To allow easy (no key hold) drawing of default 110 velocity notes. - (Hold shift = 127, ctl= 90, shift+ctl = 70) - * Fixed: Drum editor controller graphs now align perfectly with editor canvas. (T356) - - Changed DrumEdit::newCanvasWidth(). - - Tested OK with various appearance themes, and various vertical splitter positions. - * Fixed: Drum map length, velocity level, and volume columns rapid mid-/right- clicks causing left double-clicks. (T356) - - Now the columns can be quickly mid and right clicked (decrement/increment). - * Fixed: Fluidsynth now realizes that a soundfont was located in the song-dir and then omitts - the path in the configuration data. (rj) - * Changed: Changed the format of the datafile for the automation option in the pianoroll - Mathias, we can wrestle about it later ;-) (rj) -15.10.2009 - * Feature: First version of MusE remote Python control (mg) - * Fixed: Drum canvas 'select' functions not updating, can't copy/cut etc. (T356) - - Added updateSelection() to the end of DrumCanvas::cmd(). Tested OK. -12.10.2009 - * Feature: External scripting functionality added via PianoRoll menu: (mg) - PianoRoll scans INSTPREFIX/share/muse/scripts and ~/.muse/scripts for executables, which modify part - data via data stored in temporary file - -25.08.2009 - * Proposal: new default colors for various stuff (rj) -12.08.2009 - * Fixed: bug 2811156, soft synth and marker window no longer appear when hidden for XFCE window manager (rj) -15.07.2009 - * Patch: from bug 2819312 (by Gerardo Exequiel Pozzi) added. Allows muse to launch with never glibc. The fix is - perhaps not fully understood but it looks harmless. (rj) -09.07.2009 - * Changed: Track info program, vol, and pan spinboxes now lose focus with one enter press instead of two. (T356) -05.07.2009 - * Fixed: Small fix on behalf of T356, Jack should not be started if running -a (rj) - * Fixed: Help menu -> Report a Bug: Set address to current muse org bug address. (T356) -01.07.2009 - * Fixed: Dropdown menus in transport no longer grab focus, make space start/stop work again (rj) - * Fixed: Dropdown in Mastertrack editor no longer grabs focus (rj) - * Feature: Added denormal protection, by default on, can be turned off in global config (rj) -25.06.2009 - * Fixed: Recording of midi sysex was not working. (T356) - - My fault since recent midi sync changes. Fixed the last few lines in alsaProcessMidiInput(). - * Fixed: Segfault when certain movements are done in track list. (T356) - - Added valid track check to RESIZE section of TList::mouseMoveEvent(), - and a few other places. -23.06.2009 - * Testing: A fix for some Jack-2 net problems... (T356) - - Added missing break statements, and JackTransportNetStarting detection - (hard-coded as '4' for now so that muse will build with Jack 1 and 2 - we need - config detection of Jack version!) to processSync(), and JackAudioDevice::getState(). -21.06.2009 - * Feature: Added Jack freewheel mode. (T356) - - Dramatically speeds up bounce to file and bounce to track operations. - With freewheel enabled, you don't have to wait for Muse to play the song - at normal speed while bouncing - it goes as fast as possible. - - Added configuration option for it. See 'Global Settings -> Audio'. -20.06.2009 - ======================================= - * 1.0rc3 tagged (rj) - ======================================= - * Feature: Jack transport master functionality added. (T356) - - Allows other Jack client apps to properly disply Muse's current bar, beat, and tick. - - Especially useful for songs with tempo and time signature changes. - - It is activated / deactivated by clicking on Muse's transport 'Master', - or Muse's graphic Mastertrack window 'Enable'. -17.06.2009 - * Fixed: Segfault after creating simpledrums instance, then adding a midi track. (T356) - - Return non zero in SimpleSynth::getPatchName(). -15.06.2009 - * Removed: Some code in jack driver which may cause shutdowns or static noise with Jack version 1 (T356) - - Tested several hours here, no shutdowns or sudden static noise. Thanks to the Jack team for that one... -13.06.2009 - * Fixed: New midi right-click popup menu 'add/set event' and 'erase event' not working for drum controllers. (T356) - - Also, on 'add/set', added check and ignore if an existing event value is already equal. - * Fixed: Midi track info vol, pan, prog 'Rec' buttons were allowing duplicate events. (T356) - - Added check for existing event in Song::recordEvent(). - - Also added check and ignore if event value is already equal. -10.06.2009 - * Fixed: Link error concerning libmidiedit.a and CtrlEdit.a (T356) - - Somehow the list of link libraries was out of order. Reordered, tested OK. -05.06.2009 - * Fixed: Users in some locales reported audio automation save/load corruption. (T356) - - Changed CtrlList::read() to use QString and QLocale instead of strtol() and strtod(). - - Checked: Other places using QString::toDouble() work OK because QString will fallback - to 'C' locale if formatting using current locale fails. (Hmm... But is it a speed hit?) - * Fixed: When linking, get errors concerning uuid functions not found. (T356) - - Added a section in configure.ac to test for uuid.h and libuuid. - - Added uuid lib to list of linked libs. - * Fixed: Midi port controller values not erased upon song load. (T356) - - There were leftover ghost values in the controller graphs between song loads. - - Added MidiCtrlValListList::clearDelete(), called from Song::clear(). - * Added: Right-click automation popup menu to all midi controller knobs/sliders. (T356) - - Contains add/set event, and erase event. - - When activated by the muse mixer midi controls, it 'prefers' selected parts on the track - over unselected parts, otherwise it chooses the first part found. If no part is found, - it creates a new one to contain the event. - - When activated by pianoroll or drum editor controller graph, it uses the currently - selected part (within the editor). - - Adding 'previous event', 'next event', 'erase range' and 'clear automation', just like - the audio automation popup menu, will take more time. Not implemented yet. - * Disabled: Midi mixer strip automation type button. (T356) - - There is no midi automation recording mechanism (yet). Disabled to avoid confusion with users. - * Added: Some new instrument .idf files submitted by MST (Michael). (T356) - - Akai SG01v, Korg MS2000R, Korg X5DR, Korg X50, Waldorf MicroQ. -02.06.2009 - * Applied: Some patches by Mandriva packagers. (T356) - - muse-1.0-fix-str-fmt.patch for deicsonze printf fix. - - muse-1.0-linkage.patch fixes compiler hang up at deicsonze.cpp. -01.06.2009 - * Fixed: Instrument editor 'Save as' was not working right. (T356) - - Was overwriting existing instrument. - - Now prompts for new instrument name. - * Added text in ctrl view to explain how to add controller values (rj) - -24.05.2009 - * Fixed: Missing uuid header in two files. (T356) - - My fault. Added include uuid/uuid.h to songfile.cpp and pcanvas.cpp. - * Fixed: Bounce to track: Wrong message "Select one audio output track", to "Select one target wave track". (T356) - - My fault. Message is displayed when there is one output and one or more wave tracks, and the user has clicked - on the output but not a track, too. - * Added: Start 'Wave editor' edit menu item, with configurable shortcut key. (T356) - - This will handle mutiple wave part editing. The existing right-click wave part popup menu - 'wave edit' item did that too, but now has been reverted back to opening a single - wavepart only, just like midi parts. - * Streamlined: All reading of 'part' xml is now done by a new routine. (T356) - - Replaced new PartCanvas::readClone(), and existing Part::read(), with standalone readXmlPart(), - in order to block creation of parts with mis-matched type, which don't belong on a track. - - Allowed mixed part .mpt files (midi and wave), and made a new clipboard type 'text/mixedpart'. - - Mixed part files can be dragged, imported or pasted to either a wave or midi track, and only the - relevant parts will be created. - - Added warning dialog showing how many, of how many total, parts couldn't be created. - - Added a parameter to Event::write() and EventBase::write() to force full wave file paths to be stored. - Used for copying, pasting, dragging, importing, exporting parts, but not for the song file itself. - * Added: Right-click wave part popup menu now has 'export', just like midi parts. (T356) - - As mentioned above, the full wave path is stored so there's minimum confusion when re-loading - the export, unless of course the file moved or was deleted etc. - * Fixed: Some issues with clones, controller events, and port controller values. (T356) - - It means "What you see on the controller graph is what you get, when you move the play cursor." - Port controller values are used when moving the cursor, they make the knobs move and send - values to the midi port. However, during play, they are not used, the song's controller events - themselves are used. Synchronizing these two mechanisms is what this is all about. - Fortunately, during play, "What you see on the controller graph" is ALWAYS correct, and is sent - to the midi port. - - TODO: Not quite done yet. Some functions may not update port controller values properly still, - like splitting or gluing clone parts. -06.05.2009 - ======================================= - * 1.0rc2 tagged (rj) - ======================================= - -02.05.2009 - * 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. - * Feature: Redesigned Midi Sync Editor and sync system. To allow multiple inputs/outputs, and more. (T356) - - See tooltips or click on What's This to see detailed explanations of each item. - - 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 -05.02.2009 - ======================================= - * 1.0rc1 tagged (rj) - ======================================= -04.02.2009 - * Fixed: Track info panel 'Rec' button not changing existing values on controller graph. (T356) - - Name changes: MidiCtrlValList::add, ::del, ::find to ::addMCtlVal, ::delMCtlVal, ::findMCtlVal - to make it easier to spot all usages of them. - - Simple fix in MidiCtrlValList::addMCtlVal: Return false if the value is already found for the part. - - TODO: It takes three 'undos' to undo the 'Rec' button push. It is because prog, vol, and pan - are changed. This should be unified into one undo... - -01.02.2009 - * Fixed: Compile error on 64-bit systems, in audiotrack.cpp at cacheJackRouteNames(). (T356) - - Changed from unsigned int pair key, which required pointer conversion, to AudioTrack* pair key. - - Test OK (on my 32-bit system). ** Need 64-bit users to test it. ** - * Fixed: Segfault when playing a note in a drum map, when the note's port says 'none'. (T356) - - Added a line in the 'don't echo controller changes back to software synthesizer' block of - Audio::processMidi(), to check valid device. - * Fixed: Missing or stuck notes or events on recording (or rec-armed only) midi track. (T356) - - Symptom: Playing live (rec-armed only), or recording, on a midi track gives stuck or - missing notes and other events. Very annoying bug! - - Cause: A single list was used for recording midi events, while muse was also reading from that list. - - Employed a 'flipping' two-list technique for MidiDevice::recordEvents(). - - In Audio::processMidi(), process one list while MidiDevice::recordEvent() writes to the other. - * Fixed: Manipulating controller events in midi track parts was not changing midi port controller values. (T356) - - Symptom: Change a part's midi controller events, or move or delete a part, or delete a track, then the underlying - midi port's controller values are not altered, leading to 'phantom' or 'ghost', or duplicate controller values, - even where there is no part or no track, or no controller values where there should be ! - - Oops, how did this major bug go unnoticed so long?... - - Major rewrite: Created a struct MidiCtrlVal{int val, Part* part}, and changed class MidiCtrlValList from - std::map<int, int> to std::multimap<int, MidiCtrlVal> - Changed MidiCtrlValList::add(int tick, int value) to MidiCtrlValList::add(int tick, int value, Part* part), - and MidiCtrlValList::del(int tick) to MidiCtrlValList::del(int tick, Part* part), - and added MidiCtrlValList::find(int tick, Part* part). - Changed Song::addEvent(), Song::changeEvent(), Song::deleteEvent(), Song::addPart(), Song::changePart(), - Song::removePart(), Song::insertTrack2(), and Song::removeTrack2() to make sure port controller values - are added/removed properly. - Changed a few other things to make it all work. - Reasons: The Part* member was added to each controller value item in the list, so that the system can - know exactly which part was responsible for putting a value in the list. - This helps when we have overlapping controller values from events of different parts on the same port and the same channel - - if one of the parts is deleted or moved, the overlapping values from the events of the other part are NOT disturbed - within the port's controller value list. - The list was changed from 'map' to 'multimap' to accommodate the multiple values from events of different parts. - - NOTE: When there are overlapping values from events of different parts, the system will arbitrarily choose the - first value it finds at a given time. I considered 'mixing' the overlapping values together - (by averaging, or maybe highest/lowest value), but I felt it would just cause more confusion for the user. - Therefore it is up to the user to be aware of overlapping controller events and deal with them. - If you are looking at a controller graph and it shows a particular value at some time, but the - midi knobs/sliders and actual midi output does NOT correspond to what you are seeing, then - most likely ANOTHER part on the same port and channel has an event at that same time, and that - event's value is likely the one that is being used by the system. - * Fixed: Changing a midi track's out port or channel was not updating the ports' controller values. (T356) - - Changed MidiTrack::setOutPort() and MidiTrack::setOutChannel() calls to new MidiTrack::setOutPortAndUpdate() - and MidiTrack::setOutChanAndUpdate(), which make sure the port's controller value list is properly updated. - - Part of the larger fixes above. - * Fixed: Midi adjustment knob on controller canvas was not working after moving the part to another track. (T356) - - Added some code to CtrlCanvas::songChanged() to set curPart and curTrack and update the knob, - upon SC_PART_MODIFIED. - * Fixed: Clear midi input transforms when song cleared. Update transform dialog when song changed. (T356) - - Symptom: Repeated loading of songs causes duplication of midi transforms, causing .med song files to grow big ! - - Added clearMidiInputTransforms() to midiitransform.cpp, called by Song::clear(). - - Added updatePresetList() and slot songChanged() to MidiInputTransformDialog, triggered by Song::songChanged. - - Added some code to readMidiInputTransform() to **auto-eliminate** duplicate transforms in existing .med files. - - Still some 'quirkiness' with the dialog buttons, but it works better now. - - ALSO: Applied those same fixes to midi transforms and the midi transform dialog. - * Fixed: Notes not recorded to track for a drum map 'instrument item' having non-default (track) port. (T356) - - Changed to drumRecEvent.setPort(port) in 'Track::DRUM' section of 'if(recording)' section of Audio::processMidi() - so that buildMidiEventList() would accept the notes. - * Fixed: Removed jack midi port names from audio in/out port lists. (T356) - - Added JACK_DEFAULT_AUDIO_TYPE to jack_get_ports calls in JackAudioDevice::inputPorts and ::outputPorts. - * Fixed: Notes were being mixed up when switching a track type between midi and drum. (T356) - - Changed to drumMap[pitch].enote in 'Drum -> Midi' section of TList::classesPopupMenu(). - * Completed: Moving multiple events from multiple parts when editing in pianoroll or drum editor. (T356) - - Work had begun several commits ago. Completed. - - Now you can select and move multiple events from different parts in the editors. - * Feature: When editing multiple parts in the pianoroll or drum editor, controller graphs are now overlaid! (T356) - - When you are editing more than one part at a time in the editors, the controller graph will overlay - all of the graphs together! - - The currently selected part will show its controller as normal blue columns, as before, but the other - unselected parts will draw their controllers as a gray 'ghost' outline on top. - - TODO: Add menu items, hot keys etc. to cycle through each part (in case there are no notes to select in a part!) - * Improved: Support for GS/XG midi drum controllers. (T356) - - Added MidiPort::drumController(). Tells if an event is a drum controller event, according to the port's instrument. - Does it by looking up the event in the instrument's controller list. - Would prefer a 'marker flag', eg use the event 'dataA' high bit to mark as drum controller event, but it's too risky! - Used MidiPort::drumController() a dozen or so places where drum controller events needed remapping/manipulation etc. - May be a speed hit with many/large controller graphs? Test further... - - Added code to update port controller values when changing drum map ANote, channel, or port. - - KNOWN BUGS: Still a few loose ends to tie up: Port controller values (but not track events) may not be correct when: - 'Swapping' (by dragging) items in the drum map, and - loading a song with a drum map which had 'swapped' (by dragging) items. - Some stuff (midi value adjustment knob) is not updated when changing drum map ANote, channel, or port. - Workaround: Be sure to select another drum map item, then reselect the changed item again, after such operations. - * Changed: All softsynth midi controllers now have default initial values. (T356) - - Added default initial values to all softsynth controllers such as fluidsynth's controller map. - - Added 'initval' argument to all ::getControllerInfo() methods, which is passed to the newly created - controller (new MidiController) in SynthI::initInstance(). - - These initial values will then show on the various gui midi adjustment controls, knobs etc. - * Changed: Fluidsynth master gain and reverb initial settings. Gain was too loud and there was too much reverb. (T356) - * Fixed: Follow up - some issues with instrument editor. (T356) - - Instrument editor was sometimes falsely detecting instrument had changed. - - Also, do not list 'internal' instruments like generic midi, soft synths, vst etc. - - Also, upon 'Save As', prompt for a new instrument name if the user hasn't changed it, to avoid duplicates. - - Remove any unsaved (new) instrument when moving to another instrument, closing etc. - - Fixed up tab order of instrument editor controls. - - TODO: When muse wants to close, trap it in the instrument editor so we can save. - * Fixed: Problem in xml parser. '&', '"' etc were being read as '&&', '""' etc. (T356) - - Added a couple of lines, and removed one, in Xml::stoken(). - * Fixed: Zero bias midi controllers (with a negative minimum value, like 'pan') weren't working right. (T356) - - Broken after last changes. Added an updateBias() line to MidiController::read() 'controller' tag end section. - * Added: Send all instrument controller initial (default) values to all of a port's midi channels, - except where explicitly initialized by the song. (T356) - - Added some code to MidiPort::setMidiDevice to initialize controllers from instrument, if needed. - - When setting a midi port's device (such as in Settings->Midi Ports, or simply when loading a song), - then any specified controller initial values in the instrument are sent to ALL of the port's channels, - EVEN if the controller is NOT in the song. This ensures better consistency between songs, so that - chosen controllers are not left in undesirable 'leftover' states. - (Taken from important comments in MidiPort::setMidiDevice(): ) - For example: A song is loaded which has a 'reverb level' controller initial value of '100'. - Then a song is loaded which has no such controller (hence no explicit initial value). - The 'reverb level' controller would still be at '100', and could adversely affect the song, - but if the instrument has an available initial value of say '0', it will be used instead. - - It is desirable to have defaults for some controllers, but it is wise to have NO default for certain - other controllers, like the 'reset all controllers' and 'sustain' controllers (actually, zero would be OK). - * Changed: Clicking Midi->InitInstrument (or moving to song position 0) now initializes controllers - from instrument controller initial values, if they exist, or previously hard coded values if not. (T356) - - sendGmOn() and sendXgOn(), which are called via Audio::initDevices(), now use instrument controller - initial values if they exist, or the previously hard coded values if not. - * Changed: Non-softsynth non-GM drum tracks: Patch popups now show all drum AND melodic patches on ANY channel. (T356) - - For drum tracks, if the song type is not GM, and the track's port is not a softsynth, then all patches - including drum AND melodic are shown for ALL channels when 'select instrument patch' popup is clicked, - regardless of the patches' 'drum' flag setting (in the instrument editor). - (Softsynths handle their own patch popup lists). - - Added a 'bool isDrum' parameter to all populatePatchPopup() methods, which is passed 'true' only - if it's a drum track, and changed a couple of lines in the only class which uses the drum flag - MidiInstrument. - - Previous behaviour was to show drum patches ONLY on channel 10 of drum tracks. - - Reasons for change: 1): A midi device might have a non-standard drum channel(s), so drum patches - as well as melodic patches are shown for all channels. 2): Since any channel can be used in the drum map, - melodic patches are shown as well as drum patches so that any patch can be selected for any channel. - NOTE: Each of a drum track's channels which are used in the drum map should be set to a patch number, - otherwise it doesn't work right ! (**) This is true for softsynth devices too ! (**). - So it was imperative that the user be able to select ANY patch on ANY channel, to suit their setup, - for flexibility. - (If that same flexibility were applied to regular midi tracks (non-drum tracks), it might make the - 'drum' flag for patches obsolete, since there would be no reason to filter them from the list !) - * Changed: All midi controller event values sent to a midi port are now constrained (limited) to the port's - instrument controller's range (if that instrument controller exists). (T356) - - Example: Incoming events from a midi keyboard's pitch wheel range from -8192 to 8191, but it is - desired to limit that range to, say -200 to 8191. One could use the midi input transformer to - accomplish this, but instead now you can simply adjust the chosen instrument's pitch controller range - (in the instrument editor), and then the pitch wheel's range will be limited to that range. - - This only affects playback events (and therefore 'live' incoming events), but does NOT affect - actual recorded data, so that by simply readjusting the instrument controller's range, - or by changing instruments, the range can be restored with no loss of recorded data range. - * Fixed: Cleaned up all .idf files and changed ranges of all 'zero-bias' controls (-64/63 'pan' etc). (T356) - - Many .idf files had bare '&' characters in them, causing corruption of names and values when reading. - - Also turned on the 'drum' flag for ALL drum patches in MANY .idf instrument files. - Some .idf's I was uncertain about, and did not change : AlesisQS6, Waldorf Q. - * Changed: Fluidsynth pan controller range from 0/127 to -64/63. (T356) - - To be consistent with .idf file changes. - * Replaced: All direct calls to MidiPort::setHwCtrlState() from GUI thread, with new Audio::msgSetHwCtrlState(). (T356) - - My fault, I was not paying attention to iter-thread communications. - * Optimizations: Optimized MidiPort::setHwCtrlState(), MidiPort::sendEvent(), and calls to MidiPort::setCtrl(). (T356) - - Optimized MidiPort::sendEvent(). - - Replaced code in MidiPort::setHwCtrlState() with more optimized code. - - Replaced several clumsy calls to MidiPort::setCtrl(), which checked for and created the controller, - with a new optimized MidiPort::setControllerVal(). -06.01.2009 - * Fixed simpledrums/ssplugin.cpp to build with recent Ubuntu 8.10 (FN) -17.08.2008 - * Feature: Muse now has an instrument editor, complete with a midi controller editor! (T356) - - Click on the menu "Midi->Edit Instrument". - - You will see a sysex editor there too, but it is non-functional. (Use the midi event editor instead). - - >>> Tooltips and "What's This?" are provided with IMPORTANT information. <<< - >>> If you want to understand how to use instruments, patches, and controllers in your song, <<< - >>> READ THEM! <<< - * Added: Environment variable MUSEINSTRUMENTS, so a (writable) instrument directory can be chosen - instead of default /usr/share/muse/instruments etc. (T356) - - Also added display of environment variables recognized by muse to command line help (muse -h). - * Fixed: Popup displays of instrument patches to filter according to GM, GS, XG song type, and whether - on drum channel 10. (T356) - - Use the new instrument editor to set these GM, GS, XG, and drum filters. - * Changed slightly: Creation of a new drum track - initialize to channel 10 instead of 1. (T356) - * Fixed: Force audio prefetch seek when play is pressed. (T356) - - In Audio::seek, changed the call of audioPrefetch->msgSeek to force a prefetch, - to ensure the most recent data. Things can happen to a part before play is pressed - such as part muting, part moving etc. Without a force, the wrong (old) data was being played. - - If you perform those same operations while playing, there may be a few seconds delay before you - hear the changes (the play cursor must move a certain distance before they're heard). - - TODO: How to make the same thing happen when transport is externally started, such as from qjackctl. - OR: How to force a prefetch at specific places like when a part is muted, and when it is moved, - instead of just before play is started. That way the operations can be done quickly while playing. - * Fixed hangup: Upon loading of songs with fluidsynth soundfonts which can't be found. (T356) - - (!) Removed error message box from FluidSynthGUI::processEvent causing freezeup. - - You can still read fluidsynth errors by running muse on a command line. I figured it was - better to be able to load the song and to see errors, instead of just letting it freeze. - - This should now allow you to share fluidsynth songs with other people (without the soundfonts). - * Fixed: Audio aux tracks not working, intermittent. (T356) - - Aux functionality was intermittent depending on whether the aux had out routes, - and whether any tracks feeding the aux had out routes, and other factors. - - In Audio::process1, rearranged, and added, some code to make aux work all the time now. - * Speedups: To some songChanged() functions. Ignore unnecessary flags. (T356) - - For example simply adjusting midi gui controls would cause costly and - unnecessary rebuilding/redrawing of certain areas, like parts of trackinfo, and controller graphs. - - Noticeably less 'slugglish' when adjusting controls now. - * Fixed: Midi controller events not being added to midi port controller, after record with no part. (T356) - - Symptom: If you record midi controllers without first creating a part, muse creates the part - for you and creates the controller graph OK, but when you move the play cursor around, the graphs - have no effect. This doesn't happen if you first create the part to record into, or manually edit a graph. - - Symptom: As above, the graph is OK, but the controllers don't show up in the list when you click 'ctrl'. - - Changed a line in song::cmdAddRecordedEvents() to use addEvent() instead of adding directly to list. - * Fixed: Automatic detection of pitch bend wheel not working. (T356) - - Added some code to MidiPort::sendEvent to detect ME_PITCHBEND events. - - Note: There appears to be a sound system bug (using ALSA 1.0.15): The system will NOT deliver any pitch - bend events to muse until ANOTHER controller is detected, ex. move the modulation wheel THEN the pitch wheel. - Verified with another app - RG - and with a real midi hardware to hardware connection (not my KB's fault). - * Observed: Stuck or missing midi notes when recording or even just 'record armed only' 'live' playing. (T356) - - The sound system appears to be having occasional trouble detecting midi events, including note-off ! - Verified with muse and RG (using ALSA 1.0.15). Not sure why or when this started, seems early this year... - * Linked: All midi knobs and sliders with their labels. (T356) - - Now they work together when displaying and adjusting. - - After careful consideration of the meaning of 'off' in those - labels, you now double click the label to turn the midi control on/off. - Off does not mean 'zero'. Rather, it means: - 'Don't save this current value in the song file'. - When a midi control is 'off', loading the song won't initialize the controller with a value. - 'Off' means the current value is set at 'unknown'. 'Unknown' means the actual - 'behind the scenes' hardware value is the last value that was set. The knob or slider still - shows this value, or a default initial value, or if both of those are unknown, then 0. - * Changed: Midi and audio level slider/knob labels to show '---' for infinite attenuation. (T356) - - As mentioned above, the midi level slider labels can also show 'off'. - * Fixed: The new midi controller knob in pianoroll and drum editor. (T356) - - It was not adjusting anything. - * Fixed: Midi vu meters again. Now they should work! (T356) - - They were not responding to play events with an off velocity other than zero. - * Fixed: Marker view window doesn't remember if it is open or closed. (T356) - - Add a markerClosed function to app. - * Reverted: Back to audioRTalloc in mpevent.h (T356) - (!) - I had changed it to midiRTalloc, but that may have been causing problems like - midi shutdown (audio OK) after a few hours, and crash soon afterwards. - Verifying... No more midi shutdowns after a few hours, so far... - Ooops, not so fast, happened again... -30.04.2008 - * Fixed bug in drum editor. Dragging the splitter too far left causes runaway resize, stuck in loop. (T356) - - Tried several different arrangements, but QSplitter won't behave the way I need it to. Best I could do, so far. - - You may notice some strangeness, like the controller graph not aligning with the matrix, if the right edge - of the window is offscreen. - * Added 'add/set event' to audio automation right-click popup menus. Ancient request by R.J. (T356) - * Fixed arranger midi strip and arranger top controls not giving up keyboard focus after adjustment/entry. (T356) - - Further request by user G.B. Changed all relevant QSpinBoxes to custom SpinBox, which behaves like this: - Click up/down, or mousewheel, or hit enter with un-modified text (which means enter TWICE for modified text), - and the control will give up focus, thereby allowing you to use global shortcut keys afterwards. - Up/down keys still keep the focus. - - TODO: Piano roll and drum editor. - * Fixed major problem with lost jack routes upon file save, when save causes a jack shutdown. (T356) - - Symptom: You click save, but jack shuts down during the save, causing lost jack routes in the file. - - Fix: Cached the jack route names before file save, then used them during AudioTrack::writeRouting() xml code. - Note this doesn't actually stop shutdowns from happening - now it just saves your files without losing jack routes. - * Fixed mysterious intermittent wave part muting, as mentioned in 11.03.2008 (T356) - - !!! PartList and EventList are now sorted by frame instead of tick, for wave parts only. Because fetchData() - didn't like sorting by ticks. This is a radical change. So far, no other areas found requiring further coding, but... - * Overlapping wave parts and events now mix together, instead of one part or event taking priority over others ! (T356) - - Virtually no speed hit, since muse was already cycling through all the wave parts/events, - just not mixing them together. So the very LAST wave part/event in the part/event lists was - taking priority over others. - * Fixed default instrument midi controller min/max values. (T356) - - Symptom: Some pianoroll midi controller graphs much too small or too big, vertically. - - Cause: You added these controllers to your track as a midi instrument, ex. General Midi (GM), then you - changed the instrument, ex. to 'Generic Midi' or another instrument without those controllers, - which set improper min/max values. - - Fix: Added code to MidiPort::midiController() to set proper min/max values based on standard controller type. - However, if the original instrument used CUSTOM min/max values, the graph may still be distorted. - * Fixes to midi event list editor. (T356) - - Added true sorting of event list. Now you can click on column headers to sort as desired! - - Added formatted program number display (like 1-1-120) for 'Val B' column. - - Fixed Poly After Touch events display in list. They were being listed as Channel After Touch. - - Fixed crash when 'Delete events' clicked with no actual items selected. - - 'Edit Contoller Event' dialog: - - Fixed 'Create New Controller' popup list: Now it actually creates the selected controller. - - Fixed 'Program' controller not showing correct program after selecting other controllers in list. - - Fixed too high initial value displayed for controllers without an initial value in the instrument file. - - 'Enter Poly After Touch' dialog: - - Fixed uneditable note box. Switched from PitchLabel to PitchEdit. - * Feature added - Pianoroll and drum editor controller graphs now have a static manual adjustment knob ! (T356) - - Now you don't have to enter controller graph values to adjust a setting, just turn the knob. - * Changed 'Create New Controller' in event editor 'Edit Contoller Event' dialog, and 'add new...' controller popup - list in piano roll. (T356) - - Now they only list controllers not already added, instead of all of them. - * Fixed 'Position Edit' controls (0001.01.000 + up/down buttons) - click 'down' nothing happens. (T356) - - Added updateButtons() call to PosEdit::setValue(). - * Fixed Mixer midi strip variation, reverb and chorus send knobs not enabled after controllers added. (T356) - - Now you only need to create the controller to enable the knobs, allowing you to set a manual value without - having to actually create one or more controller events first. - * Fixed midi trackinfo pan value not the same as midi mixer strip pan value. (T356) - - Trackinfo pan now goes from 'off' (-65) to -64 to +63. - * Fixes to fluidsynth. Would crash when getting patch names from an 'unspecified' soundfont. (T356) - - In fluidsynti.cpp, various places check for FS_UNSPECIFIED_FONT only. Added check for FS_UNSPECIFIED_ID. - - Not sure if FS_UNSPECIFIED_FONT is redundant and unnecessary, but left it there anyway. - * Fixed old bug - IntLabel control - right click causes popup and runaway increment. (T356) - - Fixed NEntry widget. Same fix as for double entry widget (DEntry), somewhere way down on this change log... - * More fixes to wave part gluing/splitting/drawing/playing. (T356) - - Now all splitting/gluing of wave parts, even overlapping ones, even multiple times, should work. - - Fixed problem in WaveTrack::fetchData causing it to read too many samples of wave events. - * Fixes and changes to bounce functions. (T356) - - Fixed garbled target track or file. processWrite() was writing ALL the Audio Outputs to the file or track, instead of just one. - - Feature: Bounce to track (from menu): You now first select any single Audio Output track, and any single target Wave track. - - Feature: Bounce to file (from menu): You now first select any single Audio Output track. - * Fixed some problems with Mastertrack window. (T356) - - Mastertrack window was causing tempos to be inserted into tempo list, if window open when project loaded. - - Added signature list change event handling - to update signature value box. - - Fixed drawing of signature scale after signature list change. - * Fixed wave editor 'reverse' function crashing. (T356) - * Fixed track list not highlighting wave tracks (default green) when selected in the arranger window. (T356) - * Fixed midi VU meters, again. (T356) - - Borrowed idea from Muse 2. Self-decay the meters in midi strip code, rather than the midi thread code. - - The midi VU meters self-decay at a rate determined by the GUI update rate in the configuration. -11.03.2008 - * Fixed arranger controls not giving up keyboard focus after adjustment/entry. Requested by user G.B. (T356) - * Fixed gluing/splitting of waveparts. (Known bug of 02.02.2008 is gone now). (T356) - * Fixed playing, and arranger/waveeditor drawing, of glued waveparts. (T356) - - 'Working on' of 26.01.2008 is done. - - Drawing of waveparts, even 'glued' ones, now fully respects tempo changes. - * Fixed 'glued' mono + stereo wavepart drawing. Was drawing outside track if track height small. (T356) - * Fixed soloed/muted wavetrack audio 'bleeding' into other wavetracks. fetchData() was not checking isMute(). (T356) - * Fixed part colour popup to change unselected clicked item colour if no parts selected. (T356) - * Fixed recent possible accidental(?) change of tracklist xml tag 'header' to 'header1'. (T356) - - Muse was complaining: Tlist: unknown tag <header> at line 32 - * Fixed MREventList in mpevent.h, to use midiRTalloc instead of audioRTalloc. (T356) - - Possible accidental(?) coding error since there is no other usage of midiRTalloc at all in muse. - - If it does help at all, it might just ease RT congestion a bit. - * Working on MIDI VU meters. They're too fast to see with jack, but should be OK with dummy driver. (T356) - * KNOWN PREEXISTING BUGS - - If you move waveparts around AFTER the current play position, then play, muse actually plays the same - arrangement as if you had not moved the waveparts at all, just one time - rewind the play position and - it corrects itself. This is because muse does not prefetch the audio again after the movement of the parts. - Workaround - After moving waveparts, be sure to rewind the play position to a point AT LEAST before those parts. - - Wave parts will sometimes mysteriously go silent for no reason. Move the parts slightly, or reload, or do - certain other operations, then the sound comes back. Working on this important issue! -02.02.2008 - * Fixed a slight error in BigTime absolute display. Now shows proper absolute tick and frame values. (T356) - * Added an extra arranger wavepart right-click popup menu item - "file info". - Shows what wave file(s) are used by the wavepart event(s). - TODO: Either remove duplicate file names or list the files by event number. - Spice up with more info like wave starting/ending points etc. (T356) - * Removed some debug output lines from dummy driver - may have been causing intermittent crashes when moving position. (T356) - * Some more fixes to arranger partcanvas wavepart drawing - speeded up and tightened code. - KNOWN BUG: Does not correctly display more than one wave 'event' (file) per wavepart. (For ex. two waveparts 'glued' together). - Working on this issue ! (T356) -27.01.2008 - * Fixed MIDI mixer strip VU meters. Let there be light! Not the best solution, a choice between two so-so methods. - Looking at how to improve it... (T356) -26.01.2008 - * Pianoroll and drumedit now open at the current cursor position. (T356) - (The cursor position is that moving black vertical line on the time scale). - This means you just click on an arranger midi part where you want to open the editor. - * Arranger, pianoroll, drumedit and waveedit now stay at their current (left-side) position when you use the scale bar. (T356) - * Fixed 'end of part' drawing problems - now you are guaranteed to see about 1+1/4 extra bar after the end - of a pianoroll/drumedit (also compensating for drumedit drummap/canvas splitter), allowing you to - add/move/clone notes past the end and allowing muse to properly auto-extend the part (to the right). - TODO: Auto-extend parts to the left when necessary. (T356) - * Added vertical, and fixed horizontal, lasso/parts/events auto-scroll - even past the end of parts. (T356) - * Fixed drawing of wave parts in arranger. Now you can rely on the 'picture' of the wave inside the part - lining up correctly with the time scale, regardless of tempo/timesig changes in the song. (T356) - * More fixes to wave editor. Fixed drawing of markers - they were much too close together. - Added songChanged synchronization with arranger (you move/resize a wave part and the wave editor readjusts, etc.) - WORKING ON: In the arranger, if you move a wave part to the left, the wave editor will readjust but the - wave may be chopped off at the end. Investigating... (T356) - * Corrected the drawing order of items from ALL parts in pianoroll and drumedit. For multiple-part viewing. - WORK IN PROGRESS: Added ability to select items from different parts at once, and to move them. - For now, only items from the currently selected part actually move. (T356) - * Added small checkbox to Big Time display. Now you can switch between formatted or absolute time display. - Absolute is handy for syncing with another app, or just knowing, absolutely, where you are in the song. Absolutely. - Added ToolTip popups describing each 'group' of numbers (bars, beats, ticks etc). (T356) -20.01.2008 - (ml) - * Added function for deleting note overlaps in piano roll (usually makes fluidsynth grumpy - silencing the following note). - * Some work on opening the editor at current position and selecting the leftmost item - (ws) - * fixed hanging note when editing multiple parts in midieditor and - switching part -19.01.2008 (ws) - * fixed Song::changeEvent(): part tick offset was not used - * fixed removing of controller events in Song::deleteEvent(); this affects midi recording - in replace mode and controller editing -12.10 - * Fixed automation right-click popup menu 'prev/next event' not working after a tempo change. (T356) - - Now you are guaranteed to be able to navigate the automation events, regardless - of how many tempo or time signature changes are in the song, or if you change the tempo/sig(s) - AFTER adding automation events. -12.06 - * Fixed softsynths 'Fluidsynth', 'Deicsonze', and 'Fluid' to allow pitch wheel changes. (T356) - * Fixed softsynths 'Fluidsynth' and 'Deicsonze' to allow MIDI patch changes. (T356) - Note that I included MIDI patch change code in 'Fluid', but fluid is slightly broken - and still doesn't respond. 'Fluid' should be removed from muse. It's obsolete. Use Fluidsynth. -11.22 - * Fixed LASH loading and saving. (T356) - - Symptom - Muse fails building with error about 'lash_get_fqn' not declared in scope. - - Cause - You are building muse with LASH > 0.5.1, where certain header files have been removed. - - Fix - Replaced both calls to lash_get_fqn with QString manipulations instead. - * NOTE! I encountered a muse segfault when you use LASH to close the project. - It says 'received unknown LASH event of type 10' (which is LASH_Server_Lost), then it says - 'received unknown LASH event of type <<some big random number>>, then segfault and - a glibc backtrace due to 'double free or corruption'. Not a big deal, but this will need to be fixed. - * Tested OK saving and loading projects with LASH 0.5.4 - -09.02 - ======================================= - * 0.9 final tagged (rj) - no changes from pre3 - ======================================= - -08.22 - ======================================= - * 0.9pre3 tagged (rj) - ======================================= - -08.20 - * Fixed bug 1650953 - select and move segfault (T356) - - Symptom - In piano roll, select some notes and move them past the end of the part, - then muse crashes. Also occurs when pasting or adding notes past part length. - - Cause - Canvas was not adding the new resized part to the midi editor. Also a bunch - of other stuff needed to be fixed for it all to work OK. - * Fixed broken master list editor. Should also cure bug 1687166 (T356) - - Symptom - Open master list and nothing is listed (should be at least one default - tempo and one default time signature). Click to add new tempo or sig and muse crashes. - - Cause - Some code was added to lmaster.cpp: LMaster::updateList() which broke it. - * Added auto part resizing to drum canvas (T356) - - Symptom - In drums editor, there is no auto part resizing, like in piano roll. - - Cause - Missing all part resizing code. Added. - * Fixed intermittent crash when cutting a part. Improper 'delete while iterate' STL operation. (T356) - * Fixed arranger part selection - selected parts now draw on top of non-selected parts. (T356) - * Fixed arranger part operations (move etc.) to use selected part. (T356) - * Fixed arranger keyboard left and right previous/next part selection. (T356) - - Now you can use left/right arrow keys to cycle through parts in a track, - expecially useful for overlapping parts! - * Regarding part selection - A remaining problem is that there is no 'z-order' drawing - scheme. The part item list has no such ordering support. - - This means a selected part will (now) appear on top of others, but when unselected, - it will not stay on top. Adding that support could be messy. - - Best to leave it alone for now. At least you can (now) cycle through overlapped parts... - * Tested arranger part operations with worst case scenario - multiple tempo changes - and multiple parts. Test OK. All should be OK now. (T356) - * Added tooltip to song length box in arranger with text 'song length in bars'. (T356) - * Fixed wave editor - Black selection bar intermittent drawing. (T356) - - Symptom - In wave editor selecting a portion of the wave caused intermittent drawing - of the black selection bar. - - Cause - Unsure of exact cause or a permanent cure, but it's better now. - But it still draws intermittently if you zoom in (x magnify) very very close. - Working on this issue. - * Added feature - Wave editor now allows you to open multiple selected wave parts and - will display only those parts and you can edit them. Tested wave editor 'functions' - menu and it works OK on some or all selected portions of the multiple wave parts. - - This is in preparation for a possible automation viewer and/or editor. - - Work in progress. Some rough parts still to clean up. (T356) - * Fixed intermittent arithmetic exception crash in wave viewer. (T356) - * Fixed bad wave drawing above certain zoom level in wave editor. (T356) - * Enabled serial numbers in my deltaTick2Frame and deltaFrame2Tick routines, and - merged code. Makes it a bit faster. (T356) -======= -08.16 * Reverted change in synth.cpp, realtime playback of softsynths did not work (rj) - * fix for sustain pedal to work as suspected when looping. (rj) - * Above involved adding "managed-controllers", whenever a controller is found - time will tell if this is the right solution (rj) -02.13 - * Feature request: 1650957 space bar should start/stop playback fixed by - adding this possiblity, old style is possible with property setting in - configuration. (rj) -02.09 - * Fixed bug 1645575 - Eraser tool causes segfault in drum editor (T356) - * Added the project AUTHORS (whooo are you... who who...) (T356) -01.27 - * Fixes to remove lots of warnings and potential errors in the code (WillyFoobar) - (rj by proxy) - * Fix for bug #1074808 "NRPN - still 128 values?" from Sebastian Gutsfeld (rj) -01.06 - * Changed 'exit' to 'return' when plugins are invalid (rj) -01.05 - ======================================= - * 0.9pre2 tagged (rj) - ======================================= - -2007.01.03 - * Fixed some major issues with undo/redo. (T356) - - Symptom - Delete track(s), then undo, muse crashes. - - Symptom - Rename a track, then undo, muse crashes. - - Cause - 'Delete' destroyed the track(s), so undo would attempt to restore - non-existent object. Other problems caused rename crash. Still more undo/redo code - was causing problems, like left-over synth instances hanging around after loading a new song, - or crashing upon loading a new song if certain redo items were still in the redo list... - - Known bugs - DON'T rename a synth track then undo, muse still crashes. Not sure why yet. - After 'un-deleting' a synth track, you will have to open the 'MIDI Ports/Soft Synth' window - and manually restore its MIDI port. - Don't do anything too crazy like deleting multiple tracks while playing, might possibly crash. - After undeleting an audio wave track, its sound might not be sync'd with the rest of the song - - simply hit the fast-forward or rewind button to cure that. - * Prevented saving, and segfault upon loading, of routes in med file with empty names. (T356) - - Symptom - Jack shuts down, so instead of attempting to restart audio, you save your work, - but when you try to reload your song, muse crashes. - - Cause - Upon Jack shutdown, all audio in and out Jack routes were erased, and muse saved - the song like that. Upon reload, muse would crash due to the empty routes in the .med file. - - Note that this does not cure the original cause of this (Jack routes erased), so although you - can now re-load the song without muse crashing, you must manually restore all the audio in/out - Jack routes. So please try to restart the audio first. (Trying to fix this issue...) - * Add new soloing system. Check it out! (T356) - - Symptom - You click solo on a track but you hear nothing, and all other tracks are muted. - - Cause - Wasn't really broken, you just had to solo all other tracks in that routing path - to make sure whatever you were attempting to solo made its way to its destination so you - would hear it. - Inconvenient, yes. Especially with a large song with a lot of tracks, groups etc. - With this new system, this is done automatically for you. Even MIDI tracks driving synth - tracks, too. - - Known bug - If a MIDI track drives some external MIDI device which you feed the audio - back into muse, there's no way for muse to know how to couple the MIDI and audio in - tracks together. Sorry you'll have to manually solo both. - BUT - I'm CONSIDERING adding this - If an audio in track's name BEGINS WITH the name - of a MIDI track, I could couple them that way. For example - MIDI track named 'Track1' and - an audio in track named 'Track1 Input', then muse could mutually solo both tracks properly... - * Enabled MIDI mixer strip solo buttons. (T356) - * Some other minor fixups here and there. (T356) - - Other known bugs - Due to an earlier oversight, if you use your own custom LADSPA plugin - GUI's (see README.ladspaguis), QCheckbox and QCombobox controls may not automate quite right. - Note that this includes just one built-in custom GUI - for the 'TAP Reverberator' plugin. -21.11 - * Fixed loading of .med files, with plugins, created before muse-0.9pre1. (t356) - They will load, then save, correctly now. - - Symptom - Load an old song with plugins and some of the plugin controls can't be moved. - - Cause - Controller id's in med file mixed up, not save correctly, because of moving rack - plugins around, which never properly switched the id's before muse-0.9pre1. - * Fixed soloing (again). (t356) - - Symptom - Delete a soloed track, then soloing is messed up - other tracks may be muted but don't show it, - only way out is to reload. Speaking of which, loading also did not set track soloing correctly. - - Cause - Upon deleting a track or loading a song, track solo ref count was not updated. - * Added infrastructure for an improved soloing system, much more intuitive. (Not done yet!...) (t356) - * Fixed spelling mistake - Freeverb "Rooom" size. (t356) -13.11 - * By T356 - * More automation fixes. Everything should be working now, check it out! - * Although still no automation editor, all of these changes so far should help - manipulate and navigate the events. - * Fixed touch mode events storing, was not right. - * Fixed a couple of stray signal connects which may have caused wacky controls. - * Sliders, knobs and labels now respond to mousewheel and paging properly. - * Linked slider/knob labels with sliders and knobs so paging or mousewheeling - a label works smoothly and linearly, even with logarithmic controls. - * Fixed integer controls (like Glame Bandpass 'stages'). - * Fixed external plugin gui's to look like the built-in freeverb. This means - they now scale properly with different fonts. :) - * Hopefully the last of major automation conceptual changes - making sliders, knobs, - labels and checkboxes work together with the four automation modes, barring any fixes, - and a few tweaks to follow (like shift key for label mousewheeling, and how to make - a label stop updating so values can be entered). Some more right-click menu options - may follow (like store event, enable automation, enable interpolation). - Automation readme to come (need it!). - * Still to fix - Controls' right-click automation menu still a bit confused upon tempo changes. -10.11 - * reworked mute, old solution caused problems for solo - * solo is now united between midi and audio, they were previously - interdependant. This has the downside that if a soft synth is - soloed both the midi and the audio needs to have solo enabled (rj) - * fixed issue with hanging notes for softsynths when stop is pressed (rj) - * Backported fix from HEAD for using a file descriptor from two different - threads, should make it work somewhat better with SMP (rj) - * fixed faulty off value for aux when set to max (rj) - * Allow wheeling of tracks from track list (rj) -08.11 - * reenabled mute for outputs (rj) -07.11 - * Fixed timing bug causing MusE to depend on jack buffer setting - this needs testing, it involved uncommenting some code that might - have been commented for a reason (rj) -05.11 - * Added support for auto-scroll for other drag operations but - rubberband (rj) -04.11 - ======================================= - * 0.9pre1 tagged (rj) - ======================================= -04.11 - * Adopted RT locking method from 1.0 branch. (rj) - * Preparations for 0.9pre1 (rj) -31.10 - * By T356 - * Fixed old bug - DoubleLabel right click causes popup and runaway increment. - * Currently the increment/decrement is fixed at 1, so that's why it doesn't - work for pan or other controls with 1.0 or less max. - - So fixes to that are next... -29.10 - * By T356 - * Changing global tempo now updates things. (Like resizing wave tracks). - * Fixed segfault upon lengthening a blank new wave track part. - * Removed some thread-unsafe code from my first patch - * Fixed ladspa plugin automation not working until plugin displayed. - * Improved automation and ladspa plugin automation behaviour. - - While stopped and in touch mode, clicking an automateable control immediately - writes the value to the list, so you don't have to press play then stop - just to store one value. - - Smoother slider transitions from last touched value to previous stored values, - so that they don't suddenly 'jump' to previous stored values when you let go. - - Checkboxes now automated. Their behaviour in touch mode is slightly - different than sliders - they remain 'touched' until you stop, but store - only up to the last toggle done. - - Checkboxes now check as soon as you click them. - - Sliders now have 'mouse cursor capture (tm)' so you can actually grab onto - the thumbs even if they are moving too quickly due to automation. Paging can - still be done with right button. - - Sliders and knobs now work properly if you 'page' them (click outside the thumb - or dial). - - Added right-click popup menu on all automateable controls with - previous event (seek) - next event (seek) - erase event (if cursor is on one) - erase range (between left and right markers) - clear automation (clear all events) - Known bug: Becomes slightly confused if tempo is changed after doing automation. - Workaround for now: Press play to update the cursor to a new position. -04.10 - * Select the right item when items are stacked on top of each other, for pianoroll - and arranger (rj) - * Do not display resize cursor when last track cannot be resized (rj) -03.10 - * Apply effect rack before sending aux, changed after discussion with Thorsten Wilms (rj) - * Auto assign internal softsynths upon creation (rj) - * New method for pasting parts. If several parts are pasted they are now spaced - according to their original spacing. This only works reliably when the copied parts - are all on one track. (Possibly copying parts from several tracks should be - disallowed), fixes bug #1516294 (rj) - * Muting of midi-tracks no longer mute input, bug #1092343 (rj) -01.10 - * Fixed issue with playing of controllers when moving playhead. basically - all events from all parts where played at the beginning, fixes bug #1316542 (rj) -30.09 - * Cached peak files are now updated when wave files are more recent, bug #1469177(rj) - * Fixed bug with recording notes to existing part, bug #1552783 (rj) -29.09 - * MusE now asks when imported wave file has differing samplerate, bug #1428248 (rj) -28.09 - * Always restore sequencer configuration even when song - is loaded without config, fixes bug #1092289, midi mixer settings not restored (rj) -27.09 - * Optimizations and fixes to rubberband scrolling (rj) - * Aux changed to be affected by volume and pan (rj) - * Aux now affected by mute (rj) -26.09 - * Fix for pianoroll selection of events in/outside loop with respect to part offset (ml) - * Added lasso/rubberband scrolling in arranger, drumedit and pianoroll, bug #1057732 (rj) -24.09 - * Followups by T356 - * Fixed rack plugin change not clearing automation - * Fixed moving an empty rack position - * Fixed moving a plugin onto itself - * Changed colours of audio output and wave track - strip names to match icon colours -20.09 - * Fixed aux sending (rj) - * Patch from terminator356 to fix logarithmic feedback to plugin sliders (rj) -19.09 - * Various fixes from Torsten Duwe (rj) - - deicsonze undefined returnvalue - - vam uninitialized value - - 64bit fix for calling external wave editor - * Fixed multiple part undo for move,drag and copy in arranger, bug #1516298 (rj) - * Fixed multiple note undo for move and drag in pianoroll (rj) - * Fixed cursor placement in List Editor upon deleting events bug #1417718 (rj) -16.09 - * Following changes by { terminator356 [at] users [dot] sourceforge [dot] net } - * The changes can be applied to muse-0.7.2preX or muse-0.8.1 and work fine in both. - * Fixed soloing. Also multiple soloing now allowed. - - TODO: Soloing of tracks which feed a group. Workaround for now: Solo the tracks AND the group. - * Enabled solo buttons on the mixer strips. - * Fixed major issues with rack plugin moving, saving and loading. - * Fixed problems with multiple tempo changes and incorrect wave part lengths. - * Changed plugin code to use double instead of float to stop certain errors, and consistency. - * Fixed some minor spelling mistakes. - * Fixed issues with audio track automation. - * Fixed very 'jumpy' volume sliders and pan knobs under automation. - * Fixed several other small problems. For example a duplicate define in song.h - * Changed the way audio track automation works. - - For ease of use, the current mode now remains selected, even after a file write and re-open. - - To reduce the chance of accidental changes, for added visual warning, Touch and Write modes - colour the automation mode box red. - - Write and Touch modes: Only if the controls were touched, changes will be stored when - the transport is stopped. Since the current mode remains active, you can move to - another part and do some more automation. - - Write mode: The controls are updated with stored values until you touch them, then they - store from the time you hit play to the time you hit stop. If you touch the controls AFTER - you hit play, you may get unexpected results so remember to initialize that 'first value' - (at the time when you hit play), since muse will NOT 'fill in' from the time you hit play - to the time you first touched the control, with the value of that first touch. (Maybe support - this later). - - If you load a plugin preset, if the control values don't seem correct, try setting the track's - automation to 'Off', because the track will usually be on 'Read' - reading stored values. - - TODO: Muse really needs an automation editor/viewer! Perhaps integrate with wave viewer. - Also, add one more automation mode: 'Instant mode'. - * Hmmm, oh yes - added full LADSPA plugin automation. Check it out! - Compatibility with existing med files' Plugin section should be OK, but if you open an - existing med file with plugins, and the plugins' control values are no longer correct, - let me know. See comments (with these changes applied) audiotrack.cpp around line 557. - - TODO: Checkbox automation not working right. We need a better checkbox - one which checks - as soon as you press down! Also would like to add bypass and mute automation. -05.08 - * Fixed build without fluidsynth (rj) -14.07 - * fluidsynth: fixed pitchbend events, fixes bug #1404212 (ml) - -13.04 - * Editing volume and pan with keyboard on audio strip now works (rj) - * Fixed issue with recording audio, fifo could overflow when - when running with small jack sizes (rj) - * fixed storing of wave files with relative path when located - "under" the project path (rj) -28.03 - ======================================= - * retagged app.cpp and Yamaha-Motif-Rack.idf (rj) - ======================================= - * fixed build bug in app.cpp (rj) - * fixed bug with Yamaha-Motif-Rack.idf (rj) -27.03 - ======================================= - * 0.8.1 tagged (rj) - ======================================= - * some lash fixes (rj) -26.03 - * Added next/prev marker, keyboard shortcut (rj) -25.03 - * Reverted fix for silent softsynths, synths were not silenced - upon [stop], gah! (rj) - * Added LASH support (patch from evermind @ gentoo) (rj) -21.03 - * Added Motif-Rack idf from europeen (rj) -19.03 - ======================================= - * retagged dummyaudio.cpp (rj) - ======================================= - * Fixed build bug in dummyaudio.cpp (rj) -18.03 - ======================================= - * 0.8 tagged (was 0.7.2) (rj) - ======================================= - * Added idf files from linux chaos - Waldorf-Q, Yamaha-01v,Yamaha-Motif, Yamaha-P100 (rj) -05.03 - * Arranger no longer performs "seek" while editing - when in ext-sync mode (rj) - * Play/Stop disabled for all when in ext-sync mode (rj) -02.03 - * more work on extern sync, loop works better (rj) - * no-audio + extern sync does not hang anymore (rj) - * muse now starts even if jack is not found (rj) - * fixed a number of divide by zero errors mainly affecting zoom (rj) -11.02 - * Added menu alternative for storing plugin preset (rj) -06.02 - * Updated/improved swedish translation. (rj) -04.02 - * Fix for softsynths going silent under load. Sometimes events arrive - with time=0, this is now handled. Why it happens is yet unknown.(rj) -02.02 - * check audioDevice and _client for validity (rj) -13.01 - * amd64 fix in driver/rtctimer.cpp (ws) -09.01 - * Added patch for vam from mane_grotesk (rj) -07.01 * On drumtracks, there was no check for non-existing ports. If a drum - instrument was configured to output to a port other than standard for - the track, there was a segfault. Now output to non-existing ports are - simply ignored (ml) - -05.01 - * Added updated french translation from Intent (rj) - * Fixed crash bug in pianoroll when moving several - events outside part. (rj) - * Fixed esc key in drumeditor name edit (rj) - -03.01 - ======================================== - * 0.7.2pre5 (final!) tagged (rj) - ======================================= - -02.01 - * Added popup when enabling rec for a track unable to create it's - wave file (rj) -2006.01.01 - * Enlarged listeditor dialog (FR:1392090) (rj) - * Changed preset file extension of vam presets to .vam (rj) - * No longer translates dir name for drummaps (rj) - * Fixed crash bug when arrowing left in an empty editor (rj) - * Added F2 name edit in drum editor (rj) - * Added up/down arrowing in drum editor (rj) -30.12 - * Fixed bug in detection of RTC (rj) - * Removed ugly printouts from probeing for browser (rj) -29.12 - * Reawoken Organ: (rj) - - read/write current settings - - automation of all parameters - * Reawoken VAM: (rj) - - read/write current settings - - automation of all parameters - - preset dialog -28.12 - * Changed audio prefetch buffer to be dynamically sized after the - jack buffers (rj) -27.12 - * Fixed allocation of wave memory when reading and writing sound files - fixes problems with audio-operations (rj) - * Fixed problem when external wave editor was not correctly defined (rj) -26.12 - * Race condition between threads caused lockup upon quit and load project. - Fixed by checking if sequencer is actually running before making - internal IPC call, made major difference (rj) -21.12 - ======================================== - * 0.7.2pre4 tagged (rj) - ======================================= - - * Now dynamically extends parts if events continue after end and - ignores pastes before part, fixes bug:1363066 Paste outside segment (rj) -18.12 - * ExtSync improvements, handles relocation of playhead during stop - (on my gear atleast), does not work during play (rj) - * fixed bug building synths (introduced during last checkin) (rj) -14.12 - * fast_log10 exchanged for HEAD version (old version doesn't work with - gcc4), fixes problem with meters and sliders not working (rj) - * Added patch from Martin Habets fixes core dump problem while - building with LADCCA (rj) - * Added patch from LarryL autoconf changes to synth building (rj) - * Fixed drag in effect rack that it does not start directly (rj) - * Adapted optimization parameters for gcc4 (rj) -13.12 - * Possibly fixed issue with crashes during load of projects - by putting delays between start/stop of sequencer and actual load - operation. This should make sure that the process loop is idle. (rj) - * now tries both RTC and Alsa (in that sequence) for main timer (rj) - * added checks if alsaDevice is valid (fixes several crash bugs when - muse goes zombie). Should be done in more places. (rj) - * added check if audio is really running when jack calls process. - Sometimes it's called when it should not. (rj) -12.12 - * updated muse_ru.ts from Alexandre Prokoudine (ws) -11.12 - * removed assert, fixes bug:1376783, deleting track with pianoroll open - crashes muse -09.12 - * Added patch from Daniel Cobras regarding compatibility with 64-bit - systems (rj) - * fixed crash bug when muse tried to show plugin-guis when the - plugin did not exist (rj) -29.11 - * fixed seg fault when deleting last note in pianoroll editor (ws) -13.11 - ======================================== - * 0.7.2pre3 tagged (rj) - ======================================== - * Changed back to AlsaTimer (rj) -8.11 - * fixed typo in share/locale/Makefile.am -7.11 - * removed some dubious locks in thread start (ws) -19.10 - * Fixed bug 1329537 (User defined fonts not updated) (rj) -13.10 - * added emuproteus200.idf from Piotr Sawicki (ws) - * updated polish translation -12.10 - * added polish translation from Piotr Sawicki (ws) -26.9 - * Handle restart of Jack and restart of audio (rj) -21.8 - * Added new timer classes from Jonathan Woithe. (rj) -14.8 - * Solo for audio tracks improved by removing the possibility to mute Output tracks (rj) - * Implemented REPLACE for midi recording (seems to sometimes miss notes though...) (rj) - * Fixes for Appearance dialog, background pic, event display (rj) - * Marker window now toggling (rj) - * Added "raise" to more dialog windows (rj) - * compress event display in parts somewhat (rj) - * reverted pipeline again...bah...think before you change (rj) - * bounce now stops correctly (rj) - - -13.7 - * Fixed position of import of wave files, inserted at cursor, now inserts at mouse (rj) - * Added drag&drop support to plugin racks in mixer, internal and to/from disk (rj) - * Changed the plugin pipeline depth to 5.. four is too little.. though it should be runtime extendable, wip (rj) - * Added patches from Daniel Kobras that correct errors in EditMetaDialog - and old html docs. (rj) - * Added uppercase filters to midi import (rj) - -12.7 - * Added quick search to LADSPA plugin dialog (rj) -11.7 - ======================================== - * 0.7.2pre2 tagged (rj) - ======================================== -10.7 - * Added possibility to edit selection of wave in external editor (ml) -9.7 - * Added gain modification functions + misc to waveedit (ml) -8.7 - * Updates to wavefile modification, implemented normalize, fade in, fade out and reverse of wavefile selection. - Removal of wavefile undo data on shutdown (ml) -7.7 - * Added undo/redo handling for modifications of wavefiles + mute of selection in waveedit. expect updates. (ml) -6.7 - * Added selection to waveeditor + ignore unhandled keyevents in waveeditor (ml) -4.7 - * Implemented resize of waveparts (ml) - * Added Idf files by Steve D for Roland FantomXR, SRX-02 and SRX-09 (rj) -2.7 - * Fixes for waveedit: offset problem fixed (no more empty waveedit windows), initial zoom value to - roughly match size of part (ml) -01.7 - * Fixed bug with loading of background pixmaps (rj) -28.6 - * Only send MMC continue message when in playback state when seeking (rj) -22.6 - * Fixed bug 1199171 (Time change: a part does not completely fit into 4 bars), part - resize problem (ml) -21.6 - * Added scrollwheel support for vertical scrolling in arranger, pianoroll and drumeditor (ml) - * Fixed bug 1056996: Multiple selection, but single paste. Possible to copy several parts in arranger (ml) -20.6 - * Fixed bug 1092424: bug in reposition of instruments in drumeditor (ml) -19.6 - * Added recall of last entered directory in filedialog for global and user mode + recall of - opening mode (global, user or project) (ml) -18.6 - * Fix for drumtracks and part export/import - * Fix for opening Midi port/softsynth dialog when already open (now raised and set to active window) (ml) -13.6 - * Added export/import of midi parts (.mpt-files), drag & drop also possible (ml) -05.6 - * Fix for generating midi clock, needs field testing. (rj) -04.6 - * Added fixes to AlsaTimer and DummyAudio from Jonathan Woithe (rj) - * Added fix so AudioPrefetch is initialized upon starting the sequencer, - which for instance happens when loading a song (rj) -24.5 - * Added Roland E-28 idf file from Jonathan Woithe (js) -16.5 - * Updated ladspa-gui for newer version of tap-reverb (rj) -15.5 - * Allows for several midi devices with the same name, they are now renamed - internally so they have a unique name. This is a partial fix for synths - that do not correctly give each instance a new name. (rj) -12.5 - * s1 softsynth added square wave with parameter (rj) -11.5 - * Fix for bug 1198747, tests for fluidsynth and rtcap in configure.ac (rj) - * Fix for bug 1198744, added patch for reading browser setting from config - without crashing, from Philip Nelson (rj) - * Fix for bug 1188767, downmix won't stop playback until reaching the - right marker (rj) -08.5 - * the instrument list in the drumeditor now has fixed width when resizing the window (finally, it made me nuts) (ml) - * added nudge event position left/right w keyboard (ctrl+left/rightarrow as default) to pianoroll and drumeditor (ml) - * added fixed length command to pianoroll, uses snap-to value (ml) -07.5 - * added snap/quantize patch from Petr Mazanec (snap of notes in pianoroll+drumeditor is now controlled by - snap, not quantize) (ml) - * simpledrums: added save/load of setup to file, bugfixes. - simpledrums version is now 1.0 (go figure! ;) (ml) -06.5 - * No longer crashed when enabling audio metronome when there's an aux (rj) - - ======================================== - * 0.7.2pre1 tagged ! (rj) - ======================================== -04.5 - * extern sync algorithm "reworked" (rj) -1.5 - * simpledrums: backported fixes for channel number + memory deallocation, - fixed issue with clearing of sampledata, I hope (ml) -30.4 - * fluidsynth: bankno is saved to project, switched to hbank from lbank (ml) - * Now really runs libtoolize in autogen.sh (rj) -29.4 - * make sleep() in watchdog thread non interruptible to avoid - watchdog timeouts at startup (ws) - * added vst preallocation of memory "fix" (rj) - * More fixes to filenames containing dots (for instance wca files) (rj) - * Added Yamaha-PSR275 instrument file by Petr Mazanec (rj) -27.4 - * fixed patch-info issue in Fluidsynth (bug 1191214) (ml) -25.4 - * fixed bug w paste in drumeditor, 1189267, patch from P Mazanec -18.4 - * removed file ltmain.sh; this file is now created by "libtoolize" - command in autogen.sh (ws) -16.4 - * Fixed bug 1152441, filename can now have several dots (ml) - * Fixed bug 1183980: fluidsynth pitch controller wasn't given to MusE from the synth (ml) -15.4 - * Added a redundant test that makes midi input work on PPC for some - reason. (will research a better fix for 0.8) (rj) -10.4 - * Added an error popup when importing wave files fails. (rj) -30.3 - * [DONE] midi -> edit instrument is not implemented -> remove it (js) - * [DONE] same for random rythm gen -> is not implemented -> remove it (js) - * [DONE] BUG: pianoroll editor -> tools resize wrong, they should stay on max they need instead of width fit (js) - * have to go to the dentist on 7.3.2005, god help me, i fear this will kill me (js) -29.3 - * README changed some links (js) - * README added some icons to arranger (js) - * added support for german localisation (30% translated, still quite bad) (js) - * help: changed muse homepage location (js) - * more to come (js) -28.3 - * Fix for overflow when importing midi (rj + ml) -6.3 - * Added some fixed on dialog handling, mainly "esc" will close the widget now. (js) - * As usual added the icons which i forgot to add in the last release - * Corrected the drums icon which was a wave icon (in the dropdown, arranger) -26.2 - * Added Roland-SCD70.idf from Emiliano Grilli (rj) -09.2 - * fixed bug with sending start play w/ midi-clock (rj) -01.20 - * Added RT support and better working timing to DummyAudio backend (rj) - * New version of MC505.idf from Wim VW (rj) -01.18 - * Added script to convert MusE 0.6 songs to 0.7 format (rj) -01.17 - * Midi clock sync first test, unstable (ml) -01.14 - * patch from Erwin Scheuch-Heilig to allow for libtool >= 1.4 (ws) -01.10 - ======================================== - * 0.7.1 tagged ! (rj) - ======================================== - * ZynAdd instrument def file added (ml) - * Now the length is updated when importing a midi file to a project, - fixes bug: 1056994 (rj) - * Disabled freewheeling for bounce functions (song.cpp:_bounce) (rj) -01.09 - * Fixed bug: 1094622, MidiTransform now uses new controller types (ml) - * Fixed bug with custom plugin guis that caused them to be - uninitialized (rj) - * fixed just introduced jack graphChanged problem (rj) - * Fixed a crash issue with Thread class (only did happen when you mess around) (rj) - * Synti tracks don't crash when being renamed (rj) -01.04 - * Fixed a crash problem when using several fluidsynths (rj) - * Now fluidsynth restores most memory upon deletion - (but not all it seems) (rj) - * fluid disabled when fluidsynth disabled (we should probably - disable it all together) (rj) - * Fixed mixdown clash with auto-rec enable (rj) - * Fixed crash / hang when closing connected jack apps (rj) -2005.01.02 - ======================================== - * 0.7.1pre3 tagged ! (rj) - ======================================== - -31.12 - * Mastertrack list editor updates (add sigevent + misc) (ml) -30.12 - * Insertion of tempo events in list mastereditor added (ml) -29.12 - * Added support for changing time signature in list master editor (ml) -27.12 - * Added support for changing tempo + position of tempoevents in list mastereditor (ml) - * Backported auto rec-enable from HEAD branch (rj) - * Added visual feedback of marker addition in ruler as well as - possibility to remove markers with shift+rmb (rj) - * Made it easier to resize the last track (bug: 1041798) (rj) - * Fixed bug: 966005, new projects are now called "untitled" (rj) - * fixed bug: 1085791, no more crashes with delete + drag (rj) -26.12 - * Listedit bugfixes. Consideration of part offset used for events (ml) -20.12 - * Fix for bug #1085796 (when renaming channel by doubleclicking it - in tracklist and a part is selected, pressing return opens editor for part) (ml) -17.12 - * -a (No Audio) flag added, improved Dummy audio backend (rj) - * alsa timer bugfix (rj) - * added deicsonze patch from Alex Marandon to fix QT<->STL - problems on affected platforms (rj) - -14.12 - * Disable of fluidsynth works (rj) - * Added test for libsamplerate (rj) - * Reenabled --enable-suid-install (rj) - * Added <iostream> to simpledrums.h (rj) - * Added -no-rtti to simpledrums (ml) - -13.12 - ======================================== - * 0.7.1pre2 tagged ! (rj) - ======================================== - * SimpleDrums 0.2 softsynth added (ml) -12.12 - * Removed -no-rtti from configuration (rj) - * Extern sync (codename: it_works_for_me__sometimes) is back! (rj) - * Changes to midi-input, events to softsynths vanished (rj) - * bounce to file now limits output to +/- 0.99 (rj) - * crash bug on missing event in sig.cpp fixed (rj) - * Changed default timer resolution to 1024 (rj) - * Applied fix from Levi D. Burton to allow midi thread to run - realtime allthough Jack is not (rj) - * New version (0.22) of DeicsOnze from Alin Weiller (rj) - -9.12 - * Now autogen.sh requires libtool = 1.4, 1.5 does not generate - softsynths correctly (rj) -4.12 - * Added another IDF from Christoph Eckert for Alesis QSR,QS7 and QS8 (rj) -01.12 - * fixed import of type 0 midi files (ws) - * Added updated DeicsOnze (0.21) from Alin Weiller (rj) - * added a branch of new icons, changed default colors of - wav/audio output track in arranger (js) - * changed changelog (js) -30.11 - * Added IDF files from Christof Eckert for Access Virus, - Hammond XB and Waldorf Microwave (rj) - * backported fix from 0.8 so listing patches for synths - works again (rj) -29.11 - * fix midi import: tick values of tempo/signature - and marker events are now properly converted to internal - resolution (backport from 0.8) (ws) - * some make system changes to better handle precompiled headers (ws) - ======================================== - * 0.7.1pre1 tagged ! (rj) - ======================================== - * LADCCA was incorrectly disabled in config, now fixed (rj) - * Changed URL of homepage to www.muse-sequencer.org (rj) -28.11 - * Partial support for "input only" midi devices. (rj) - -27.11 - * Added Alsa Timer as a new timing device, RTC is still - available, though not easily selectable yet. (rj) - * Made some changes to how threads are created, for systems - where thread creation has been erratic, linux2.6 in various - configurations. Not yet verified if it makes any differance. (rj) -08.11 - * Backported audio metronome (rj) - * Backported open/save dialog improvements (rj) - * Added -r parameter to allow MusE to start without RTC - not the right thing to do, but it seems necessary on PPC, - it's a start. (rj) - * Added patch from CK to allow getopt to work on PPC (rj) - -02.11 - * Added icon stuff to tlist.cpp (js) -01.11 - * Added Alin Weiller's DeicsOnze synthesizer (ws) - * add dummy call to process() in Audio::start() to warm up caches - to avoid "JACK - zombified" during startup (ws) -23.08 - * fix crash in list editor - create new controller (ws) - * increase required JACK version to 0.98.0 (ws) -20.07 - * updated muse/muse.pro and share/locale files (ws) -18.07 - ======================================== - * 0.7.0 tagged ! (rj) - ======================================== - * output fifo warning only if cmd line "-D" switch is set (ws) -17.07 - * fixed separate handling of recorded events vs played events (ml) -15.07. - * do not start the disk helper thread in realtime mode (ws) - * check for JACK thread really running in SCHED_FIFO mode, if not - (as on my system with kernel 2.6.7 and nptl) try to set it. (ws) - * removed some exit() and abort() calls to react somewhat more gracefully to - to internal errors (ws) -14.07. - * fixed -V (no vst instruments) option (ws) - * do not save midi controller information in ~/.MusE file (ws) - * another try to fix midi loop handling: Loop len now should be - sample accurat. The loop is shifted left at most one audio - cycle to meet the requirement of loop end matching audio cycle - end. When JACK transport is in "JackTransportStarting" mode, - MusE internally continues rolling, so there are no repeated - cycles anymore (ws) - * Added message boxes when alsa and jack fails to initialize (rj) - * Disabled solobuttons in mixer (rj) -13.07. - * added new icons for the mixer solo/mute (js) - * added refresh for the solo/mute icons (rj) - * added icons for drum-/listeditor in the arranger on rightclick (js) -12.07. - * fixed typo in loop handling (ws) - * added patch from Daniel Schmidt to be able to configure - MusE without X being available (rj) - * Removed geometry data etc from templates (rj) -11.07. - * disabled midi mtc sync as its not implemented; disabled - midi sync slave modes as they are currently not working (ws) - * enabled sending midi clock (ws) -28.06. - * splitted removeTrack()/insertTrack() into three phases: pre realtime - actions - realtime actions - post realtime actions; this allows - to move memory allocations out of realtime task (ws) - * changed undo/redo of tracks: synti instances are now really deleted on - delete track (ws) - * jack connection changes with qjackctrl are now recognized by MusE (ws) -27.06. - * applied patch from John Check to add a panic button to pianoroll - editor (ws) -28.06. - ======================================== - * 0.7.0pre4 tagged - one more (rj) - ======================================== -26.06. - * Some packaging additions, icon, spec files. - (only mdk at the moment) (rj) -25.06. - * fixed midi timing bug (ws) -19.06. - * don't catch SIGCHLD, this interferes with vstInit() (ws) - * "givertcap" was not found when not in current directory (ws) - * impl. "all notes off" for organ synti (ws) -18.06. - * disabled buttons for not implemented functions (ws) - * added muse/wave/solo button in the trackinfo ;-) (js) -15.06. - * enabled some midi sync code (ws) -14.09. - * dialogs for change of drummap when converting miditrack to drumtrack - or changing port. redirection of keyevents from tlist to canvas (ml) -13.09. - * save/restore parameter for VST synthesizer (ws) - * automatic trackchange in tracklist when selecting parts in arranger (ml) - * added modify velocity to drumeditor + bugfix for modify velocity (ml) - * save/restore parameter for VST synthesizer (ws) -12.09. - * fixed backup command when filename contains spaces (ws) - * fixed midi step recording (ws) - * fixed bug in arranger: pressing enter after renaming part started - editor (ws) -09.06. - * added support for VST/windows software synthesizer (ws) - * delayed loading for software synthesizer: syntis are loaded, when - they are instantiated the first time (ws) -08.06. - * fixed --enable-rtcap configuration option (ws) -07.06. - * increased "dimension" in memory.h to make MusE work on 64 bit - architectures as requested from Simone Piunno (ws) - * added aux send for syntis (ws) - * added info box which explains why when MusE gets kicked by Jack (rj) -06.06 - * added instrument definition for roland MC-505 from Wim VW (ws) -05.06 - * Added backup creating save patch from Levi D.Burton (rj) -01.06 - * transpose + grid patch added (alin weiller) - * fixed moving events in drum editor (ws) - * added new config option: disable splash screen (ws) -31.05 - * fixed crash in pianoroll when using shortcuts for selecting - quant values when quant was set to 1 (no quant) (ws) - * fixed a crash when moving an event to tick positions < 0 (ws) - * fixed: selecting a note in pianoroll editor and changing a value - with note-info toolbar crashed MusE (ws) - * bugfix arranger: fix for selecting part -> ignore global accelerators (ml) - * bugfix for arranger selection of part above/below when using keyboard (ml) - * added pianoroll velocity variation patch (alin weiller) -30.05 - * hopefully a fix for drum in & outmap-issues in midi.cpp (ml) -25.05. - * shortcuts for "arrowing around" in arranger added (ml) - * 0.7.0pre3 tagged - the last!!! I hope (rj) -24.05. - * fixed a crash on new -> load template (ws) - * FluidSynth: added support for drumpatches (equiv to midichan 10 patches) (ml) -23.05. - * exit if rtc open() fails (ws) - * changed default start behaviour to open default.med template (rj) -18.05. - * added many new/redone icons (js) - * changed aboutbox.ui for qt 3.2 compatibility - * changed app.cpp (added the icons) -17.07. - * added stereo/mono icons to mixer (ws) - * added a first version of an icon for muse and adapted aboutbox to the same. - (graphics by Joachim Schiele) (rj) - * Improved handling of browser for help system (rj) -16.07. - * Added FluidSynth fix for ignoring preset selection of soundfonts that don't exist (ml) - * fix midi import of pitch bend events (ws) - * fix pitch bend handling (ws) - * enlarge PitchLabel width so that 14 bit controller values can be - displayed without clipping (ws) -15.07. - * removed some debug messages (ws) -12.07. - * show one more measure in pianoroll and drum editor (ws) - * renamed controller name "Hold1" to "Sustain" in *idf files (ws) -11.07. - * New try at fixing help browser on all systems (rj) -10.07. - * updated muse.pro and translation sources (share/locacle/*.ts) (ws) - * list editor: implemented input mode for program change messages (ws) -09.07. - * fixed "edit - delete track" hangs MusE - bug (ws) -07.07. - * fixed routing for stereo LADSPA plugins used in mono strips (ws) - * midi import: first resolve note on/of then transform ticks to internal - resolution (ws) -06.06. - * set global automation default to "true", set midi track automation to - "read" (ws) - * enable auxSend chorusSend and reverbSend in midi mixer strip if - corresponding controllers are added (ws) - * init automationType for midi tracks (ws) - * fixed gm.idf instrument definition file (ws) - * implemented "Add New Controller" in list editor / edit controller (ws) - * save current midi controller values in *.med file (ws) -05.05. - * updated roland-XP30.idf instrument definition (Sverre H. Huseby) -04.05. - * 0.7.0pre2 tagged (rj) -03.05. - * fixed a cut/glue bug probably introduced at 24.04 (ws) - * fixed compilation of musewidgetsplugin.so (ws) - * changed splash screen handling, used QTimer instead of background thread (ws) -02.05. - * Added first version of splash screen (rj) -01.05. - * Updated LADCCA support to (almost) usable condition (rj) -30.04. - * Added zoom scaling in drum editor, same as piano roll (rj) -29.04. - * Disabled Random Rhythm Generator (rj) - * Took a stab at fixing up shortcuts (rj) - * Fixed crash bug when clicking Channel Info and there was no info (rj) -28.04. - * Added single key shortcuts for edit tools (rj) - * added shortcut for Marker editor (rj) - * and fixed some shortcut inconsistencies (rj) -27.04. - * update marker list on tempo change (ws) - * allow adding markers from the ruler with shift-click (rj) -26.04. - * added missing header file(s) (ws) -25.04. - * fixed aux processing: stereo -> mono aux (ws) - * metronom now sends proper note off events (ws) -24.04. - * deactivated clip list editor. (ws) - * after loading of template, treat current project as "untitled" (ws) - * removed data structure "Clip". All information are now in WaveEvent; - this simplifies the structure a lot and makes reference counting more - reliable. Unfortunatly this also means a new incompatible *.med file - version. (ws) - * changed reference counting of Event class; simplified and more reliable (ws) -21.04. - * fixed some synchronisation issues between mixer and trackinfo window (ws) - * fix update of mixer after removal of aux strip (ws) -20.04. - * Added shortcuts to bug reporting tool, homepage, - and updated AboutBox (rj) -19.04. - * fixed QT version check in m4/qt.m4 (ws) -18.04. - * add samplerate initialization to fluidsynth (ws) - * compilation fix: added missing include in fluid.cpp (ws) -17.04. - * File->New crashed when current project had selected audio track (ws) - -15.04. - * 0.7.0pre1 * tagged for prerelease (rj) - * arranger: fast repeated pastes now works more reliable (no more stacked - parts) (ws) - * Thread(): crashed, when poll() returned more than one ready file descriptor - and the corresponding callback routine manipulates the list - of file descriptors. This happened timing dependend and only in real time - mode. (ws) - * fixed Fifo() get() (ws) - * small extension in soft synth interface (Mess()): added return values - for processEvent() -14.4. - * fixed pan range for midi mixer strips - * renaming soft synth instances + save/restore should now work - * fixed fluid "gui" - * changed CTRL_VAL_UNKNONW as it conflicts with valid - values for CTRL_PROGRAM (ws) -13.4. - * dont crash on missing LADSPA plugin (ws) - * set metronome precount default to "false". Precount is not - implemented. (ws) - * fixed crash when toggling stereo or pre buttons in mixer (ws) - * synchronize channel number in mixer/arranger-tracklist (ws) - * changed all float printf("%f") to equivalent qt-string - routines; dont localize decimal point so that the - strings can be properly parsed; this should fix some - save/restore problems in localized MusE versions (ws) -12.4 - - arranger/portinfo: fix update of instrument names (ws) - - fluid synth: enable drumsets (ws) - - fixed crash on inserting meta/ctrl/aftertouch in list - editor (ws) - - fixed crash in arranger when moving mouse+Alt after - removing a track (ws) -11.4 - fixed initialization of Pan after load of new song (ws) - - fixed graphical master track editor (ws) - - fixed Qt-Version check (ws) - - small qt3.2 compatibility changes (string->toInt() conversion) (ws) -10.4 - made plugin selector remember the previous selection type (rj) -4.4 - drag & drop import of wave files (rj) - - drag & drop import of mid files (rj) -3.4 - reactivated vam synthesizer - - fixed initialization bug in s1 synthesizer demo code (ws) - - added another vertical line in drum editor -2.4 - integrated new icons (ws) - - increased required QT-Version to 3.2 in configure.ac (ws) -1.4 - added vertikal line in track list as suggested by Joachim Schiele - - fixed synchronisation issue between mixer and tracklist (changing midi channel can - add/remove mixer strip) (ws) - - Changed pan range to -1 +1 (rj) - - added new icons from Joachim Schiele (not integrated) (ws) - - Support for showing only selected plugins in plugin dialog (rj) -31.3 - Added various compile fixes needed by debian (rj) -29.3 - Updated mc303 instrument file from Conrad Berh�ster (rj) -25.3 - bugfix for pos increase/decrease shortcut (ml) -24.3 - bugfix for mtscale redraw area when window is scrolled left - - bugfix for arranger shortcuts (ml) -23.3 - added position seek to drumeditor + arranger. - - increase/decrease pitch of selected notes in drumeditor with ctrl+up/down - - added quantize shortcut keys (1-8) in drumeditor (ml) -21.3 - added shortcut for pitch increase and decrease of sel notes, in pianoroll (Ctrl+Up/Down) - - moved shortcut handling for pianoroll + drumeditor to EventCanvas - - leftmost note selected when opening proll/drumeditor (ml) -16.3 - added shortcut for iterative quantize in p-roll. added shortcuts for - selection of notes in p-roll and drumeditor: left/right arrows moves - selection, holding down shift adds to current selection (ml) - - bugfix, moved blocking of signals on startup to exclude loading of project since - a bunch of widgets didn't get updated (ml) -12.3 - bugfix for menu initialization of "add track"-menu shortcuts (ml) - - added some regular 7-bit controllers to Fluidsynth (ml) -6.3 - Fluidsynti chorus operational again, controlled by NRPNs and - automatic gui-update here too. (ml) - - Fluidsynti reverb restored. Reverb is now controlled by NRPNs. - Automatic updates of gui when controller-changes occur. Unloading - of soundfonts restored. (ml) -4.3 - Fluidsynti playback restored. Gain restored. (ml) -3.3 - Fluidsynti major rewrite, not fully functioning though (ml) - - fixed crash on reload song with open mixer - - fixed crash on saving *.med: dont save aux values for channels - which have no aux send (like aux strips) - - remove empty record wav files on MusE exit - - fixed crash on undo controller editing (ws) -28.2 - more icons from Joachim Schiele (ws) - - fixed crash with mouse wheel events in arranger track list - - fixed some routing related crashes -25.2 - show mixer strip in trackinfo window for audio tracks (ws) -24.2 - compatibility patch to read midi tracks from old 1.0 *.med - files (ws) - - implemented quick input routing from jack (ws) - - added some new icons form Joachim Schiele (ws) -23.2 - implemented quick output routing to jack; some routing - fixes (ws) -22.2 - added instrument map for yamaha PSR 530 keyboard from - Lalit Chhabra (ml) - - misc compilation fixes from Joost Yervante (ws) -21.2 - added drum map for Yamaha DX200 from Joost Yervante Damad (ws) - - "quick routing" buttons in mixer (ws) -17.2 - install musewidgetsplugin.so in PREFIX/lib/muse/qtplugins/designer - and add this path to qt library path in application (ws) -16.2 - trackinfo geometry management changes (ws) -14.2 - added volume controller to organ, so that the organ - synthesizer volume can be controlled in the mixer midi strip (ws) -13.2 - - optimized "organ" software synthesizer: precomputed frequency - tables, integer envelope generator based on bresenham algorithm; - added "velocity" switch; (ws) - - changed VAM synthesizer for new interface (ws) - -12.2 - controller movements in software synthesizer gui's are now - send as midi events to MusE and can be recorded/replayed/edited - (currently only working for "organ" synti) (ws) - - changed software synth interface (again) (ws) - -11.2 - expanded trackInfo by default (rj) - - added some graphics to trackInfo :) (rj) - - changed "White" to "Default" (still white though) (rj) - - fixed trackInfo updating for tracks without their own trackInfo (rj) - - added lousy fix to update trackInfo when a track is deleted. - it's lousy because it's updating the trackInfo even though the - removed track wasn't highlighted, can place you in a tight spot - at times. I added it anyway because it removes a crash problem. - a better fix would be preferable. (rj) - - fixed mouse wheel functionality on knobs and sliders in mixer. (rj) - -8.2 - propagate track name changes to mixer (ws) - - enforce unique track name when user renames tracks (ws) - - implement one to many audio routing (ws) - - fixed bug in route dialog refresh after inserting new strip (ws) - - fixed aux send volume (ws) - -4.2 - added missing activate() to LADSPA plugin initialisation. - This fixes crashes with some plugins (plugins who use activate() - to allocate memory) (ws) - -fixed user definable LADSPA guis using QT-designer; added another - example *.ui file for "Toms'Audio Plugins" TAP-Reverberator (ws) -1.2 - - logarithmic values were initially wrong for spin boxes in - LADSPA guis (ws) - - On-the-fly-change of shortcuts in Listeditor, Drumeditor. Added selection - shortcuts to Drumeditor (ML) - - Added on-the-fly-change for shortcuts in pianoroll (connected to - configChanged-signal) (ML) - -30.1 save geometry of LADSPA plugin guis; - fixed missing mixer refresh after adding an auxSend strip (ws) -29.1 mixer strip automation types OFF, READ, WRITE and TOUCH - implemented; automated controller so far: volume, pan (ws) -27.1 more code for automation; - better reference counting for audio Clip; Clips with zero - reference are not saved in *.med file anymore (ws) -26.1 - removed obsolete driver/midirawin* (ws) -25.1 - removed obsolete raw midi devices & serial midi; all devices - are now handled by ALSA (ws) -24.1 - changed "Configure" to "Settings"; changed "Display" to "View" - for better standard compliance (ws) -23.1 - enabled controller editing in midi list editor (ws) -19.1 - added new dir/lib libsynti to collect common code - for all software synthesizer (ws) -18.1 - ported VAM software synthesizer to new MESS interface - (not complete) (ws) - - events send from synth gui are not echoed back anymore -17.1 - drumedit: changed "keyFilter" to "drumInstrument"; use - it to handle drum instrument specific NRPN controllers (as defined - in XG standard (ws) - - move drum instrument select status from drumMap to drum editor. - This allows for independent selections in different drum - editors. (ws) - - extend midi controller definitions in *.idf files for - drum instrument specific NRPN controllers (controller number - contains pitch value) (ws) - -16.1 - Added small fix to editctrlbase.ui to make it compile (RJ) - - Updated various revision info in README (RJ) - -15.1 - Corrected appearance of buttons in Metronome window (FN) - -9.1 - - "record" button in midi ChannelInfo; pressing this button - inserts changes in hbank/lbank/program/pan/volume as - controller events into song - - pianoroll editor: new "multi select mode": If more than one - event is selected, the event info spinboxes are set to zero. - Entered Values are interpreted as offsets and added to all - selected events. - - some fixes and performance enhancements to "MidiTransformator" (ws) - - fixed saving of drum tracks (ws) -8.1 - - changed arranger shortcuts + shortcut-configurator to use configChanged; all arranger menu shortcuts - redefinable on-the-fly. most menu options configurable (ML) - - now possible to toggle mixer window (ML) - - changed Ctrl+A in arranger to be used for select all instead of "Save As" for the sake of uniformity (ML) -5.1 - - new config (Config->GlobalSettings) option: - - start with empty song - - start with last song - - start with configured init song -2.1 - - smf type 0 export (ws) -31.12 - - midi export; fixes to midi controller handling (ws) -30.12 - - added dynamic shortcuts for all menu options in the arranger (will hopefully - work fine when config is loaded before menus are built) (ML) - - added check and prevention of conflicting shortcut sequences inside - respective categories, global shortcuts and misc "reserved" - shortcuts (ML) - - capture dialog grabs/releases keyboard (ML) -26.12 - - faster update of mixer (ws) -22.12 - - added dummy audio driver; this permits running MusE - without suid root and without RT priority when started - with "-d" option; this is for debugging & to get - normal core dumps (ws) -20.12 - - Reverb + chorus grayout-problem in fluidsynthgui removed. Some QT-designer files changed to 3.2 (ML) - - More shortcut updates: Added a dialog for capturing shortcuts (ML) -18.12 (ws) - - "declicked" s1 demo synthesizer - - make organ controller values persistent - - fixed integer overflow in organ synti controller values -17.12 (ws) - - new: mouse wheel events for track list values - - track colors in tracklist configurable in "appearance settings" - - more configuration options in "appearance settings" - part colors are now configurable - - ~/.MusE now contains only configuration data; this - settings are not replicated in *.med files any more -10.12 - - more shortcut stuff in the dummy shortcut config window (ML) - - new "load song" option: load all/load song data only (omit config data) (ws) - - new "File" function: load template; this function initializes current - song with another song (template) - - new option while importing a midi file: replace/add to project -9.12 - - More shurtcut stuff + dummy config dialog (ML) -2.12 - - Bugfixes in pianoroll for insert at current location and seek before - beginning of song (ML) - - fixed crash on "New" or loading new project -(ws) - "bounce to track" now works "faster than realtime" with JACK - freewheel mode (JACK 0.91.0 cvs required) - - mixer automation for gain & pan; some basic functions - - preparation for adding imported midifile to current project -1.12 - - More shortcut preparations (ML) -27.11 - - Added mouse wheel handling for knobs and sliders - shift modifier available for extreme slow motion. (RJ) -25.11 - - drummapping for recorded events (not heard on record playback echo yet) (ML) - - misc updates& fixes for track handling (ws) - - removed activity column in tracklist; will be replaced by - mixer meter display (ws) - - midi record flag can be set again, enabling midi recording -24.11 - - Added first steps for uniform handling of shortcuts (ML) -23.11 - - some mixer updates(ws) -22.11 - - fixed software synth handling; looping is only possible - on segment boundaries (ws) -20.11 - - Bugfix for drummaps and keyfilter in drumeditor (ML) - - apply drum map when importing midi (ws) - - retain track ordering across save/load (ws) - - wave files in the project directory are stored with - relative path, all others now with absolute path (ws) -16.11 - - Map outputted drumnotes according to drumMap index (Mathias Lundgren) - -14.11. (ws) - - JACK transport interface implemented - - finally removed ALSA driver; JACK now required; - - default to RT-mode on start (-R option is removed); -d (debug) - starts without RT - -12.11. (ws): - - removed midi mixer; first code to integrate midi mixer - into audio mixer; mixer moved to pulldown menu "Display" - - mixer strips are handled like tracks in arranger (prepare - for automation) - - track type cannot changed anymore in arranger track list; - also removed double click creation of tracks which makes - no sense anymore - - integrated "atomic" patches from Daniel Kobras -09.11. - audio routing fixes; mono/stereo switching for input/output - strips should now work; audio recording to tracks (ws) -08.11. - aux send audio mixer strips (ws) - - Arrowing up and down update in arranger (Mathias Lundgren) -07.11. - Fluidsynth compile problem w. Debian/qt/stl/gcc fixed (Mathias Lundgren) - - "Double undo"-bug fixed in Pianoroll (Mathias Lundgren) -04.11. - many changes to audio mixer and audio routing; implement - framework for new audio features (ws) -31.10. - - museProject set correctly when loading song on startup (RJ) - - save dialog added when adding first wave track (RJ) - - load/save of wave files handled with relative paths (to project) (RJ) - - Updated swedish translation (Robert Jonsson) - - Merged softsynth and midiconfig dialogs as in old tree(Robert Jonsson) - - Some museProject issues(Robert Jonsson) - - updated new midi controller implementation (ws) - -29.10. (ws) - - update soft synthesizer organ/fluid/fluidsynth; extent MESS - interface - - update from 0.6.2 (Mathias Lundgren): - - Various drumeditor-related updates including: Horizontal splitter - offset stored. Fixed length command added (Alt+L). Bugfix for selection - of events inside/outside locators. Initialization of drummap doesn't overwrite - entries loaded from project file. - - Alt+P sets locators to selected notes in PianoRoll and DrumEditor - - CTRL+Leftclick on an item in the Arranger, PianoRoll or DrumEditor selects all - parts/notes on the same track/same pitch - - Pressing Enter in the Arranger now opens the appropriate editor for the - part (Mathias Lundgren) - - The midithread now maps keys on a drumtrack according to the drummap. - - Cursor up/down (Mathias Lundgren) - - currently selected drum (Mathias Lundgren) - - fixed compilation error in givertcap.c (andrew) - - removed iiwu soft synth temporarily from compilation until - ported to new "mess" interface - - added missing file ltmain.sh - - create new cvs at sourceforge.net -------------- - - removed obsolete score editor - - changed midi controller handling - - new process structure - - redesign of "mess" software synthesizer; removed alsa - - new midifile import/export - - fork from cvs; new file structure -0.6.2(omuse): - - added first version of (incomplete) french translation from - - removed stk based soft synthesizer + share/rawwaves - - removed sound font - - fixed bug in midi recording when recording starts with a note off; - also the recorded part len was miscomputed when the recording ends with - a pressed key (missing note off event) - - added new allocator for SEventList and MPEventList (memory.cpp, memory.h) - to make sure the midi RT-thread does not call malloc/new/free/delete - - added misc build patches from Daniel Kobras - - make selection of alsa audio device an command line argument - (-A xxx default: hw:0) - - fixed "edit->select->allInLoop" - - fixed track height after renaming track -0.6.1: - - fixed "Cakewalk Style" display in arranger - - added russian translation from Alexandre Prokoudinek - - arranger: tracks are now independent vertical resizable - - arranger: implement part rename from popup menu - - arranger: show part name in parts in addition to events - - audio mixer: interpret min slider position as "off" - - audio mixer: added value entry for pan (Robert Jonsson) - - audio: some routing fixes - - audio mixer: enable data entry for slider label - - ladspa plugin gui: replaced value label with data entry - to allow numerical entry of parameter values - - pianoroll: added undo/redo to edit menu + accel. keys - - ctrl editor: implemented changing (painting) of pitch - events - - added macros for big endian machines in midi.h - - added spain translation (Albert Gonzales) -0.6.0: - - added swedish translations (Robert Jonsson) - - fixed editing of pitch events in list editor - - fixed crash in score editor - - check tempo entry values; dont allow invalid values which could - crash MusE - - fixed not functioning "Abort" button in MidiTransform dialog - - fixed Ctrl-editing in drum editor - - fixed "Group" audio routing - - fixed editing of pitch values in parts not beginning at tick zero - - fixed "unexpected EOF" after dragging of events in midieditor - - fixed cut&paste in midieditor - - implemented deleting multiple selected parts in arranger with Del key - - fixed audio pan pots in mono->stereo conversion - - changed iiwu to fluidsynth (thanks to Helio Chissini de Castro) - - new popupmenu: click with right button in empty tracklist - - LADSPA plugin guis are generated at runtime from qt-designer *.ui - (xml-)files; testfile is "freeverb.ui" for freeverb plugin; - - added "Slider"+"DoubleLabel" to musewidgetsplugin to make widgets - available in QT-Designer - - renamed poseditplugin.so to musewidgetsplugin.so - - fixed midi ctrl editor - - sparate sync device into txSyncDevice and rxSyncDevice. RxSyncDevice - can be configured to "all". - - use <asm/atomic.h> macros for atomically inc/dec count in lockfree - Fifo implementation -0.6.0pre8: - - prepared for internationalization: - - created muse.pro - - removed all implicit type conversions char* -> QString - - added several missing translations tr() - - Part text is now colored depending on background (FN) - - fixed "bounce to file" fifo handling - - disable transport buttons in slave mode - - calculate correct size for new part after midi recording - - fixed crash when reloading song while audio mixer is open - - implemented "bypass" function for LADSPA plugin gui's - - changed obsolete qt header file names - - implemented external midi instrument definition files (*.idf) - (examples are in */share/muse/instruments) - - implemented moving plugins up/down in effect rack - - fixed: renaming wave track switched track to mono - - implemented LADSPA "LOGARYTHMIC" and "INT" hints - - disable record button for tracks with no input routed to - - implemented LADSPA "TOGGLED" port as QCheckBox in plugin gui - - changed algorithm for zeroing denormalized floats in freeverb - plugin; now it works again for gcc3.x and optimization flags - turned on -0.6.0pre7: - - prevent creation of empty wave files when switching the - record button in audio mixer on/off; wave files are only - preserved when you actually record something into it - - made plugin guis persistent - - fixed scissor operation on wave parts - - added missing code for "bounce to file" - - fixed "bounce to track" - - removed/changed obsolete qt code - - update for current iiwu cvs - - fixed initialisation bug in wave editor - - dont link iiwu libs static - - (bh) added ladcca support - - fixed midifile export - - arranger, pianoroll editor, drum editor: tool popup menu - with right mouse button click - - update iiwu to current cvs version - - implement trackinfo patch names for iiwu - - fixed "appearance settings" - - added keyboard shortcut "Del" to delete events in pianoroll - and drum editor - - "Asterisk" key in keypad now toggles record mode -0.6.0pre6: - - fixed len of new created event in pianoroll editor - - extend font selection in "apearance settings" - - Added shortcuts for "Select All", "Unselect All" and "Invert - Selection" in PianoRoll editor (FN) - - Fixed Event coloring and shortcut ("e") key (FN) -0.6.0pre5: - - fixed midi seek & tempo map - - implemented global tempo change -0.6.0pre4: - - fixed tempo handling - - pianoroll editor/drum editor: fixed changing of note position - - transport: some geometry/font changes; time signature can now - be changed by mouse wheel - - fixed glue/scissor tool - - catch sigchld signal again so we know when a softsynth gui exits - -0.6.0pre3 - - fixed drawing of drum parts in drum editor - - on reading *.med files reject events which dont't fit into part (more robust - handling of defective med files) - - remove also synth gui when removing synth - - implemented some of Frank Neumann's usability suggestions: - - a "Copy Part" sets the current location marker after the marked part - - "Del" removes part if a part is selected instead of whole track - - new Keyboard Accelerator "C" toggles metronome click - - removed channel info for selected notes in pianoroll editor and - drum editor - - navigate between parts with left/right buttons in arranger window - - implemented changing note position for selected note in "note info" toolbar - - fixed: changing "loop" flag in transport window does not change "loop" flag in - other windows - - call pcm_wait() in alsa driver with sane values - - fixed: after load song seq did not run with rtc - - filenames for audio recording to tracks are now generated - automatically; every recording goes into separate file - - (bh) updated build system to use automake 1.7 - - fixe Midi->DefineController "Cancel" - - new function: Midi->DefineController load+replace and load+merge - - fixed MFile write: close() was missing; this fixes a.o. saving of - midi controller sets - - make organ synth aware of project directory for saving presets - - fixed load/restore presets for LADSPA plugins - - changed organ default values for envelope generator - - more fixes for alsa driver (less xrun errors) - - lokal allokator for soft syth midi events implemented - - enable sample rates != 44100 for iiwu (JACK has 48000 default) - - cleanup soft synth instantiation: call alsaScanMidiPorts only one time - - small audio buffer handling optimizations - - some thread cleanups - - fixed audio mixer geometry handling - - another fix for RT thread handling in iiwu - - fixed recording of pitch events (not tested) - - load iiwu sound fonts in a background helper thread to - avoid being thrown out by JACK - - fixed RT thread handling; now muse+iiwu+jack works - - honour LADSPA default hints for controller ports - - removed some restrictions for LADSPA plugins - - fixed tempo entry in transport window - - added high priority watchdog process to avoid system freezes - - updated "iiwu" synth to use peter hanappes libiiwusynth - iiwu now remembers last used sound font - - fixed cut&paste for midi parts - - fixed cut function for midi parts -0.6.0pre2: - - audio mixer: reset meter on mute - - changed input routing to allow monitoring while recording - - removed superfluous second init() call for soft syntis - - fixes for mono/stereo conversion - - ensure all wave files are properly closed on exit - - fixed segfault on second cliplist open - - fixed wave part split function - - fixed ALSA/JACK configuration bug - - event time positions are again stored as absolute time positions - to enhance compatibility with older "*.med" files - - changed panic button: instead of sending lots of note off - events only "all sound off" controller events are send for all - ports/channels - - fixed error on importing midi files when there are more - than one track assigned to a midi channel - - found another memory corruption bug in sysex handling - - fixed precount in metronome - - space key again stops play/record - - fixed stop/play in transport window - - prohibit change of mono/stereo for input strip - - convert mono/stereo on the fly for wave parts - - fixed crash when pressing play in empty song - - audio loop fixed - - _midiThruFlag not always initialized - -0.6.0pre1: - - attached midi mixer again - - fixed metronome: loop mode, measure/beat configurable - - moved part colorisation into part popup menu - - added global midi pitch shifter in addition to track pitch shift; this - allows for simple pitch transforming the whole song. Drum tracks are not - pitch shifted. - - fixed fatal error in soft synth handling resulting in sporadic - core dumps - - removed sf directory (sound file stuff) and replaced - it with the real thing: libsndfile 1.0.0 - - removed bogus kde stuff: kde.h onlyqt.h desk.h - - JACK Audio support - - AUDIO & ALSA now required - - fixed memory corruption with sysex events - - simplified organ soft synth parameter handling - - removed illegal controller message optimizations - - implementation of "panic" button - - first instantiated synti did'nt show up in port list - - size of resized drum and pianoroll editor windows are now remembered - - fixed crash when configuring null audio device - - removing soft synth instance did not stop midi thread; alsa client - was not removed - - (bh) lots of buid system changes and general cleanups - - (bh) removed the use of the UICBASES make variable; .ui files can - now be added straight into _SOURCES make variables with the new - SUFFIXES support in automake 1.6 - - (bh) upped minimum automake version to 1.6 - - (bh) removed the use of the MOCBASES make variable; header files that - need to be run through moc are now detected automatically - - (bh) new iiwusynth softsynth - - (bh) removed support for oss and alsa 0.5 - - clone parts implemented (also called "alias parts" or "ghost parts") - (dragging part with Alt-Key pressed in opposit to Shift Key which - produces a normal copy); - needed many internal changes; hope not to much is broken - - mastertrack: new spin widget for changing midi signature - - fixed midi thread initialization after loading new file - - stopped sequencer before loading new file; this should fix occational - core dumps on New/Load/ImportMidi - - some cleanups with file load/save operations - - Config->MidiPorts->otherRaw (device name pulldown): enabled OpenFile - Button for DevicePath field: At least current Qt can now handle devices. - - implemented: - - structure pulldown menu: - - global split - - global cut (mastertrack cut not implem.) - - global insert (without m.t.) - - implemented part mute - - added pitch transposition to pianoroll widget keyboard (Tim Westbrock) - - Save(As) behavior patch from Tim Westbrock -0.5.3: - - updated stk library to version 4.0; adapted stk synthesizer - - added SECURITY advice from J�n Nettingsmeier - - several compilation & portability fixes from Takashi Iwai - - fixed keyboard entry in pianoroll editor - - midi now runs synchronous with audio - - midi record time stamps now again synchronous to play position - - fixed trackinfo geometry (hopefully) - - pianoroll: fixed endless loop if record was pressed - without any mididevices configured (reported by Ola Andersson) - - default to english help if help for $LANG not available - (Ola Andersson) - - detect misconfigured ALSA system (Ola Andersson) - - updated demo app "rasen.med" to current xml format -0.5.2: - - fixed: rtc clock resolution settings in Config->GlobalSettings - - fixed: crash on second start of Edit->Marker - - more consequent implementation of -a (no audio) command - line parameter: no softsynth and LADSPA plugin loading; - disable audio menu - - fixed sending spurious midi controller settings on startup - when track info is active - - first code for "random rhythm generator" port from JAZZ++ - - fixed start offset of midi recording - - pianoroll editor: fixed selection update - - appearance setting "font size" now persistent - - does not crash anymore if no ALSA system found. (ALSA is still - needed to compile MusE) - - fixed: multiple recordings: clear events form first recording - in record buffer - - fixed: crash when removing last track with open - trackinfo - - (bh) added beginnings of alsa midi patchbay - - changed suid handling: now MusE runs with normal user uid - and switches only to root uid for some special operations - - fixed mixdown file output - - fixed lock on startup when wave file was missing - - arranger: open tracktype pulldown with left mouse click - (was opened on right click) - - arranger: don't scale pixmap symbols - - added share/rawwaves to cvs repository (needed by stk synthi) - - changed software synthesizer interface "mess": moved more - common synth functionality to "mess.c"; changed synti's to new - interface - - removed obsolete "short name" in controller type dialog - - CtrlCanvas: always draw location marker on top of grid - - fixed: TrackInfo: velocity - - fixed: alsa midi: "pitch change" interpreted as "channel aftertouch" - - fixed some midi controller bugs - - implemented new parameter save/restore interface for soft - synthesizer (applied to "organ") - - (ws) fixed lost controller events on midi import - - (ws) fixed crash when removing soft synth in use - - (ws) appearanceSettings: changing font size now works better - - (Bob) files now include "config.h" instead of relying on -DALSA, - -DALSACVS, -DINSTDIR and -DAUDIO - - (Bob) Added 'delete preset' button to vam's gui and made it - remember what preset file it loaded - - Mess: added new class MessMono() which implements some - monophone synthesizer features. This is used in the - simple demo synthi s1 - - if you try to exit MusE and abort this process, MusE was - left in an unusable state - - loop end was not calculated correct; event at loop end - was played - - muse now again stops at end of song in play mode -0.5.1: - - fixed crash: SaveConfig after Config->SoftSynth->AddSoftSynth - - changed default audioSegmentSize from 256 to 512 - - eliminated message: "input type 66 not handled" - - SoftSynth gui was startet with uid root - - save project: warn if file open fails - - removed trace message "unrecognized event 42" (Sensing Midi Event - from external keyboard). Anyway MusE does not handle midi sensing - events. - - changed geometry for trackInfo panel - - more code for 14 bit controller events - - install "rawwaves" for stk synti into right place preventing - crash on start - - fixed another crash when load soft synth configuration - - fixed Midi Position Label (was -1 beat/measure off) - - fixed problem with lost note off events - - generate "note on" events with velocity zero instead of - "note off" events -0.5.0: - - pianoroll editor: caption is changed when current part - changes - - new software synthesizer adapted from: - STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ - Version 3.2 - By Perry R. Cook, 1995-2000 - and Gary P. Scavone, 1997-2000. - http://www-ccrma.stanford.edu/software/stk/ - - added presets to "Organ" software synthesizer - - changed midi routing for software synthesizer: - - controller changes from gui can be recorded - - new midi thread implementation - - speaker button in pianoroll editor implemented: - if on events are played if clicked - - new Menu: Midi->InputPlugins - - demo plugin "Transpose" - - moved Config->MidiRemote to Midi->InputPlugins - - moved Config->MidiInputFilter to Midi->InputPlugins - - moved Config->MidiInputTransform to Midi->InputPlugins - - as usual some bug fixes of old and new bugs - - master editor: fixed: locator bars sometimes invisible - - master editor: new tempo spin box to change tempo at current - position -0.4.16: - - new software synthesizer adapted: - "Organ - Additive Organ Synthesizer Voice" from David A. Bartold - - new simple demo Synthesizer S1 - - remove the hardcoded qt path "/usr/qt3" (0.4.15) - - fixed many bugs - - new: implemented line draw tool in controller editor -0.4.15: - - qt3.0 now required - - many gui/widget changes - - fixed segfault when pasting wave parts - - changed (again) default magnification in wave-view - - implemented prefetch thread for playing audio files - - fixed: iiwu did not play with ALSA 0.6 - - fixed: handle audio underruns for ALSA 0.6 -0.4.14: - - some makefile and compilation changes - - audio play: noise between audioparts during playback - - dont stop at end of song when "loop" is active - - default magnification in wave-view set to 1 - - fixed a audio route initialization bug - - new metronome configuration: precount configuration added -0.4.13: - - avoid "disconnect error" on startup - - wave view: y magnification now persistent - - small gui enhancements to reduce flicker - - make install: now creates gui dir - - implemented 8 bit wave input format - - fixed another source of audio crashes -0.4.12: - - audio play: mixing buffer was only partly cleared resulting - in random noise - - fixed: core after removing soft synth instance - - set default master volume to 1 - - fixed some audio routing bugs - - drumedit: added missing display update after drum map loading - - drumedit: fixed: when loading external drum map, velocity values - got zero - - drumedit: fixed: core some time after loading external drum map -0.4.11: - - iiwu: in GM-mode dontt allow drum channel program changes; - also ignore bank select messages - - set GM-Mode resets synth - - some changes in drum channel handling - - substantial changes in audio implementation - - reimplemented audio configuration - - miditransform: val2 transforms fixed -0.4.10: - - iiwu: implemented sustain, ctrl:expression - - iiwu: changed sync audio/midi; this fixes some timing issues - - iiwu: fixed: core when loading new sound font while playing - - split RT thread into separate midi & audio thread - - fixed some bugs: crash on midi recording - - some new functions in pianoroll editor - - added/integrated Tommi Ilmonens "givertcap" - - iiwu: some fixes for ALSA 0.9beta - - arranger: voice name popup in channel info works again -0.4.9: - - fixed some memory leaks - - before loading a new song all synthesizer instances are - now removed - - reorganized installation: - - there is a toplevel installation directory - (default /usr/muse); the environment variable MUSE - points to this directory - - architecture dependent files go into - $(MUSE)/lib, architecture independent files - into $(MUSE)/share - - MidiSync: MC ticks are now also send in stop mode - (if configured) - - after "Start" is send, sequencer starts on next - midi clock tick - - iiwu: fixed core dump on save if no soundfont loaded - - iiwu: high resolution buffer size independent midi event - processing -0.4.8: - - faster display updates - - some changes for better compatibility with different - environments (compiler, lib) - - fixes for ALSA 0.5.11 - - fixed core dump while removing soft synth instance - - fixed some bugs with iiwu+gui - - fixed: TransportWindow: tempochanges while masterflag is off - - fixed: all tempochanges are now saved in songfile -0.4.7: - - ALSA 0.5.11 compiles again - - MESSS gui interface, first try: - -every midi instrument can have an associated - GUI (currently only impl. for MESSS soft synths). - The GUI is startet as a separate process connected - to the midi instrument. The gui sends midi commands - (sysex) to stdout. This midi data stream is connected - to the midi instrument port. - - test implem. can load sound fonts into iiwu synthi - - fixed a bug in loading big sound fonts - - waveedit: waveform display works again - - some iiwu changes -0.4.6: - - completed midi input architecture: every midi track has now - assigned input port+channel. Channel can be 1-16 or "all". - This allows for routing of different midi channels to - different tracks while recording. - - changed max number of midi ports from 8 to 16 - - fixed serveral bugs iiwu software synthesizer - - fixed compilation problems with some ALSA versions - - fixed: changing track name changed record flag - - fixed: remove midi editor if associated track is removed - - fixed: initial state of solo button in arranger - - fixed: hard to reproduce core while deleting track - - new command line option to set real time priority - - max number of midi ports is now 16 - - audio recording from master to file now works: - - configure Audio->MixdownFile (only wave/16bit) - - switch on record button in audio mixer master strip - - play - - fixed: graphic master editor: missing display refresh - after signature change - - changed midiThruFlag: removed from Config->MidiPorts; - "midi thru" now is associated with a track, if set all input - to that track is echoet to track port/channel - -0.4.5: - MESSS: (MusE Experimental Software Synthesizer interface Spec): - A software synthesizer is implemented as a dynamic - loadable library (*.so file) with two interfaces to the - outside world: - - - a LADSPA interface for audio output - - a midi sequencer interface registered to ALSA - - MusE searches all available synths and presents a list - in Config->SoftSynthesizer. To use a synthesizer you have - to create an instance. Several instances of an synt can be - created and used. Every instance creates - - a) an alsa midi sequencer port (look at Config->MidiPorts) - b) a new strip in the audio mixer - - As a demo i ported a stripped down version of the iiwu - software synthesizer (http://www.iiwu.org) to MusE. - Setup info is in README.softsynth - -0.4.4: - - fixed cakewalk style event display in arranger - - track comments are handled as 0xf text meta events in - midi files - - fixed: follow song in pianoroll/drumedit (daniel mack) - - fixed: refresh in list editor - - implemented 14 Bit controller in list editor - - new patch form Takashi Iwai enables MusE to compile - with ALSA 0.9.0beta5 and current cvs version - -0.4.3: - - new: Config->MidiInputTransform - - new: comments for tracks: click with right button on track - name in arrange window - - fixed: score editor sometimes eats up all memory on start; - machine was unusable for some minutes until muse crashes - - fixed some other smaller bugs - - patch from Takashi Iwai for latest (cvs-) ALSA - - fixed: score postscript generation (printer & preview output) - -0.4.2: - - added few missing display updates (bugs introduced - with 0.4.1 drawing optimizations) - - pianoroll editor: - - fixed: edit->DeleteEvents - - drum editor: - - implemented: edit->DeleteEvents - - use different cursor shapes while using - Glue- Cut- and Rubber tools -0.4.1: - - some small Changes for compiling MusE with gcc 3.0 - - track info values (transposition, velocity etc) - are now applied when exporting to midi file - - better geometry management for ctrl panel - - pianoroll editor / drum editor now allow for more than - one ctrl panel - - new: load/save midi controller sets - - automatic creation of midi controller sets on - midi import - - new: active(used) midi controllers for current - parts in editor window are now marked in controller list - - fixed: parts in open editors are not restored correctly - - many drawing optimizations; scrolling is now much - faster/smoother -0.4.0: - - input configurable for every track - (you can record from more than one midi input device - to different tracks) - - you have to switch on the "record enable" flag for - every track you want to record to - - Note "h" is now called "b" unless you set - the environment variable "LANGUAGE" to "de" - - Changes from Daniel Mack: - - bigtime window now shows hour:minute:sec:frame - - configurable snap grid for arranger - - configurable font size - - again "tick underflow" - -0.3.20: - - "bigtime" widget from Daniel Mack - - fixed global accelerator keys f11/f12 (toggle transport & - bigtime window) - - fixed: score editor: try placing notes in the right margin of the - last row gave core dump - - score editor: different cursor shapes - - new try on missing midi sync ticks (producing "tick underflow" - trace messages) - - score editor: some small enhancements -0.3.19: - - several small bugfixes from Daniel Mack - - fixed "make install" - - if you have trouble compiling ALSA audio: - change "AUDIO = yes" to "AUDIO = no" in make.inc - - some fixes/enhancements from Brian K: - - fixed: score editor: no more "EVENT not found" during subsequent - edits of a selected note - - scrubbing with rubber tool in score editor - - new part appearance option -0.3.18: - - fixed: Export Midifile -0.3.17: - - simple audio recording - - midi sync slave: received "start" did not reset pos to tick 0 - - fixed several bugs in screen update and synchronisation between - different midi editors - - new: Configure->Appearance dialog from Daniel Mack -0.3.16: - - "follow song" now works in both directions - - MidiTransformator: implemented missing "Copy" and "Extract" functions - - fixed: reset sustain at stop only for channels which really had sustain - set - - fixed several bugs in midi sync code; needs more testing - - received "set song position" from alsa midi driver now - handled in sync slave mode - - transport buttons are now disabled in "external midi - sync" mode - - fixed: do not send midi "start" "stop" "continue" etc. as sync slave - - fixed: several small bugs i cannot remember -0.3.15: - - fixed: some typos in "MidiTransformator" - - fixed: core at end of midi recording from external - sequencer as sync slave - - replaced midi "continue" message with "start" - when running as midi sync master - known bug: midi clock output only if seq plays, - should be send always even if seq stops - not implemented: cannot change tempo as sync slave - -0.3.14: - - fixed: core: typo in "undo add track" - - fixed: core: "undo remove event" - - selection of events is now a global attribute: if you select - an event in an editor, the same event is selected in all - open editors - - new: Midi Transformator (look at edit->MidiTransform) - (not all operators and operations are implemented yet) -0.3.13: - - fixed: TimeScale was wrong when using signature changes - - fixed: enforce left marker <= right marker - - new: mono wave tracks - - more usable LADSPA plugins to play with - - several small changes/bug fixes -0.3.12: - - fixed: synchronisation of tempo/signature changes with sequencer rt-thread - - fixed: track parameter were added again and again in loop mode - - new: tempo/signature changes undo/redo - - new: midi "transpose" function from Daniel Mack - (Arranger: edit->midi->transpose) -0.3.11: - - fixed: fixed serious bug in wave file handling - - simple audio play with ALSA 0.9.x - - fixed: editing events -> core (introduced in 0.3.10) -0.3.10: - - fixed: core while deleting controller events - - new: extended configuration of raw (serial) midi interfaces - - fixed: some memory leaks - - changed for ALSA 0.9.0 beta2 -0.3.9: - - some smaller fixes - - fixed: core: missing MidiController() Initialization - - fixed: pressing another mouse button while "drawing" an event - in a canvas with left mouse button pressed gives core -0.3.8: - - fixed: correct update of midi port table on song change - - CtrlEditor: controllers can(must) now be configured - - List Editor: corrected handling of meta/sysex strings - - changed: combined pitch high/low to single value ranging - from -8192 +8191; editable with controller editor - - ALSA 0.9.0beta1 works for midi; as far as i tested it, this - alsa version has no more problems with OSS raw midi emulation - - new: colored activity display in arranger (Daniel Mack) - - new: context sensitive extensions to "right mouse click - pulldown menues" for arranger parts (Daniel Mack) - - new: gui prototypes for extendend configuration of raw midi - devices and audio mixdown file selection - - fixed: quirks with OSS midi devices configuration -0.3.7: - - start porting to ALSA 0.6.0 cvs version - - fixed: option -M produces midi output trace for alsa midi - - fixed: pianoroll and drum editor now accept input focus - and then honour some keyboard shortcuts - - fixed: score editor: core when inserting small rests - - new: "ruler" for pianoroll, drum editor and part editor - - fixed: midi recording: event len always 1 tick (bug introduced - in 0.3.6) - - midi port config: show only available raw midi devices - - fixed: tempomap/tempo save/restore - - fixed: initialize master button to saved value - - some smaller changes: - - midi recording: new parts begin at record start instead - of first event - - missing note offs are insertet virtually at record end - - recording takes place on selected track - selected part - and not on selected part if on different track -0.3.6: - - fixed: markerList: click in list -> core - - fixed: stop at end of song only if not recording - - fixed: events of zero length crash the sequencer - - fixed: missing note off events for metronome - - fixed: gui: changing port/channel in trackinfo updates tracklist - - new: midi recording & loop -0.3.5: - - fixed: midi recording with alsa was broken - - fixed: mastertrack: -> core - - fixed: rename track -> rename part -> core - - fixed: help browser: back function - - fixed: score: entered lyrics are saved again - - fixed: score->staffSettings: tracklist - - fixed: score->enterNotes wrong snap position -0.3.4: - - fixed: some bugs & quirks - - new: implemented pianoroll->edit->deleteEvents - -0.3.3: - - new: MusE now stops at end of song if in PLAY mode - - fixed: core if muse was started without song name and - there was no ".musePrj" file in current directory - - new: on popular request: "RewindToStart" button - - fixed: changing devices while playing - - fixed: arranger: could not scroll to the end of song - - fixed: song lenght on midi import - - fixed: fatal error in handling "note off" events - - new: "sustain" is reset on stop - -0.3.2: - - fixed: part editing: endo delete, glue etc. - - fixed: option -m (trace midi input) works again - - fixed: midi input filter: could not toggle channel 1 button - - fixed: midi mixer - - fixed: midi recording into part: part length adjusted if events - recorded past end of part - - fixed: MusE initialisation failed if there is no ".musePrj" - file in current directory! - -0.3.1: - - step 2 of internal reorganization - - fixed: score: lyrics are now saved again - - fixed: some quirks with lost track markers - - new: Option -L locks sequencer memory - - fixed: recording from serial midi (raw oss & korg tohost) - - fixed: several smaller bugs & quirks - -0.3.0: - - fixed: pianoroll editor: entering new events -> core - - new: drum editor click on instrument name "plays" - instrument - - fixed: changing the channel of a track now changes also - the channel of all events in that track - - massive changes for audio/wave integration: - - start of audio mixer - - audio routing - -0.2.12: - - fixed: wave files/tracks/parts: calculation of tick<->time; - it should be possible again to import/play simple waves - - fixed: funny things happend when muting all audio tracks - - fixed: core if no active record track - - new: Rob Naccarato started with documentation; press - <F1> in MusE and have a look - -0.2.11: - - fixed: metronome - - fixed: initial state of "click" transport button - - fixed: midi thru: - if midi thru is switched on, all received events are - echoed to the port/channel associated to the currently - selected track, regardless of the input port/channel. - Track parameters as pitch shift, velocity compression etc. - are applied before echoing the event. - - _not_ fixed: alsa midi driver: strange sysex behaviour -0.2.10: - - fixed: parameter change in midi trackinfo - - fixed: some errors in *.med file handling - - fixed: midi export - - fixed: midi events are now played according to priority: - - channel priority: 10,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16 - - note off before note on -0.2.9: - - fixed: typo in seq.c destroyed timing of 0.2.8 - - fixed: importing audio files - - fixed: writing *med files - - fixed: wave form display in arranger - - fixed: core on click in arranger "no track area " with pencil tool -0.2.8: - - fixed: oss midi devices now work agin - - reorganized midi event dispatcher - - fixed: pitchbend for midialsa (Xavier) -0.2.7: - - midi driver reorganization in preparation - for better ALSA sequencer integration; soundcard synth - work again - - some fixes -0.2.6: - DrumEditor overhaul: - - fixed: reading drum maps - - changed: exporting drum maps now writes the whole map - - fixed: device popup: ...invalid menu item - - new: instruments can now be moved - - fixed: changing A-Note/E-Note did not show effect - - changed: small x-offset in event canvas allows better placement of - events at pos 1.1.0 - - new: instrument names can be edited (double click instrument name) - - new: some drum maps - - fixed: update() missing after selection change in canvas - - fixed: len of new inserted drum events was quant-value, should be - default len from drum map - Alsa Midi Driver: - - changed (soundcard synth does not work :-( ) -0.2.5: - - fixed: session management for list editor - - new: list editor: hex entry in meta event dialog - - fixed: Midi: "GS Reset" button aktually did a "GM Reset" - - fixed: Midi: "GS Reset" on Song Start was always combined with "GM Reset" - - fixed: Arranger: copy/paste produced core - - fixed: Arranger: removed some (not working) key accelerators - - new: Drag file from KDE fm and Drop on arranger partlist - - removed bogus midi archiv - - some major code reorganizations in preparation for audio integration - resulting in new errors and *.med file incompatibilities; - - fixed: "cannot delete busy part" even if part is not busy - - fixed: arranger/progname.c: bad instrument name table caused segfault - (Tim Mann) - - fixed: score/layout.c: could not enter A# (Gilles Fillipini) -0.2.4: - - fixed: removed silly warning: Cannot find translation... - (translations are not (yet) enabled) - - fixed: trackMarker->destroy TrackMarker->create track -> core - - new: integration of track markers in arranger - - export/import SMF-Marker as Meta Type 6 - - changed: src/makefiles new arranged - - fixed: score editor: too many rests - - fixed: core if you try to insert note outside of staves -0.2.3: - - MidiSyncConfig: extSync synchronized with button in transport - window - - audio: try oss audio device /dev/dsp in addition to /dev/sound/dsp - - changed: column expand logic in arranger tracklist - - new: KDE2.2: define HAVE_KDE in make.inc to compile a - KDE version of MusE (experimental) - - new: realtime recording of Midi SysEx Events - - changed: better LADSPA plugin handling - - fixed: Pianoroll: Color Events: RGB parameter out of range - - changed: canvas: moving objects - - fixed: AudioMasterMixer produced core after second invocation - - new: track markers -0.2.2: - - switched to QT2.2 - - fixed: Transport: "Master" button initialization - - fixed: session management for partlist in midi editors; - (new *.med xml files are probably incompatible - - fixed: cut&paste now works for parts on drum tracks - - fixed: cannot delete busy Parts any more - - fixed: honour LADSPA_PATH environment variable - - fixed: TransportWindow stays on top and is manageable - (testet with KDE2 beta4) - - fixed: arranger: column order is now recorded in - .med file - - fixed: sometimes under obscure circumstances MusE crashed - while opening an midi editor - - fixed: several typos/errors in *.med file reading/writing - - new: list editor: insert midi events (incl. sysex & meta) - double click on list entry to open editor to modify - values - - new: MTC/MMC Slave: - Configured as slave you can synchronize MusE - from external devices using Midi Time Code. - Midi Clock Master: - Configured as master MusE can control external - sequencers - Hooks for MTC/MMC Master and MidiClock slave. - - fixed: score: ScoreConfig::setTracklist() missing "clear" - - new: score: odd rest values implemented -0.2.1: - - new: Arranger: move (midi) parts between applications: - - cut/copy part(s) to global clipboard - - paste part(s) from global clipboard to arranger - - drag parts with middle mouse button (experimental) - - new: Pianoroll: move events between applications: - - cut/copy events to global clipboard - - paste events from global clipboard to arranger - - drag events with middle mouse button - - fixed: only write audio if there are audio tracks - - fixed: PianorollEditor: moving multiple selected events - (thanks to Chris Wakelin) - - fixed: commented out unused/missing "color.xpm" - - fixed: partlist changed to multimap<> -0.2.0: - - fixed: another error in OSS midi driver which results in - "bad file descriptor" aborts - - fixed: MidiFilter - RecordFilter/ThruFilter - - new: Master Part of Audio Mixer: - - Audio Level Meter - - LADSPA Host with - - automatic generated user interface - - presets store/load - - new: LADSPA "Freeverb" plugin for audio master - - new: Drum Editor - - load/save drum maps - - drawing reorganized - - new: Pianoroll Editor Functions: - - configurable event colors (none/pitch/velocity) - - configurable function ranges (apply functions to - all/loop/marked events) - - selection functions (all/none/loop/invert) - - switch between different parts in editor ("ghost events") - - PencilTool: Control+LeftMouseButton prevents - accidental creation of events - - PointerTool: Control+LeftMouseButton restricts - to horizontal or vertical move -0.1.10: - - new: MidiExport: some configurable Parameter for exported - Standard Midi File (SMF) - - new: configurable Midi Record/Thru Filter for midi - realtime recording - - fixed: time signature changes in score editor - - fixed: "midi bar scale" is updated on time signature - changes - - fixed: event sorting in "list mastertrack editor" -0.1.9: - - fixed: tempo changes during play - - fixed: "follow event" in graphical mastertrack editor - - fixed: mastertrack list: dynamic content update if song changed - - fixed: OSS midi serial output was broken -0.1.8: - - bug: scaling in graphical mastertrack editor - - bug: reduce value of MAX_TICK to prevent overflow in scaling - - bug: pianoroll editor: length quantization - - bug: midi import: timing broken; bug introduced in 0.1.6 - - feature: editing of time signature in graphical mastertrack -0.1.7: - - bug: typo for 't'-kb accelerator in pianoroll-editor - - bug: quant values < 1/64 are not supported-> assertion bug - for keyboard accelerator >=8 in pianoroll editor - - pianoroll: new feature: step recording - midi input: - - press "shift"+ midiKey to enter chords - (if you enter same note again, it's deleted) - - press "ctrl" + midiKey to continue last note - - pianoroll: new menu function: quantize pos+len - - quantize configuration dialog: added flag for default len quantization - "whats this" help text -0.1.6: - - bug: exported midifiles had random "division" timing parameter - - bug: core dump on midi record start - - feature: keyboard accelerators in pianoroll editor: - '1'-'9' '.' and 't' set quant & snap values - -0.1.5: - - MusE now works again without RTC (Real Time Clock) Device - (but much reduced timing accuracy) - - new Debug Options -m -M: MidiDump for input and output - - global keyboard accelerators: - spacebar: while play/record: STOP - while stop: Goto left mark - while on left mark: Goto Pos 0 - Enter: start play - Insert: Stop - "/": Cycle on/off - "*": Record on - - Midi Step Recording: implemented external midi keyboard as - recording source (new "midi input" toggle button in pianoroll editor) -0.1.4: - Audio - ============== - - simple audio play (ALSA & OSS) - - stubs for cliplist Editor, audio recording - - AudioMixer master volume - - bug fixes for wave viewer - - Synthesizer - ============== - - first part of framework for realtime software synthesizer - driver/synthis, s1/*; - -0.1.3: - Score Editor: - ============== - - print preview button (gv) - - postscript default resolution is 72dpi and not 75dpi - - configurable overall scale for printer output - - simple beams - - Misc: - ============== - - bug: path handling for project file: project files are now - saved in the correct directory - - bug: canvas initial scaling - - bug: core if configured device didnt exists - - bug: ctrl editor produced values > 127 - - feature: Arranger: Parts are now displayed with a horizontal offset - - feature: Arranger: added save/restore for some configuration values - - feature: Midi Recording: track parameter like Transposition are now - applied before loop through - - feature: "Thru" flag in Configure->MidiDevices now implemented - - feature: Midi Remote Control: control sequencer stop/play/record/rewind - with configurable note events - - bug: typo in score/layout.c:split() caused core - -0.1.2: - - Score: - - add lyrics entry - - changed note head for 4/4 - - changed positioning of 2/4 and 4/4 notes - - ties can now span systems - - tie connected notes are selected as one note - - page settings, margins handling corrected - - configurable fonts for score editor page layout -0.1.1: - - master: scale changed - - no more core when selecting the score editor without a selected - part to edit - - time signature scale in master track - - master track: function tempo edit - - new popup menu in arranger / part canvas - - makefile: "make depend" target - - new: alsa raw midi interface - - improved score editor: - - split system (piano left&right hand) - - multi stave systems - - symbols - - lasso selection - - dynamics symbol palette - - window position of all toplevel windows is now remembered - correctly - - bug fixes & code cleanups - -0.0.10: - - removed obsolete file.c file.h - - separated midi archive - - removed unused widgets/wtscale.* - - removed unused widgets/dial.* - - midis with Meta Event Type 6 produced core - - removed '\n' chars from windows caption - - new setBg(QColor) method for class View - - broken Ctrl-Editor fixed - - Pencil Cursor now shown for Pencil Tool in Ctrl-Editor - - Mute Indicator changed to red dot - - added CtrlEditor to DrumEditor - - process session info in xml songfile - - more work on mastertrack - - start ScoreEditor and moving the mouse on canvas (producing - mouseMoveEvents) before exposure of QLineEdit (time & pitch - in toolbar) produced core on QLineEdit->setText(xx) - - in continuous scroll mode position marker updated correctly -0.0.9: - - xml like configuration and song file - - new midi mixer, shows only active midi channels - - bug: metronom configuration: channel&port numbers - - bug fixes -0.0.8: - - new: quantize function - - new: wave tracks: new classes: WaveFile Clip; - load wave file; expand song file structure - first try on wave editor; - - logarithmic magnify - - rework of View & Canvas Classes, resulting in much - faster scrolling -0.0.7: - - fatal error: use of uninitialized device -0.0.6: - - more diagnostics in file functions - - new: can load and save *.gz and *.bz2 files - - new function: send local off to instruments - - bug fixes in pianoroll step recording - - bug fix: "follow song" save and restore - - bug fix: in importing midi files: calculating parts - - bug fix: metronome -> core - - new configuration options for parts - -0.0.5: - - new: midi activity display in tracklist - - new: patch selector in channel info; shows midi instrument - categories - - new: insert & delete Controller Values in Ctrl-Editor - - some minor bugs corrected - - nasty bug in Song::nextEvents(), which prevents simple - midi songs played correctly - -0.0.4: - - implemented: forward & rewind buttons - - implemented: drum edit: change values in info bar - - error: arranger->tracklist: resize failed if columns are swapped - - enhanced file selector for background image selection - - more WhatsThis and ToolTip Help - - Backport to QT202: Filedialog: Filterlists dont work - - Midi Config: changed signal click() to rightButtonClick() - - missing initialisation in song constructor - - new subdirectory for controller editor - - controller editor for some values -0.0.3: - - new transport design - - redesign of TrackInfo and ChannelInfo - - some changes reg. fonts and geometry management - - misc toolbars changed to read qt toolbars -0.0.2: - - changed color for cpos to red - - dont play metronome clicks with time < current - - doubleclick on arranger trackname: entrywidget now gets - input focus - - midi device configuration: reworked - - removed endless loop in Song::nextEvents() - - ported to qt-2.1.0-snapshot-20000113 - - changed QPushButton to QToolButton - - some cosmetic changes in transport window - -0.0.1 - - first release - diff --git a/muse2/NEWS b/muse2/NEWS deleted file mode 100644 index 96613ef6..00000000 --- a/muse2/NEWS +++ /dev/null @@ -1,29 +0,0 @@ -MusE 0.7: - New features: - - - MusE now depends on JACK; midi event timing is coupled - to JACK timing i.e - - simpler integration of internal software synthesizer; - midi events are now delivered directly to synthesizer without - ALSA. This eleminates the need of an extra realtime thread - for every synthesizer instance. - - instrument definition files "*.idf" files now describe - available midi controller for instrument - - software synthesizer show available midi controller - with name in controller editor pulldown - - 14 bit midi controllers (RPN'n NRPN's) can be handled in - graphical controller editor - - imported midi can be added to current song - - "New" now shows a selection of template songs to start with - - Keyboard shortcuts editor: most (all?) shortcuts can now be changed at - runtime. - - Redesigned audio-mixer with much improved routing capabilities - towards JACK. - - Track types extended, input, output, group, aux, wavetrack, - softsynth, miditrack, drumtrack - - The beginings of automation, only volume/pan at the moment. - - Improved RT performance, xruns should be a thing of the past. :) - - JACK transport integration - - support of JACK "freewheel" mode - - extended configuration - configurable shortcuts - diff --git a/muse2/README b/muse2/README deleted file mode 100644 index 925e3381..00000000 --- a/muse2/README +++ /dev/null @@ -1,232 +0,0 @@ -==================================================================== - MusE --- Linux Music Editor -==================================================================== - -Welcome to MusE, the open source MIDI/Audio sequencer. - -MusE is distributed under the GNU General Public License (GPL). -Please check out the file COPYING in this directory for more -details. - -,-----------------------------------------------------------------. -| NOTICE | -|-----------------------------------------------------------------| -| Some parts of MusE code are EXPERIMENTAL, and may well result | -| in a CRASH, and who knows what other ill effects. | -| RUN THIS SOFTWARE AT YOUR OWN RISK. | -`-----------------------------------------------------------------' - - ============================= - Requirements: - ============================= - - - CMake >= 2.4 - http:/www.cmake.org/HTML/Download.html - - - QT: Qt >= 4.2.0 (development files) - http://qt.nokia.com/products/ - MusE does _not_ compile with older versions - - - gcc >= 4.x.x or clang >= 2.9 - http://gcc.gnu.org/ - http://clang.llvm.org/ - - - libsndfile >= 1.0.1 (development files) - http://www.mega-nerd.com/libsndfile/ - - - libsamplerate >= 0.1.0 (development files) - http://www.mega-nerd.com/SRC/ - - - JACK >= 0.103 (development files) - http://jackaudio.org/ - - - libuuid (development files) - e2fsprogs package http://e2fsprogs.sourceforge.net/ - Some distros may include it in another package such as 'libuuid', or offer a choice. - - - LADSPA (development file ladspa.h) - www.ladspa.org - - ============================= - Optional: - ============================= - - - fluidsynth >= 1.0.3 (formerly known as iiwusynth) (development files) - http://sourceforge.net/apps/trac/fluidsynth/ - - - liblo Lightweight OSC (Open Sound Control) (development files) - http://liblo.sourceforge.net/ - - DSSI Disposable Soft Synth Interface (development files) - http://dssi.sourceforge.net/ - (Both recommended - DSSI alone will have no native GUIs, OSC alone does nothing, for now.) - - - dssi-vst Support for DSSI vst plugins - http://www.breakfastquay.com/dssi-vst/ - - - LASH Audio Session Handler - http://lash.nongnu.org/ - Recently LADISH has been emulating it instead: - http://ladish.org/ - - - Python The python scripting language - http://www.python.org - Python support is required for some experimental features. - Currently it's NOT recommended to build with python support. - - ============================= - Building MusE: - ============================= - - - Download source from http://lmuse.sourceforge.net/ - - - Unpack the source somewhere. - - You may also try the various MusE development SVN branches for - up-to-the-minute features and fixes, but they may be less stable. - - - To compile MusE, run the following commands from the - top level directory where the source code was unpacked - (the directory where THIS README FILE is found): - - ****************************************************** - * Notice: * - * A quick way is to run the ./compile_muse.sh * - * script in the same dir, it should perform the same * - * steps for a basic setup without asking any * - * questions. If it fails you may be better off using * - * the instructions below. * - ****************************************************** - - The build directory: - -------------------- - Building in a subdirectory is recommended to keep the build directory separate from the source tree. - So create a new subdirectory with a useful name like "build" or "debug" or "release": - mkdir build - Change directory (cd) to the new directory: - cd build - - Configuration: - -------------- - There are a few different ways to configure (notice the two dots): - - Type "cmake -i .." to run in step-by-step 'Wizard' mode, this is the RECOMMENDED way to - setup the build environment. - - Or type "cmake -L .." to see options, then compose "cmake <options>" yourself. - Some <options> are: - - -DCMAKE_BUILD_TYPE=<type> - <type> can be blank (to reset a previous cached type to 'empty'), - debug, release, RelWithDebInfo and MinSizeRel. - Release is recommended, to get optimizations. - If no CMAKE_BUILD_TYPE is given at all, cmake uses either the previous - cached value, or else 'empty' (plain or default system optimizations). - - -DCMAKE_INSTALL_PREFIX=<prefix> - The installation <prefix> where the program is installed. - The default is to install in /usr/local. - - Or type "ccmake .." (if you have it - text-mode GUI). It may be blank so hit - 'C' to first-time configure. Fiddle with yer options if ye so desire, then hit - 'C' to configure then 'G' to generate and exit, or 'Q' to quit without - generating. - - Or there is also a desktop GUI for cmake called cmake-gui. - - Compiling: - ---------- - After configuration, while still in the build directory,type: - make - - Installing: - ---------- - After compiling, type: - make install (as root) - or - sudo make install - - ============================= - Running MusE: - ============================= - - Recommended setup: - ------------------ - MusE is a realtime program which requires special rights to work properly. - - - Check if you are running a sufficiently new linux kernel > 2.6.x - A modern, standard destop kernel might suit your needs. - However, for the best performance a so-called 'low latency' or 'realtime' - kernel may be required. Check your distro's packages for availability. - - - create an "audio" group if it does not already exists - and put yourself into this group - - - For realtime priority, you may want to ensure either the file: - /etc/security/limits.conf - or - /etc/security/limits.d/audio.conf - contains: - @audio - rtprio 95 - @audio - memlock unlimited - - - make sure you can acces the realtime clock (RTC) - chmod 660 /dev/rtc - chgrp audio /dev/rtc - - - make sure MusE can set the rtc clock: - echo 8192 > /proc/sys/dev/rtc/max-user-freq - inspect with: - cat /proc/sys/dev/rtc/max-user-freq - - - some distros do not load the alsa sequencer module by default. - if necessary, load the alsa sequencer module with: - /sbin/modprobe snd-seq - - - Start jack, typically by using the qjackctl application. - MusE can also be run without Jack. MusE will use a dummy audio - driver if Jack is not detected, or the -a option is given. - - - Running: - ------------------ - start MusE by typing: - muse2 <options> - - Some <options> are: - -h help - -v print version - -d debug mode: no threads, no RT - -D debug mode: enable some debug messages - specify twice for lots of debug messages - this may slow down MusE massively! - -m debug mode: trace midi Input - -M debug mode: trace midi Output - -s debug mode: trace sync - -a no audio - -P n set audio driver real time priority to n - (Dummy only, default 40. Else fixed by Jack.) - -Y n force midi real time priority to n (default: audio driver prio +2) - -p don't load LADSPA plugins - -I don't load DSSI plugins - -L don't use LASH - -l xx force locale to the given language/country code - (xx = de,en,es,fr,pl,ru,sv_SE) - - (JACK and all its clients (qjackctl & MusE) must run with the - same user id) - - - ============================= - known bugs - ============================= - - - not so many: only some usability quirks we're working on currently - - automation recording displays odd things in the arranger - while recording; the display is corrected once recording is - complete. - -==================================================================== -Let us know whether MusE works for you !!! -Have a look at the webpage http://www.muse-sequencer.org for details. - - diff --git a/muse2/README.de b/muse2/README.de deleted file mode 100644 index 75aaf57f..00000000 --- a/muse2/README.de +++ /dev/null @@ -1,83 +0,0 @@ -==================================================================== - MusE --- Linux (Midi) Music Editor -==================================================================== - -Guten Tag! -dies ist MusE, der Open Source MIDI/Audio Sequencer. - -MusE steht unter der GNU General Public Licence (GPL). -Für Einzelheiten siehe COPYING. - -,-----------------------------------------------------------------. -| HINWEIS | -|-----------------------------------------------------------------| -| Viele Teile des Codes von MusE sind EXPERIMENTELL und können | -| zu Programmabstürzen und wer weiß was sonst noch allem | -| führen. | -| SIE BENUTZEN DIESE SOFTWARE AUF EIGENES RISIKO! | -`-----------------------------------------------------------------' - - ============================= - Voraussetzungen - ============================= - - - CMake >= 2.4 - http:/www.cmake.org/HTML/Download.html - - - qt 4.2.0 oder neuer - ftp://ftp.trolltech.com/qt/source - MsE kompiliert nicht mit älteren Versionen! - - - gcc >= 4.x.x oder clang >= 2.9 - http://gcc.gnu.org/ - http://clang.llvm.org/ - - - libsndfile >= 1.0.1 - http://www.mega-nerd.com/libsndfile/ - - - libsamplerate - http://www.mega-nerd.com/SRC/ - - - JACK >= 0.103 - http://jackaudio.org/ - - - libuuid - e2fsprogs Paket http://e2fsprogs.sourceforge.net/ - Einige Distros bieten das eventuell in einem anderen Paket an. - - Optional: - - - fluidsynth >= 1.0.3 (formerly known as iiwusynth) from - http://sourceforge.net/apps/trac/fluidsynth/ - - - liblo Lightweight OSC (Open Sound Control) http://liblo.sourceforge.net/ - - DSSI Disposable Soft Synth Interface. http://dssi.sourceforge.net/ - (Both recommended - DSSI alone will have no native GUIs, OSC alone does nothing, for now.) - - - dssi-vst Unterstützung für DSSI vst plugins http://www.breakfastquay.com/dssi-vst/ - - - LASH Audio Session Handler http://lash.nongnu.org/ - Seit neuerem kann LADISH es auch emulieren http://ladish.org/ - - - natürlich: eine Soundkarte und/oder irgendwelche Midi Geräte - - ============================= - Kompilierung - ============================= - - - download source von http://lmuse.sourceforge.net/ - - untar source: - tar xvofj muse-current-tar.bz2 - - konfigurieren: - cmake -DCMAKE_BUILD_TYPE=release [-DCMAKE_INSTALL_PREFIX=<prefix>] ../ - - kompilieren: - make - - installieren (als root) - make install - - Test - -==================================================================== -Aktuelle(re) Infos gibt es auf der MusE Homepage -http://lmuse.sourceforge.net/ -und in der englischen README - diff --git a/muse2/README.effects-rack b/muse2/README.effects-rack deleted file mode 100644 index 071ba08e..00000000 --- a/muse2/README.effects-rack +++ /dev/null @@ -1,82 +0,0 @@ -Sept 1, 2011 v0.0.3 by Tim. - -Understanding the Effects Rack ------------------------------- - -All audio track types (Input, Output, Group, Wave, Synth, and Aux) have - an effects rack into which audio plugins can be inserted in a chain. -Currently each rack can accomodate up to four plugins. - -MusE currently supports LADSPA plugins and DSSI effects plugins. - -One must carefully consider how many audio inputs and outputs a plugin has, - and how may channels the particular audio track has (1 mono or 2 stereo), - and how MusE uses the plugins in the rack. - -MusE will try to internally create as many independent copies (instances) of - a plugin as necessary, to satisfy the number of channels in the audio track. -Basically it divides the number of track channels by the number of - plugin audio inputs or outputs to determine how many copies to make. -First it examines the number of plugin audio outputs, and if there are none, - it will examine the number of audio inputs, and if there are none, - it will simply use just one plugin copy. - -For mono tracks with plugins having more than one audio input or output, - MusE uses the first input or output and ignores the rest. - -For stereo tracks: - - Plugin Plugin Independent Real number Real number - audio audio plugin of track of track - inputs: outputs: copies: input route output route - channels used: channels used: - ------------------------------------------------------------------- - 0 0 1 0 0 - 0 1 2 0 2 - 0 >= 2 1 0 2 - 1 0 2 2 0 - 1 1 2 2 2 - 1 >= 2 1 1 L only! 2 - >= 2 0 1 2 0 - >= 2 1 2 2 2 - >= 2 >= 2 1 2 2 - -Notice that on a stereo track with a plugin having one audio input and two - audio outputs, only the first track input route channel is used (left only). - -These same rules apply to inter-plugin audio when more than one plugin - is in the rack chain. Extra audio outputs of one plugin may be ignored - by the next plugin if not used. - -Currently specialized plugins with many inputs and/or outputs are not - really useful in MusE. - -Nor are so-called 'realtime' control plugins which use audio inputs - and outputs for control signals. -Loud noise alert! Beware of using such plugins in an audio effects rack. - - -Example: Consider a stereo Audio Input track with these effect rack - LADSPA plugins: - - comb_splitter Comb Splitter by Steve Harris, and - tap_stereo_echo Tap Stereo Echo by Tom Szilagyi - -The Comb Splitter has one audio input and two audio outputs. -The Stereo Echo has two audio inputs and two audio outputs. - -The stereo Audio Input track will therefore ignore its second - input route connection. It will process the left input only, - separating it into stereo with the Comb Splitter, passing the - split stereo signal into the Stereo Echo, finally producing - stereo output available at the Audio Input track's output routes. - - -One improvement would be not creating unused redundant plugin copies - between plugins in stereo tracks. -For example, for a plugin having one audio input and one audio output, - feeding a plugin having one audio input and two audio outputs, - the extra copy of the first plugin is redundant and not required, - but currently it is created anyway. - -
\ No newline at end of file diff --git a/muse2/README.instruments b/muse2/README.instruments deleted file mode 100644 index 1bc66e7f..00000000 --- a/muse2/README.instruments +++ /dev/null @@ -1,149 +0,0 @@ -================================================ - MusE loadable Midi Instrument Definitions - (valid from around MusE 0.8.1, Edited by Tim NOV.11.2012, at MusE 2.1rc1) -================================================ - - - File Extension ".idf" - - searched in Subdirectory "instruments" - (/usr/share/muse/instruments on my system) - - Can be viewed, created or edited with menu 'Midi -> Edit Instrument' - - All found instrument definitions are presented by MusE - in Config->MidiPorts in Pulldown in column "Instrument". - -------------------------------------------------- - Example of Instrument Definition File: -------------------------------------------------- - -<?xml version="1.0"?> -<muse version="1.0"> - <MidiInstrument name="GM"> - <Init> - ...MusE event list which initializes instrument - </Init> - <PatchGroup name="Piano"> - <Patch name="Grand Piano" prog="0"/> - <Patch name="Bright Piano" prog="1"/> - ... - </PatchGroup> - <PatchGroup name="Bass"> - <Patch name="Acoustic Bass" prog="32"/> - <Patch name="Fingered Bass" prog="33"/> - </PatchGroup> - ... - <Controller name="Pan" l="10" min="-64" max="63" init="0" /> - <Controller name="PitchBendSensitivity" type="RPN" h="0" l="0" max="24" init="2" /> - - ... - </MidiInstrument> - </muse> - -------------------------------------------------- - Notes -------------------------------------------------- - - (1) PatchGroups are not mandatory; its valid to write: - - <MidiInstrument name="GM"> - <Patch name="Grand Piano" prog="0"/> - <Patch name="Bright Piano" prog="1"/> - <Patch name="Acoustic Bass" prog="32"/> - <Patch name="Fingered Bass" prog="33"/> - ... - </MidiInstrument> - - (2) An "Instrument Definition File" can define more than on - Instrument, but it is recommended to use one file for - one instrument - - (3) the "prog" parameter in a "Patch" is mandatory. Missing - "hbank" or "lbank" are treated as "don't care". - Missing "drum" is treated as drum="0". - - A XG-Patch looks like: - <Patch name="Electro" drum="1" hbank="127" lbank="0" prog="24"/> - - (5) Prior to version 2.1: - --------------------- - A patch can be associated with a "mode" with one of - - 1 - GM - 2 - GS - 4 - XG - - Example: - <Patch name="Electro" mode="4" drum="1" hbank="127" lbank="0" prog="24"/> - - Mode id's can be ore'd together for patches which are valid - for more than one mode: - - <Patch name="Grand Piano" mode=7" hbank="0" lbank="0" prog="0"/> - - From version 2.1: - ----------------- - There is no 'mode' parameter. The selection of GM, GS, or XG instruments - or other instruments with an sysex 'Init' section, determines what 'mode' - the device is in. - - (4) example for MusE event (Sysex "XG-On"): - - <event tick="0" type="5" datalen="7"> - 43 10 4c 00 00 7e 00 - </event> - - (5) <Init> ... </Init> part can be omitted - - From version 2.1: - ----------------- - This section contains initialization events to be sent to the devices - upon certain changes such as device selection, change of instrument etc. - Usually it contains a brief series of sysex commands such as (4) to set the - device to a 'mode'. - - (6) Controllers have the following properties: - - name: arbitrary unique (short) string describing the controller - - type: Controller7 regular 7-bit controller - Controller14 14-bit controller - RPN registered parameter 7-bit - NRPN non registered parameter 7-bit - RPN14 registered parameter 14-bit - NRPN14 non registered parameter 14-bit - Pitch pitch mod wheel - Program program - From version 2.1: - PolyAftertouch key pressure controller - Aftertouch channel pressure controller - - Default Controller7 if omitted. - Pitch Program PolyAftertouch and Aftertouch are convenience controllers which - wrap functionality in one controller. They translate to and from the real midi messages - which are behind the scenes such as Pitch -> midi 0xE0. Their controller numbers are - internal and cannot be changed. PolyAftertouch is really an internal per-pitch controller. - - h: controller number MSB. Default 0 if omitted. - l: controller number LSB. Default 0 if omitted. - For per-pitch controllers, 'l' can also be "pitch" indicating each 'note' or - 'drum sound' has its own controller. Some devices such as XG support this. - - min: minimum value for controller - max: maximum value for controller - init: reset value for controller; when controller value is - undefined after instrument reset, use the ''undefined'' - value 0x10000 - - The min/max/init values can be omitted - Auto-biasing feature: If min is less than zero, such as with - pan = -64 -> 63, MusE automatically displays this range, - yet uses the true range of 0-127 'behind the scenes'. - - From version 2.1: - ---------------- - showType: Combination of 1: Show controller in drum tracks. - and 2: Show controller in midi tracks. - Default is to show in both drum and midi tracks if omitted (same as "3"). - - Here is a per-pitch drum controller example from the XG instrument definition file: - <Controller name="Drum Pan" type="NRPN" h="28" l="pitch" min="-64" max="63" showType="1" /> -
\ No newline at end of file diff --git a/muse2/README.ladspaguis b/muse2/README.ladspaguis deleted file mode 100644 index c1b168ff..00000000 --- a/muse2/README.ladspaguis +++ /dev/null @@ -1,56 +0,0 @@ -MusE can create LADSPA GUI's (graphical user interfaces) from -Qt designer *.ui files at runtime. -This allows a user to create or modify customized LADSPA guis without -recompiling MusE. - -====================== - Installation -===================== - -Copy the file muse/widgets/musewidgetsplugin.so into a directory were -Qt (designer) can find it. - -Example: - if you installed Qt in /usr/qt3: - su -c "cp -af musewidgetsplugin.so /usr/qt3/plugins/designer" -Check: - After starting the Qt designer you see all MusE specific widgets - under Tools/MusE. If you cannot find any MusE widgets, designer - did not find the file "musewidgetsplugin.so". - -====================== - Environment -====================== - -Naming: - The Qt designer files are named after the LADSPA plugin ID. - Example: the "freeverb" plugin has the id "1050". A gui for - freeverb has to be named "1050.ui". - The plugin ID is shown in the MusE plugin browser. - -Path: - MusE looks for *ui files at (museglobalshare)/plugins/. - If you installed MusE at "/usr" (configured with --prefix=/usr) - MusE looks at "/usr/share/muse/plugins" for *ui files. - -====================== - Creating *.ui file -====================== - -The association between LADSPA plugin parameters and Qt-Widgets is -done by name. All input widgets which manipulate a LADSPA parameter -must have a name starting with the letter "P" followed by the parameter -index. - Example: - A "Slider" widget which manipulates the 3th parameter of a - plugin has the name "P3slider". - -Supported Widgets: - "Slider" slider for float values - "DoubleLabel" entry for float values - "QCheckbox" to manipulate a on/off LADSPA parameter - "QComboBox" select from a list of named values; sets - integer LADSPA values - -(for more hints please look at the example *.ui files) - diff --git a/muse2/README.shortcuts b/muse2/README.shortcuts deleted file mode 100644 index e5227853..00000000 --- a/muse2/README.shortcuts +++ /dev/null @@ -1,192 +0,0 @@ -============================================================== -These are the default MusE shortcuts as of version 2.1.2: -This list, or parts of it, can always be generated by clicking - "Printable file" in Settings->Configure Shortcuts dialog. -All shortcuts can also be re-defined in that dialog. -============================================================== - -MusE Shortcuts for selected category: All categories - -Legend: -0 : Global -1 : Arranger -2 : Pianoroll -3 : Drumeditor -4 : List editor -5 : List Mastertrack -6 : Score editor -7 : Wave editor - -0 : Enter Transport: Start playback from current location -0 : Space Transport: Play, Stop, Rewind -0 : Ins Transport: Stop Playback -0 : W Transport: Goto Start -0 : End Transport: Goto left marker -0 : PgDown Transport: Goto right marker -0 : + Transport: Increase current position -0 : - Transport: Decrease current position -0 : / Transport: Toggle Loop section -0 : C Transport: Toggle metronome -0 : * Transport: Toggle Record -0 : Backspace Transport: Clear all rec enabled tracks -0 : Ctrl+F Toggle fullscreen - 1 3 : Ctrl+N File: New project - 1 3 : Ctrl+O File: Open from disk - 1 3 : Ctrl+S File: Save project - 1 2 3 6 : Ctrl+Shift+C Edit: Copy in range - 1 : Ctrl+B Edit: Paste clone - 1 : Ctrl+Shift+V Edit: Paste to selected track - 1 : Ctrl+Shift+B Edit: Paste clone to selected track - 1 2 3 6 : Ctrl+G Edit: Paste (with dialog) - 1 : File: Save as - 1 : Ctrl+1 File: Open recent file - 1 : File: Load template - 1 : File: Import midi file - 1 : File: Export midi file - 1 : File: Import midi part - 1 : File: Import audio file - 1 : Ctrl+Q File: Quit MusE - 1 : Ctrl+Alt+P Edit: Select parts on track - 1 : Ctrl+E Open pianoroll - 1 : Ctrl+D Open drumeditor - 1 : Ctrl+L Open listeditor - 1 : Ctrl+Y Open waveeditor - 1 : Ctrl+M Open graphical mastertrack editor - 1 : Ctrl+Shift+M Open list mastertrack editor - 1 : Ctrl+T Open midi transformer - 1 : Structure: Global cut - 1 : Structure: Global insert - 1 : Structure: Global split - 1 : Structure: Cut events - 1 : F11 View: Toggle transport window - 1 : F12 View: Toggle bigtime window - 1 : F10 View: Open mixer #1 window - 1 : Ctrl+F10 View: Open mixer #2 window - 1 : F9 View: Open marker window - 1 : Settings: Follow song by page - 1 : Settings: Follow song off - 1 : Settings: Follow song continuous - 1 : Settings: Global configuration -0 : Ctrl+Shift+F1 Settings: Configure shortcuts - 1 : Settings: Configure metronome - 1 : Settings: Midi sync configuration - 1 : Settings: Midi file import/export configuration - 1 : Settings: Appearance settings - 1 : Settings: Midi ports / Soft Synth - 1 : Settings: Audio subsystem configuration - 1 : Midi: Edit midi instruments - 1 : Midi: Open midi input transform - 1 : Midi: Open midi input filter - 1 : Midi: Midi input transpose - 1 : Midi: Midi remote control - 1 : Midi: Reset midi - 1 : Midi: Init midi - 1 : Midi: Midi local off - 1 : Audio: Bounce audio to track - 1 : Audio: Bounce audio to file - 1 : Audio: Restart audio - 1 : Automation: Mixer automation - 1 : Automation: Take mixer snapshot - 1 : Automation: Clear mixer automation - 1 : Ctrl+J Add midi track - 1 : Add drum track - 1 : Add new style drum track - 1 : Add wave track - 1 : Add audio output - 1 : Add audio group - 1 : Add audio input - 1 : Add audio aux - 1 : F1 Help: Open Manual - 1 2 3 : Shift+F1 Help: Toggle whatsthis mode - 1 : Return Edit: Edit selected part - 1 : Up Edit: Select nearest part on track above - 1 : Shift+Up Edit: Add nearest part on track above - 1 : Down Edit: Select nearest part on track below - 1 : Shift+Down Edit: Add nearest part on track below - 1 : Ctrl+Shift+O Edit: Insert empty measure - 1 : Ctrl+Down Select track below - 1 : Ctrl+Up Select track above - 1 2 3 6 7 : Ctrl+A Edit: Select all - 1 2 3 6 7 : Ctrl+Shift+A Edit: Select none - 1 2 3 6 : Ctrl+I Edit: Invert Selection - 1 2 3 6 : Edit: Select events/parts inside locators - 1 2 3 6 : Edit: Select events/parts outside locators - 1 2 3 7 : Alt+Left Edit: Select previous part - 1 2 3 7 : Alt+Right Edit: Select next part - 1 2 3 7 : Left Edit: Select nearest part/event to the left or move cursor - 2 3 7 : Shift+Left Edit: Add nearest part/event to the left to selection - 1 2 3 7 : Right Edit: Select nearest part/event to the right or move cursor - 2 3 7 : Shift+Right Edit: Add nearest part/event to the right to selection - 2 3 : Ctrl+Up Edit: Increase pitch - 2 3 : Ctrl+Down Edit: Decrease pitch - 2 3 7 : Ctrl+Right Edit: Increase event position - 2 3 7 : Ctrl+Left Edit: Decrease event position -0 : Shift++ Transport: Increase current position, no snap -0 : Shift+- Transport: Decrease current position, no snap - 1 2 3 7 : Alt+P Edit: Set locators to selection - 2 : Shift+Right Edit: Insert at location - 2 : Ctrl+Shift+Right Edit: Increase length - 2 : Ctrl+Shift+Left Edit: Decrease length - 1 2 6 : Midi: Transpose - 1 2 3 7 : Ctrl+PgUp View: Zoom in - 1 2 3 7 : Ctrl+PgDown View: Zoom out - 2 3 7 : C View: Goto Current Position - 2 3 7 : H View: Scroll left - 2 3 7 : L View: Scroll left - 2 3 6 : Alt+L Edit: Set Fixed Length on Midi Events - 2 3 6 : Quantize - 2 6 : Modify Note Length - 2 3 6 : Modify Velocity - 2 3 : Edit: Crescendo - 2 3 6 : Edit: Delete Overlaps - 2 3 : Edit: Thin Out - 2 3 6 : Edit: Erase Event - 2 3 6 : Edit: Note Shift - 2 3 : Edit: Move Clock - 2 3 : Edit: Copy Measure - 2 3 : Edit: Erase Measure - 2 3 : Edit: Delete Measure - 2 3 : Edit: Create Measure - 2 3 : 1 Quantize: Set quantize to 1/1 note - 2 3 : 2 Quantize: Set quantize to 1/2 note - 2 3 : 3 Quantize: Set quantize to 1/4 note - 2 3 : 4 Quantize: Set quantize to 1/8 note - 2 3 : 5 Quantize: Set quantize to 1/16 note - 2 3 : 6 Quantize: Set quantize to 1/32 note - 2 3 : 7 Quantize: Set quantize to 1/64 note - 2 3 : T Quantize: Toggle triol quantization - 2 3 : . Quantize: Toggle punctuation quantization - 2 3 : , Quantize: Toggle punctuation quantization (2) - 2 6 : E Edit: Change Event Color - 1 2 3 6 7 : A Tool: Pointer - 1 2 3 6 7 : D Tool: Pencil - 1 2 3 6 7 : R Tool: Eraser - 1 2 3 7 : P Tool: Pan - 1 2 3 7 : Z Tool: Zoom - 1 2 3 : F Tool: Line Draw - 3 : U Tool: Cursor - 3 : V Add note velocity 1 - 3 : B Add note velocity 2 - 3 : N Add note velocity 3 - 3 : M Add note velocity 4 - 3 : 0 Cursor step size: larger - 3 : 9 Cursor step size: smaller - 3 : Down Instrument/Cursor down - 3 : Up Instrument/Cursor up - 7 : Y Tool: Range - 1 : S Tool: Scissor - 1 : G Tool: Glue - 1 : Tool: Mute - 4 : Ctrl+N Insert Note - 4 : Ctrl+S Insert SysEx - 4 : Ctrl+T Insert Ctrl - 4 : Insert Meta - 4 : Ctrl+A Insert Channel Aftertouch - 4 : Ctrl+P Insert Key Aftertouch - 5 : Ctrl+T Insert Tempo - 5 : Ctrl+R Insert Signature - 5 : Ctrl+Shift+E Change Event Position - 5 : Ctrl+E Edit Event Value - 5 : Ctrl+K Insert Key -0 : F6 Goto Next Marker -0 : F5 Goto Prev Marker diff --git a/muse2/README.softsynth b/muse2/README.softsynth deleted file mode 100644 index 662ef423..00000000 --- a/muse2/README.softsynth +++ /dev/null @@ -1,86 +0,0 @@ -============================================================= - Short instructions to get the soft - synthesizer up and running -============================================================= - -1. Compile and install MusE - -3. Run MusE from an xterm with Option "-D"; - look at the debug output in the xterm; you should see something - like: - - 3 soft synth found - found soft synth <fluid> <fluid soft synth> - found soft synth <organ> <organ soft synth> - found soft synth <S1> <organ soft synth> - - -4. Configure Software Synthesizer - - Open Settings->MidiPorts/SoftSynth. - - - select a software synthesizer - - press "Add Instance" to create an istance of this - synthesizer; the synthi shows up in the list - of instances with a unique name - -5. Configure Midi Port - - To use the synthesizer instance you must - connect it to a MusE midi port: - - - click into the "Device Name" column of an empty midi port - (Device Name == "none") - - select the synthesizer from the dropdown menu. - - This connects the synthesizer to the selected midi port. - The instrument type is automatically set. - -6. Open the Audio Mixer - - You see a new mixer strip of type "Synthi" and the name - of the new created synthesizer instance. - - Route the audio output of this strip to "Output". - (per default the synthesizer is routed to the first Output strip) - -7. Now you are ready to play with the "organ" synthesizer - - - create midi track - - set the midi port to the synthesizer port - - click the "R" column in the tracklist to enable "Recording" - -8. Optional: open Configure->MidiPorts and click in column GUI - to show a GUI for the synthesizer instance. - There is no gui available for the S1 synth. - The iiwu gui enables you to enter a different sound font. - The organ gui has some "draw bars" to let you play with - sounds in real time. - -These are the software synthesizers currently available: - - - S1 a simple sythesizer skeleton as a guide for all who - want to code their own one: - - only one tone at a time - - simple sinus wave form - - no gui - The synthi may be used as a metronome. - - - organ, an adapted version of the LADSPA plugin - "Organ - Additive Organ Synthesizer Voice" from - David A. Bartold - - "organ" implements a gui connected bidirectional - to the synth via stdin/stdout - - - fluid, is the adapted version of Peter Hanappe´s - sample based fluid synthesizer (formerly known as iiwu) - - loadable sound fonts - - multi timbral - - 128 voices - - simple gui lets you load a different sound font - Fluid loads a default sound font determined by the - environment variable "DEFAULT_SOUNDFONT". - - - diff --git a/muse2/README.svn-branch b/muse2/README.svn-branch deleted file mode 100644 index 94e44ed8..00000000 --- a/muse2/README.svn-branch +++ /dev/null @@ -1,125 +0,0 @@ -Branches are handy for developing larger features (especially if you -temporarily break muse and then fix it again). You might want to ask -why you shouldn't simply develop in your local working copy, and then -commit a huge chunk. Well, this has multiple reasons: - o with branches, you'll have a history, because there are many small - commits. this makes bisecting for finding a bug possible. - o when you develop your feature publicly, others can check out half-done - versions, and already test the one half. they also could fix bugs. - o another advantage of keeping it public is: others can see whether you - may exclude some use case and inform you about that in time. otherwise - you'd spend lots of work in a design which was obsolete from the - beginning. - o and it shows that there's something going on :) - -also, branching makes "feature freezes" easier, for release planning. - -General note: ^/trunk means [url of the repo]/trunk. when you're inside -a working copy, svn understands the ^/trunk notation. -i assume you're inside some working copy - -whenever merging, make sure you're in the correct directory! - -CREATING A BRANCH - the following command creates a branch called yourbranch in the branches - directory, which is built upon the current (NOT the checked out!) trunk - revision: - - svn copy ^/trunk ^/branches/yourbranch - - svn copy does a "light copy", that is, as long as you don't change files, - they don't occupy any disk space. - -USING THE BRANCH - you might want to checkout every branch relevant to you into another local - copy. believe me, it makes life easier. alternatively, svn switch is your - friend. - just develop inside the working copy, then commit. - -MERGING WITH THE PARENT BRANCH (in my example: the trunk) - from time to time, you want to update your branch to represent the - current trunk plus your changes (and not an ancient trunk plus your - changes). to be safe, only merge with the parent branch, and only - merge in one direction (usually from trunk into your branch), unless - you know what you're doing. if you're reading and not skimming this, - you're probably NOT knowing. svn help and google are your friends. - - be in your branch'es working directory root (the dir which is containing - all the files/dirs also trunk (the parent) is containing as well. - - svn merge ^/trunk --accept postpone - - does the job for you. there might be conflicts, when both in your branch - and in trunk some file has been changes at a similar location. svn by - default asks you what to do then, which is annoying. --accept postpone - turns this off, and gives you a summary at the end of the merge. - - If There Were Conflicts: - if any file in "svn status"'s output has a C in front of it, there are - conflicts. open the file in your editor, and look for markers like - "<<<<<", "=====" and ">>>>>". these show what code is in the trunk - (between <<<< and ====), and what code is in your branch (between - ==== and >>>>) (or vice versa. svn tells you). - you have to make it work again and save the file. - - with "svn resolved FILENAME" or "svn resolved -R some/directory" you - mark the conflicts for FILENAME or all files below some/directory as - solved. - - Another word about conflicts: there may be conflicts, even if svn doesn't - note them. ALWAYS recompile the merged code and test it. - - if done, you can commit the merge normally using "svn commit" - -PUTTING YOUR WORK BACK INTO THE PARENT BRANCH (in my example: trunk) - do a final merge from your parent branch into your branch. compile and - test. - then there are several ways to proceed: - o use svn merge --reintegrate, which doesn't work with the old repo - version muse is using :( - o go into the trunk (or the parent branch'es directory), and issue - svn merge ^/branches/yourbranch --accept theirs-full - the problem with the merge is, that every previous merge from trunk - into your branch will be applied a second time, which doesn't work. - --accept theirs-full will basically use the files in your branch. - you might want to verify with diff: - diff -R /path/to/local/trunk /path/to/local/yourbranch - there should be no differences. - - commit that to trunk: svn commit - - then, "fake-merge" trunk into your branch again. otherwise, with the - next merge from trunk into your branch, we would have the duplicate - changes problem again. if you're _SURE_ that you aren't using the - branch any more, you can leave this step out. - - svn merge ^/trunk ^/branches/yourbranch --record-only - svn commit - - - this solution is a bit hackish :( but it works - - -NOTES FOR RELEASE BRANCHES - after creating the release branch, ALL commits which are fixing bugs - must go into the release branch. ALL commits which are adding features - must go into trunk or other branches. - the team should focus on fixing bugs in the release branch. - to get the fixes into the trunk, from time to time run: - - svn merge ^/branches/releasebranch ^/trunk - svn commit (in trunk's local copy) - - when releasing the release branch, merge it into the trunk a last time, - and then never touch the release branch again. - for the next release, create a new one. - -TAGGING - when there's any reason for tagging a revision, simply do - svn copy ^/whatever ^/tags/yourtagname - read the svn manual for details - -GETTING HELP: - svn help <command> (usage notes, short explanations) - google (everything) - the svn book (->google) (long explanations) diff --git a/muse2/README.translate b/muse2/README.translate deleted file mode 100644 index f4741a4d..00000000 --- a/muse2/README.translate +++ /dev/null @@ -1,62 +0,0 @@ -Internationalisation - -If you want to contribute a translation the following hints -may be of help to you: - -Step 1: - If you want to update an existing translation, skip to step 2. - - If you want to do a new translation, start with creating an - empty translation file: - - touch share/locale/muse_fr.ts - -Step 2: - If you want to update an existing translation and you downloaded - a stable release (not a snapshot) of MusE, skip to step 3. - - Populate your .ts file with the newest strings - - mkdir build - cd build - cmake -DUPDATE_TRANSLATIONS=ON .. - make translations - cmake -DUPDATE_TRANSLATIONS=OFF .. - cd .. - - Your file share/locale/muse_fr.ts is now ready for translation. It - is recommended that you copy this file to some other place and - and work on the copy. - -Step 3: - Edit "muse_fr.ts" manually or use the Qt "linguist" tool: - - linguist muse_fr.ts - -Step 4: - Save the edited file "muse_fr.ts" from linguist and - start File->Release. This generates the file "muse_fr.qm". - Copy this file into your muse installation folder, - <prefix>/share/muse-2.0/locale/ - - or - - Copy your edited "muse_fr.ts" into share/locale in the source tree - and rebuild/install muse - - cd build - cmake -DUPDATE_TRANSLATIONS=OFF .. - make - sudo make install - -Step 5: - Test: - If your system locale is set to the same language as your - translation, simply start MusE: - - muse2 - - Otherwise, start MusE with the desired locale using the -l flag - - muse2 -l fr - diff --git a/muse2/README.usage b/muse2/README.usage deleted file mode 100644 index 2c799bd3..00000000 --- a/muse2/README.usage +++ /dev/null @@ -1,130 +0,0 @@ -=============================================== -Here is some updated info about general editing - operations and keys/buttons in MusE as of - the version 2.1.2 massive changes by Tim: -This info should be in the doc tex file. -See also the README.shortcuts file. -=============================================== - - -Arranger: Creating, moving, resizing, copying, cloning, deleting parts: -======================================================================= -While drawing a new part, press: - No keys/buttons: Part is resized horizontally in-place. Part can move vertically. - Right-click/Ctrl: Move part horizontally, don't resize. Part snaps to the grid. - Right-click/Ctrl + Shift: Same as Right-click/Ctrl, but do not snap to the grid. - -Moving, copying, or cloning existing parts by dragging them: -Prior to dragging the parts, press: - Shift: Constricts movement horizontally or vertically. - Ctrl: A copy of the parts will be made. - Ctrl + Alt: A clone of the parts will be made. -While dragging the parts, press: - Shift: Do not snap to grid. - -While resizing a part with the pencil tool, press: - Shift: Do not snap the part's right border to the grid. - -To resize a part with the pointer tool, press: - Right-click + Ctrl: Resize part. - Right-click + Ctrl + Shift: Do not snap the part's right border to the grid. - -To delete a part, press: - Middle-click/Delete: Delete part. - -Pianoroll: Creating, moving, resizing, copying, deleting notes: -=============================================================== -While drawing a new note, press: - No keys/buttons: Note is resized horizontally in-place. Note can move vertically. - Right-click/Ctrl: Move note horizontally, don't resize. Note snaps to the grid. - Right-click/Ctrl + Shift: Same as Right-click/Ctrl, but do not snap to the grid. - -Moving or copying existing notes by dragging them: -Prior to dragging the notes, press: - Shift: Constricts movement horizontally or vertically. - Ctrl: A copy of the notes will be made. -While dragging the notes, press: - Shift: Do not snap to grid. - -While resizing a note with the pencil tool, press: - Shift: Do not snap the note's right border to the grid. - -To resize a note with the pointer tool, press: - Right-click + Ctrl: Resize note. - Right-click + Ctrl + Shift: Do not snap the note's right border to the grid. - -To delete a note, press: - Middle-click/Delete: Delete note. - -Drum editor: Creating, moving, resizing, copying, deleting drum notes: -====================================================================== -Prior to drawing new drum notes, press: - Ctrl + Meta: Draw with velocity level 1. - Meta: Draw with velocity level 2. - No keys/buttons: Draw with velocity level 3. - Meta + Alt: Draw with velocity level 4. -While drawing a new drum note, press: - No keys/buttons: Note can move horizontally and vertically. Note snaps to the grid. - Shift: Do not snap to the grid. - -Moving or copying existing drum notes by dragging them: -Prior to dragging the drum notes, press: - Shift: Constricts movement horizontally or vertically. - Ctrl: A copy of the notes will be made. -While dragging the drum notes, press: - Shift: Do not snap to grid. - -The pencil tool will not resize a drum note, it moves the note. Press: - Shift: Do not snap to grid. - -To delete a drum note, press: - Middle-click/Delete: Delete note. - -Wave editor: Creating, moving, resizing, copying, deleting wave events: -======================================================================= -While drawing a new wave event, press: - No keys/buttons: Event is resized horizontally in-place. - Right-click/Ctrl: Move event horizontally, don't resize. Event snaps to the grid. - Right-click/Ctrl + Shift: Same as Right-click/Ctrl, but do not snap to the grid. - -Moving or copying existing wave events by dragging them: -Prior to dragging the events, press: - Ctrl: A copy of the events will be made. -While dragging the events, press: - Shift: Do not snap to grid. (Sample-accurate resolution.) - -While resizing a wave event with the pencil tool, press: - Shift: Do not snap the event's right border to the grid. - -To resize a wave event with the pointer tool, press: - Right-click + Ctrl: Resize event. - Right-click + Ctrl + Shift: Do not snap the event's right border to the grid. - -To delete a wave event, press: - Middle-click/Delete: Delete event. - -Panning and Zooming the editors: -================================ -There are different ways to pan and zoom: -The default shortcut keys H and L pan the Pianoroll, Drum Editor, and Wave Editor - right and left. -Shift + Mouse Wheel pans the Arranger, Pianoroll, Drum Editor, and Wave Editor. -The Pan tool (hand) lets you pan just by dragging the canvases. Hold Shift to - constrict movement vertically. Hold Ctrl to constrict movement horizontally. -And the horizontal scroll bars obviously pan all windows as well. - -The default shortcut keys Ctrl + PageUp and Ctrl + PageDown zoom the Arranger, - Pianoroll, Drum Editor, and Wave Editor about the mouse cursor position. -Ctrl + Mouse Wheel also zooms these editors, about the mouse cursor position. -The Zoom tool (magnifier) lets you zoom just by dragging the canvases. -And the horizontal magnification scroll bars obviously zoom as well, but they - do not zoom about any cursor, they zoom from the left edge. - -By default, the Pan and Zoom tools have continuous, borderless motion, using a - special coding technique. This is great for track-ball mice for example, because - it lets you keep rolling and rolling without border limits! -An alternate, more standard method is available by un-checking "Borderless zoom/pan" - in Global Settings -> GUI Behaviour. This method does present border limitations - on how far you can move before you must reposition the mouse. - -
\ No newline at end of file diff --git a/muse2/SECURITY b/muse2/SECURITY deleted file mode 100644 index e0fa68a5..00000000 --- a/muse2/SECURITY +++ /dev/null @@ -1,244 +0,0 @@ -MusE Security Information -========================= - -In order to operate reliably at low latencies, MusE needs root privileges. -For a stand-alone computer in a home environment, this is not a problem. -However, on networked machines with multi-user access, there are some security -issues to be aware of. - - -Why does MusE require root privileges ? ---------------------------------------- - -1. -MusE must set the real time clock (/dev/rtc/) to a higher rate in order to get -a more precise timing source than the standard setting would allow. -For this task, it is *not* sufficient to alter the permissions or group of -/dev/rtc. You need root access. - -2. -The MusE audio threads must acquire real-time scheduling to perform with low -latency and free of dropouts. Since this could be misused for a local -denial-of-service attack (you can hog 100% cpu with a real-time task, thus -effectively making the system unusable), only root is allowed to do that. - - -Do I need to be root to run MusE ? ----------------------------------- - -No. You should not do normal work as root. Use the root login exclusively for -administrative tasks. You can run MusE as a normal user, provided you have set -the *suid bit*. -This is done automatically when you build and install MusE. - - -How does this "suid bit" thing work ? --------------------------------------- - -Normally, when a program is started, it gets the user and group id of the user -who started it, and thus has the same permissions as the user. It can read and -write the same files and use the same devices. - -Some applications need higher privileges to perform certain tasks, but must be -available to normal users. To accomplish this, UNIX-like systems have the -concept of the "effective user id". - -That means you can start a process, but the effective user id will be someone -else's, most likely that of the root user. You can recognize such programs by -the suid (for set-user-id) bit in their permissions. - -For example, when you do - - #ls -l /bin/ping - -you will see something like - - -rwsr-xr-x 1 root root 20908 Feb 27 2001 /bin/ping . - -This tells you it's a normal file (the first dash), it is readable and writable -by the owner (root) and has the owner's suid bit set (the letter "s"). -You may invoke it as a normal user, but the program will have root permissions -while it runs. - -(Btw, there is also an sgid (set-group-id) bit, which allows a program to be run -with the permissions of the group it is owned by. This can be used for -finer-grained access control to some programs but is rarely used in practice.) - -(Btw2, the letter "s" actually means both "executable" AND "set-{user,group}-id". -A capital "S" stands for "set-uid" without the execution privilege, which also -very rarely seen on real systems.) - - -What is the problem with suid programs ? ----------------------------------------- - -suid programs are safe as long as you can be sure they do only the job they were -written to do. For instance, you certainly want users to be able to do a ping, -but you wouldn't want them to wipe out the system disk while doing it. - -Unfortunately, there is a very common vulnerability in many programs called a -buffer overflow, which allows an attacker to spawn a shell from within a suid -program that inherits the permissions, giving him or her root access to the -entire system. -This exploit is fairly easy for an experienced attacker. All that's needed is -the compiled equivalent of the C expression execve("/bin/sh"), which can be -inserted into the running program whenever it does not check the length of user -input properly, by overflowing a buffer and thus overwriting a part of -the program code with the shell exploit code. - -The more complex a program becomes, the more likely buffer overflow -vulnerabilities slip in. - -If you are interested in details of such attacks, I recommend AlephOne's paper -"Smashing the stack for fun and profit", to be found in Issue 49 of Phrack -Magazine (http://www.phrack.com/show.php?p=49&a=14). - - -Does MusE have buffer-overflow vulnerabilities ? ------------------------------------------------- - -It may. But even if it had not, it is good practice to assume it does. -As soon as you are in a security-critical environment, you should treat all suid -programs with extra care unless they are proven to be secure. - -This is a gruesome and boring task, and we all want Werner to concentrate on -cool new features rather than digging through the code to fix loopholes that -aren't even a problem for 99% of the MusE users. -MusE does not need to be as secure as server daemons. It is intended for home -use in a trusted environment. -If you run MusE on your company's primary DNS server, it's your fault. - -But even home machines can become targets for intruders the moment they connect -to the internet. Since almost all of the machines than run MusE are occasionally -used to surf the web, it might be worth taking a few precautions. - - -What can I do to minimize the risk of a suid program ? ------------------------------------------------------- - -By default, Werner drops the root privileges in MusE's GUI thread - only the -audio threads keep it. This rules out many possible exploits, since GUI code is -usually the hardest to make secure. - - -As a further very simple yet effective security precaution, you can create a -group of trusted users, and give only this group access to critical suid -programs. For example, you might create a group called musers, of which you and -your best friend are members. Then you can set the muse binary as follows: - - #chown root:musers muse - #chmod 4750 muse - #ls -l muse - -rwsr-x--- 1 root musers 20930049 Aug 28 19:34 muse - -Now only members of the group musers can use MusE, Joe Random Hacker can not. -(However, if your account is hacked, MusE can then be exploited to gain root, -but hey...) - -Additionally, you can use "givertcap" as described in the next section. - - -What is givertcap and how do I use it ? ---------------------------------------- - -"givertcap" (give real-time capabilites) is a small wrapper written by Tommi -Ilmonen. -When enabled, it is executed by MusE and gives to it just the capabilities -needed to set the timer and get real-time scheduling, but not the full set of -root privileges. This greatly reduces the amount of damage that can be done. - -However, it is not used by default, since it requires a kernel modification. - -To enable givertcap, simply call ./configure --enable-rtcap before compiling. -(The givertcap code is part of the MusE distribution.) - -With current kernels, you need to apply a little patch to the kernel headers: -Go to /usr/src/linux/include/linux (or wherever you have your kernel sources) -and in the file capability.h change the line - - #define CAP_INIT_EFF_SET to_cap_t(~0&~CAP_TO_MASK(CAP_SETPCAP)) -to - #define CAP_INIT_EFF_SET to_cap_t( ~0 ) - -and the line - - #define CAP_INIT_INH_SET to_cap_t(0) -to - #define CAP_INIT_INH_SET to_cap_t( ~0 ) -. - -You must then recompile your kernel. - -In this setup, givertcap must be set suid root, but MusE can be run with normal -privileges. -Now all possible suid exploits described above apply to givertcap, but since it -is such a tiny program, it can be checked for exploits far more easily and can -be considered reasonably secure. - -Unfortunately, givertcap can be used to grant real-time privileges to *any* -program, so it's an easy way to have the machine clogged up by a malicious user -who might run bogus tasks at 100% system usage. -Therefore, you *must* create an extra group for it (called "musers" in this -example): - # chown root:musers givertcap - # chmod 4750 givertcap -Do not forget to remove the suid bit on muse afterwards by doing - # chmod 755 muse -. - -For more information about givertcap and kernel capabilites, see -http://www.tml.hut.fi/~tilmonen/givertcap/ -and -http://ftp.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/capfaq-0.2. -txt. - - - -Further reading: -================ - -General Linux system security: -http://linuxdoc.org/HOWTO/Security-Quickstart-HOWTO/ -http://linuxdoc.org/HOWTO/Security-HOWTO.html - -Secure Linux programming: -http://linuxdoc.org/HOWTO/Secure-Programs-HOWTO/ - -Permissions: -man chmod -man chattr - -givertcap: -http://www.tml.hut.fi/~tilmonen/givertcap/ - -An alternative approach, using a kernel module: -http://arctrix.com/nas/linux/capwrap.tar.gz - -Kernel capabilites: -http://ftp.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/capfaq-0.2. -txt - -Adding capability flags to ELF files: -http://atrey.karlin.mff.cuni.cz/~pavel/elfcap.html - - -Buffer Overflow attacks: -"Smashing the stack for fun and profit" by AlephOne 1996, published in -Phrack magazine, issue 49 -http://www.phrack.com/show.php?p=49&a=14 - -In the MusE source, app.cpp contains the invocation of givertcap and the -dropping of the suid privileges: grep for "getCapabilities" and "setuid" to see -how it's done. - -________________________________________________________________________________ - - -This document was written by Jörn Nettingsmeier -<nettings@folkwang-hochschule.de> -Corrections and improvements welcome. - -Thanks to Werner Schweer and Tommi Ilmonen for answering my questions. - -Last updated 02/22/2002. - diff --git a/muse2/config.h.in b/muse2/config.h.in index ddcd51e1..7dc31c59 100644 --- a/muse2/config.h.in +++ b/muse2/config.h.in @@ -29,7 +29,7 @@ #cmakedefine USE_SSE #define VERSION "${MusE_VERSION_FULL}" -#define SVNVERSION "${MusE_SVNVER}" +#define GITSTRING "${MusE_GITSTRING}" #define PACKAGE_NAME "MusE" #define DOCDIR "${MusE_DOC_DIR}" #define SHAREDIR "${MusE_SHARE_DIR}" diff --git a/muse2/muse/main.cpp b/muse2/muse/main.cpp index feb14324..2d2165d1 100644 --- a/muse2/muse/main.cpp +++ b/muse2/muse/main.cpp @@ -127,7 +127,10 @@ static void getCapabilities() static void printVersion(const char* prog) { - fprintf(stderr, "%s: Linux Music Editor; Version %s, (svn revision %s)\n", prog, VERSION, SVNVERSION); + if (strcmp("", GITSTRING)) + fprintf(stderr, "%s: Linux Music Editor; Version %s, (%s)\n", prog, VERSION, GITSTRING); + else + fprintf(stderr, "%s: Linux Music Editor; Version %s\n", prog, VERSION); } //--------------------------------------------------------- diff --git a/muse2/muse/miditransform.cpp b/muse2/muse/miditransform.cpp index 3f0f9235..723e067b 100644 --- a/muse2/muse/miditransform.cpp +++ b/muse2/muse/miditransform.cpp @@ -48,7 +48,7 @@ namespace MusECore { // // Order of events: -// Note, Poly Pressure, Control, AfterTouch, Pitch Bend, NRPN, RPN +// Note, Poly Pressure, Control, AfterTouch, Pitch Bend, NRPN, RPN, Program // #define MIDITRANSFORM_NOTE 0 #define MIDITRANSFORM_POLY 1 @@ -57,11 +57,12 @@ namespace MusECore { #define MIDITRANSFORM_PITCHBEND 4 #define MIDITRANSFORM_NRPN 5 #define MIDITRANSFORM_RPN 6 +#define MIDITRANSFORM_PROGRAM 7 static int eventTypeTable[] = { MIDITRANSFORM_NOTE, MIDITRANSFORM_POLY, MIDITRANSFORM_CTRL, MIDITRANSFORM_ATOUCH, - MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN + MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN, MIDITRANSFORM_PROGRAM }; static int procVal2Map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 }; @@ -545,6 +546,8 @@ void MidiTransformerDialog::transformEvent(MusECore::Event& event, MusECore::Mid val = cmt->procVal1a; } break; + default: + break; } if (val < 0) val = 0; @@ -598,6 +601,7 @@ void MidiTransformerDialog::transformEvent(MusECore::Event& event, MusECore::Mid case MusECore::ScaleMap: case MusECore::Keep: case MusECore::Flip: + case MusECore::Toggle: break; } if (val < 0) @@ -634,6 +638,7 @@ void MidiTransformerDialog::transformEvent(MusECore::Event& event, MusECore::Mid case MusECore::Keep: case MusECore::Flip: case MusECore::Value: + case MusECore::Toggle: break; } if (len < 0) @@ -666,6 +671,7 @@ void MidiTransformerDialog::transformEvent(MusECore::Event& event, MusECore::Mid case MusECore::Keep: case MusECore::Flip: case MusECore::Value: + case MusECore::Toggle: break; } if (pos < 0) @@ -1139,6 +1145,8 @@ void MidiTransformerDialog::procVal1OpSel(int val) procVal1a->setEnabled(true); procVal1b->setEnabled(true); break; + default: + break; } procVal1aChanged(data->cmt->procVal1a); procVal1bChanged(data->cmt->procVal1b); @@ -1152,7 +1160,15 @@ void MidiTransformerDialog::procVal2OpSel(int val) { MusECore::TransformOperator op = MusECore::TransformOperator(MusECore::procVal2Map[val]); data->cmt->procVal2 = op; + procVal2OpUpdate(op); + } + +//--------------------------------------------------------- +// procVal2OpUpdate +//--------------------------------------------------------- +void MidiTransformerDialog::procVal2OpUpdate(MusECore::TransformOperator op) + { switch (op) { case MusECore::Keep: case MusECore::Invert: @@ -1699,6 +1715,14 @@ bool MidiTransformerDialog::typesMatch(const MusECore::Event& e, unsigned selTyp matched = (c == MusECore::MidiController::RPN); } } + case MIDITRANSFORM_PROGRAM: + { + if (e.type() == MusECore::Controller) { + MusECore::MidiController::ControllerType c = MusECore::midiControllerType(e.dataA()); + matched = (c == MusECore::MidiController::Program); + } + break; + } default: fprintf(stderr, "Error matching type in MidiTransformerDialog: unknown eventtype!\n"); break; diff --git a/muse2/muse/miditransform.h b/muse2/muse/miditransform.h index 626c83c5..5ff78357 100644 --- a/muse2/muse/miditransform.h +++ b/muse2/muse/miditransform.h @@ -50,7 +50,21 @@ enum TransformFunction { enum TransformOperator { Keep, Plus, Minus, Multiply, Divide, Fix, Value, Invert, - ScaleMap, Flip, Dynamic, Random + ScaleMap, Flip, Dynamic, Random, Toggle + }; + +class TransformToggleState { + private: + bool _ctrlStates[128]; + + public: + TransformToggleState() + { + for(int i = 0; i < 128; ++i) + _ctrlStates[i] = false; + } + bool ctrlState(int ctl_num) { return _ctrlStates[ctl_num & 0x7f]; } + void setCtrlState(int ctl_num, bool state) { _ctrlStates[ctl_num & 0x7f] = state; } }; extern void writeMidiTransforms(int level, Xml& xml); @@ -93,6 +107,7 @@ class MidiTransformerDialog : public QDialog, public Ui::MidiTransformDialogBase void procEventTypeSel(int); void procVal1OpSel(int); void procVal2OpSel(int); + void procVal2OpUpdate(MusECore::TransformOperator op); void procLenOpSel(int); void procPosOpSel(int); void funcOpSel(int); diff --git a/muse2/muse/mplugins/midiitransform.cpp b/muse2/muse/mplugins/midiitransform.cpp index 4be99f9d..dea7ce8b 100644 --- a/muse2/muse/mplugins/midiitransform.cpp +++ b/muse2/muse/mplugins/midiitransform.cpp @@ -51,20 +51,21 @@ #define MIDITRANSFORM_PITCHBEND 4 #define MIDITRANSFORM_NRPN 5 #define MIDITRANSFORM_RPN 6 +#define MIDITRANSFORM_PROGRAM 7 namespace MusECore { static int selTypeTable[] = { MIDITRANSFORM_NOTE, MIDITRANSFORM_POLY, MIDITRANSFORM_CTRL, MIDITRANSFORM_ATOUCH, - MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN + MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN, MIDITRANSFORM_PROGRAM }; static int procTypeTable[] = { MIDITRANSFORM_POLY, MIDITRANSFORM_CTRL, MIDITRANSFORM_ATOUCH, - MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN + MIDITRANSFORM_PITCHBEND, MIDITRANSFORM_NRPN, MIDITRANSFORM_RPN, MIDITRANSFORM_PROGRAM }; -static int procVal2Map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 }; +static int procVal2Map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12 }; struct TDict { TransformFunction id; @@ -86,6 +87,8 @@ class MidiInputTransformation { QString name; QString comment; + MusECore::TransformToggleState toggleState; + ValOp selEventOp; int selType; @@ -145,7 +148,7 @@ class MidiInputTransformation { procChannelb = 0; } void write(int level, Xml& xml) const; - int apply(MidiRecordEvent& ev) const; + int apply(MidiRecordEvent& ev); bool typesMatch(MidiRecordEvent& e, int selType) const; }; @@ -234,7 +237,7 @@ static bool filterValOp(ValOp op, int val, int val1, int val2) // 2 - event changed //--------------------------------------------------------- -int MidiInputTransformation::apply(MidiRecordEvent& event) const +int MidiInputTransformation::apply(MidiRecordEvent& event) { int t = event.type(); @@ -312,6 +315,9 @@ int MidiInputTransformation::apply(MidiRecordEvent& event) const event.setType(ME_CONTROLLER); } break; + case MIDITRANSFORM_PROGRAM: + event.setType(ME_PROGRAM); + break; default: break; } @@ -366,6 +372,8 @@ int MidiInputTransformation::apply(MidiRecordEvent& event) const val = procVal1a; } break; + default: + break; } if (val < 0) val = 0; @@ -414,6 +422,28 @@ int MidiInputTransformation::apply(MidiRecordEvent& event) const val = procVal2a; } break; + case Toggle: + { + if(event.type() == ME_CONTROLLER) + { + int num = event.dataA(); + bool state = toggleState.ctrlState(num); + if(state) + { + state = false; + val = procVal2a; + } + else + { + state = true; + val = procVal2b; + } + toggleState.setCtrlState(num, state); + } + else + printf("toggle implemented only for controllers\n"); + } + break; case ScaleMap: case Keep: case Flip: @@ -469,6 +499,7 @@ int MidiInputTransformation::apply(MidiRecordEvent& event) const case ScaleMap: case Keep: case Flip: + case Toggle: break; } if (val < 0) @@ -521,6 +552,7 @@ int MidiInputTransformation::apply(MidiRecordEvent& event) const case ScaleMap: case Keep: case Flip: + case Toggle: break; } if (val < 0) @@ -578,6 +610,9 @@ bool MidiInputTransformation::typesMatch(MidiRecordEvent& e, int selType) const } } break; + case MIDITRANSFORM_PROGRAM: + matched = (t == ME_PROGRAM); + break; default: fprintf(stderr, "Error matching type in MidiTransformerDialog: unknown eventtype!\n"); break; @@ -1116,6 +1151,7 @@ void MidiInputTransformDialog::procVal1OpSel(int val) case MusECore::Random: case MusECore::ScaleMap: case MusECore::Dynamic: + case MusECore::Toggle: procVal1a->setDecimals(0); procVal1a->setEnabled(true); procVal1b->setEnabled(true); @@ -1133,7 +1169,15 @@ void MidiInputTransformDialog::procVal2OpSel(int val) { MusECore::TransformOperator op = MusECore::TransformOperator(MusECore::procVal2Map[val]); cmt->procVal2 = op; + procVal2OpUpdate(op); + } +//--------------------------------------------------------- +// procVal2OpUpdate +//--------------------------------------------------------- + +void MidiInputTransformDialog::procVal2OpUpdate(MusECore::TransformOperator op) + { switch (op) { case MusECore::Keep: case MusECore::Invert: @@ -1156,6 +1200,7 @@ void MidiInputTransformDialog::procVal2OpSel(int val) break; case MusECore::Random: case MusECore::Dynamic: + case MusECore::Toggle: procVal2a->setDecimals(0); procVal2a->setEnabled(true); procVal2b->setEnabled(true); @@ -1192,7 +1237,7 @@ void MidiInputTransformDialog::funcOpSel(int val) if (isFuncOp) { procEventOpSel(cmt->procEvent); procVal1OpSel(cmt->procVal1); - procVal2OpSel(cmt->procVal2); + procVal2OpUpdate(cmt->procVal2); procPortOpSel(cmt->procPort); procChannelOpSel(cmt->procChannel); } @@ -1507,6 +1552,7 @@ void MidiInputTransformDialog::procPortOpSel(int val) case MusECore::Random: case MusECore::ScaleMap: case MusECore::Dynamic: + case MusECore::Toggle: procPortVala->setDecimals(0); procPortVala->setEnabled(true); procPortValb->setEnabled(true); @@ -1563,6 +1609,7 @@ void MidiInputTransformDialog::procChannelOpSel(int val) case MusECore::Random: case MusECore::ScaleMap: case MusECore::Dynamic: + case MusECore::Toggle: procChannelVala->setDecimals(0); procChannelVala->setEnabled(true); procChannelValb->setEnabled(true); diff --git a/muse2/muse/mplugins/midiitransform.h b/muse2/muse/mplugins/midiitransform.h index 30dabd13..b183bc53 100644 --- a/muse2/muse/mplugins/midiitransform.h +++ b/muse2/muse/mplugins/midiitransform.h @@ -84,6 +84,7 @@ class MidiInputTransformDialog : public QDialog, public Ui::MidiInputTransformDi void procEventTypeSel(int); void procVal1OpSel(int); void procVal2OpSel(int); + void procVal2OpUpdate(MusECore::TransformOperator op); void funcOpSel(int); void presetChanged(QListWidgetItem*); void nameChanged(const QString&); diff --git a/muse2/muse/widgets/aboutbox.ui b/muse2/muse/widgets/aboutbox.ui index bf14e099..29497422 100644 --- a/muse2/muse/widgets/aboutbox.ui +++ b/muse2/muse/widgets/aboutbox.ui @@ -58,7 +58,7 @@ <item> <widget class="QLabel" name="textLabel1"> <property name="text"> - <string>(C) Copyright 1999-2012 Werner Schweer and others. + <string>(C) Copyright 1999-2013 Werner Schweer and others. See http://www.muse-sequencer.org for new versions and more information. diff --git a/muse2/muse/widgets/aboutbox_impl.cpp b/muse2/muse/widgets/aboutbox_impl.cpp index b53e246f..fcb96a1d 100644 --- a/muse2/muse/widgets/aboutbox_impl.cpp +++ b/muse2/muse/widgets/aboutbox_impl.cpp @@ -31,8 +31,8 @@ AboutBoxImpl::AboutBoxImpl() setupUi(this); imageLabel->setPixmap(*aboutMuseImage); QString version(VERSION); - QString svnrevision(SVNVERSION); - versionLabel->setText("Version: " + version + " (svn revision: "+ svnrevision +")"); + QString gitstring(GITSTRING); + versionLabel->setText("Version: " + version + (gitstring == QString() ? "" : "\n("+ gitstring + ")")); } } diff --git a/muse2/muse/widgets/itransformbase.ui b/muse2/muse/widgets/itransformbase.ui index 52c29a7e..882f383f 100644 --- a/muse2/muse/widgets/itransformbase.ui +++ b/muse2/muse/widgets/itransformbase.ui @@ -94,6 +94,11 @@ <string>RPN</string> </property> </item> + <item> + <property name="text"> + <string>Program</string> + </property> + </item> </widget> </item> <item row="0" column="2"> @@ -432,6 +437,11 @@ <string>RPN</string> </property> </item> + <item> + <property name="text"> + <string>Program</string> + </property> + </item> </widget> </item> <item row="1" column="1"> @@ -615,6 +625,11 @@ <string>Random</string> </property> </item> + <item> + <property name="text"> + <string>Toggle</string> + </property> + </item> </widget> </item> <item row="1" column="4"> diff --git a/muse2/share/scripts/RemoveDoubles b/muse2/share/scripts/RemoveDoubles new file mode 100755 index 00000000..df455922 --- /dev/null +++ b/muse2/share/scripts/RemoveDoubles @@ -0,0 +1,52 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# MusE external midi processing script +# By: Robert Jonsson (c) 2013 +# RemoveDoubles +#============================================================================= +# MusE +# Linux Music Editor +# $Id:$ +# +# Copyright (C) 2002-2013 by Werner Schweer and others +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +#============================================================================= + +import sys,time +testFile = file(sys.argv[1],"r") +inputEvents = testFile.readlines() +testFile.close() + +outputEvents=[] +#loop through events and omitt doubles +for line in inputEvents: + if line.startswith('NOTE'): + tag,tick,pitch,length,velocity = line.split(' ') + found=False + for outline in outputEvents: + outtag,outtick,outpitch,outlength,outvelocity = outline.split(' ') + if tick == outtick and pitch == outpitch and outvelocity == outvelocity: + found=True + break + if not found: + newline = tag + " " + str(int(tick)) + " " + pitch + " " + length + " " + velocity + outputEvents.append(newline) + +testFile = file(sys.argv[1],"w") +testFile.writelines(outputEvents) +testFile.close() + |