NoteEdit - a music score editor
* MusicXML import/export of arbitrary text is now supported. R272
* Transposition now dependent on key signature, thanks to Csaba. R286
* MusicXML import filter now places special barlines where it should. R292, R298, R323
* MusicXML export filter now exports hidden rests like it should. R292
* The last zoom factor gets set the next time you run NoteEdit. When a new file format arrives, each document should contain its own last zoom and position state. However, the default one (if no files loaded) should always be the last one used. R293
* Verse expression is replaced by Stanza in Lyrics dialog. Translations updated as well. R294
* Syntax characters < and > for multiple-sillables per single note aren't rendered on the screen anymore. R295
* Prevent NoteEdit from crashing when calling New document when playing. R297
* MusicXML import - fill with hidden rests in second staff as well. R299
* Selection button and note buttons splitted. First step towards separate Insert/Edit/Selection modes. R300, R306
* Don't select the next element when using Backspace to delete and the beginning of the score is reached. R301
* New keyboard binding ESC - leaves current mode. Changed many keyboard bindings:
- End -> E: Edit mode
- Alt-Right, Alt-Left -> Home, End: Move at the beginning of the document, move at the end of document
- Insert -> SHIFT+Return: Insert rest
- CTRL+Backspace -> CTRL+Delete: Delete a note in chord
- E -> SHIFT+E: Pitch E
* Page layout editor no longer removes brace if placing a bracket around it. You're also no longer able to place a bracket on a single staff. R303
* Updated bracket/brace layout and fixed some spacings. A new measureline connecting all the staffs at the beginning is now present. R304
* Added CTRL+number_key bindings for selecting a voice number. If a key is hitted the second time, voice A is selected. Changed Key_QuoteLeft with Key_Apostrophe for placing a tie. R305
* Added red border around the notePart when in Edit mode. R307
* R306, R308-R311, R347 - Edit mode interface enhancments:
- Grace notes are now correctly chosen in Edit mode.
- Some code moved and optimized when updating elements in Edit mode.
- stateButtonChange(int state, int state2) -> updateInterface(int state, int state2, int length).
- slots for grace note buttons changed from setToTN8() -> setToGN8() and similar. Probably T was from "tiny", but musicians use an expression grace note for these kind of notes, so G.
- selectButton_ -> selectbutton_,
- setToSelect() -> setSelectMode(),
- some refresh stuff when switching between edit mode and select mode in various ways.
* Hidden rest button now acts like others when in Edit mode and similar. But there's a major conflict between STAT_HIDDEN and STAT_CROSS. Problem is that 32 bits for status were already taken and there's no spare one for STAT_HIDDEN. I'll try to declare status_ to be 64 bit (long), so we'll have enough space for the future. An issue for the next commit. R312
* R313, R320, R333:
- NMusElement::status_ is now unsigned 64bit integer. This way, hidden rests can have their unique flag and we have plenty of space for other flags in the future. NMusElement::status2_ is still unsigned int.
- status and status2 variables changed to status_type and unsigned throughout the code
- some internal renaming like state -> status, where state was the supposed 64bit integer
- introduction of new type status_type, which represents the 64bit integer type for status:
#define status_type unsigned long long
Problem with long long type is that only g++ knows it. If we're going to port it to another compiler, something like this should be correct:
#define status_type __uint64
#elif defined (G++)
#define status_type unsigned long long
- changed necessary int and/or char kind; in keysignature operations to status_type kind;
- whenever doing anything with STAT_* from now on (any comparison, bitmask operations and similar), always use status_type for operating type! int and other smaller types are not usable anymore!
- int length_before_edit_ was introduced, because status_before_edit_ isn't appropriate anymore, to contain the length of the last selected note as well.
- removed note_dymmy_ as it's not needed anymore IMO
* R325 - LilyPond export filter enhancments:
- LilyPond export filter successfully tested with version 2.6.3 and 2.4.5
- Ritardando and Accellerando now printed in italic and below the staff by default
- Arbitrary text is not printed in bold anymore, because it's too aggressive. It's only \large and it's for the whole text (not just the first word).
- noteedit -> NoteEdit
- if Lily26 is found, utf8 encoding is set by default
- score property "last author" is exported as arranger
- instead of a layout block we do a paper block: composer is properly aligned with music
* Slur direction is now dependent on voice stem direction + voice stem
policy. For eg. slurs for voices in poliphony music (2 voices, 1st has stems up, 2nd has stems down) are at the same side as stems, whereas for single voice staff without poliphony, slurs are at the opposite side. Also, every note (class NChord) has a new private NVoice *voice_ variable which defines which voice does this note/chord belong to. R333, R334
* Implemented standard paper sizes (a6, a5, a4, a3, letter, tabloid, legal) in Lilypond export filter and updated export dialog. R336
* Many aestetic bugs fixed (not unified capital letters, nicer expressions) in UI. Updated Slovenian translation. R348,R350
* Fixed bug #4437 - NoteEdit crashes in auto scroll when playing:
Fixed crash when turning the page and try to show the current clef.
If the clef wasn't placed at all, NoteEdit crashed. Thanks to
bensonkao for hunting it down and the idea how to fix it. R349
* Implemented new method NVoice::selectNearestMidiEvent(int midiTime, bool fromRight = false). It selects the nearest musElement to the given MIDI time. This is useful for eg. When you delete a block of notes and want to use left&right, so the cycling methods are able to find their track now. Also, int main_props_str.lastMidiTime stores the last MIDI times that something happened. Currently, it gets remembered when a note gets deselected with mouse click (when you click on empty space in select mode), when you delete an element (using both backspace or del) or when you delete the whole note block. R351
* Added CTRL+G shortcut for Goto measure. Some other similar strings tidied up. Updated translations. R357
* R370 -- merged branches/code_cleanup 353:369
* R371 -- Patch #627: Update Qt Collection Class names and #include's, from Henri Manson.
* R372 -- FIXED: When cycling through elements, new element doesn't inherit any properties from the old one, because of the buttons feedback! The interface is now first cleaned (all the properties buttons are set to off) and then set to new.
* R373 -- Bug #4444: Noteedit crashes when import from double-byte MIDI filename
* R374 -- Fix PMX-export of notes in the bass-clef
* R375, R376: Proof-read some strings in export and configure dialog:
- MIDI information line -> Additional MIDI parameters
- Letter -> US Letter, Legal -> US Legal
- Program executable commands like "gv" or "abcm2ps" in new printing code moved outside of i18n() function.
- Rewritten some copy&pasting warning dialogs.
- Synchronized translations for the new printing strings.
- Updated Slovenian translation.
* R377 -- Rewrite of the copy&paste beam and tuplet manipulation code:
- FIXED: An old bug, when NoteEdit crashed when copying beamed notes under the tuplet.
- FIXED: Tuplets and/or beams are now correctly broken when non-complete tuplet and/or beam is copied.
- ADDED: Assign beam properties to the cloned notes as well.
- REMOVED: NChord::resetBeamFlag(), duplicate of NChord::resetBeamFlags()
* R379 -- Export forms redesign
- Added structures containing export parameters for every export format.
- Added methods for reading / writing these parameters using uiconnect / exportFrm (saveparametersfrm).
- The single exports classes make use of these functions and thus add a level of encapsulation.
- Modified printing (preview) correspondingly and much simplified the PrintingDialogPage.
* R380 -- fixed ambiguous argument cast of fabs in miditimescale.cpp
* R381 -- changed mouse wheel behaviour.
- Zoom in/out using CONTROL key modifier
- Fast scroll (10 times faster than ordinary) using ALT key modifier
- Vertical scroll using SHIFT key modifier.
- Renamed processWeelEvent() -> processWheelEvent().
* R382 -- User interface & viewport cleanups:
- For computing the lastYHeight_ constant from the bottom most staff, a new method inline computeLastYHeight() was introduced, instead of writing the formula each time.
- Zoom in/out keeps the top-left corner coordinate
- Added another bool parameter to xscroll() and yscroll() which tells, if the picture gets repainted as well or only the values are set. Needed because xscroll() is used to only set the values and later yscroll() repaints the picture.
- xscroll() and yscroll() functions declared as inline functions.
- Vertical scrollbar properly calculates the viewport height (it ended way below the last staff Y coordinate)
- Viewport position keeps the Y coordinate, when playing/stopping (it jumped to the top, when you stopped the playback before)
- New horizontal scroll behaviour when using Right/Left arrow keys for cycling through elements, when the elements are outside of viewport. Behaviour similar to today's modern text editors - it jumps to the position, where the element is located in the score and fits it to the right/left border of the viewport.
- Renamed xscrollFromWidget() -> xscroll()
- Pan the viewport up/down when cylcling through elements, if the element is above/below the current viewport.
* R383 -- When opening new window, set select mode by default.
* R384 -- FIXED: Release-critical MusicXML export bug when exporting notes in voice number > 2.
* R385 -- ADDED: Autobeam when inserting notes in non-first voices now works.
- selectNearestMidiEvent -> getNearestMidiEvent, as it doesn't make the element actual, but only gets its pointer.
* R386 -- ADDED: Arbitrary text is now saved/loaded in UTF8 format as well.
* R387 -- Printing restructuring part I
- Restructured printing by making Print object a class variable of mainframewidget.
- Added functionality of form creating to IntPrinter as QT does delete all it's object on exit leading to a crash when creating IntPrinter locally.
* R388 -- FIXED: Cycling through elements when one is deleted works correctly. getNearestMidiEvent() behaviour fixed.
* R389 -- ADDED: Paste also works only if a single element is selected (ie. no selection block).
* R390 -- Three new methods for print export, preview, print itself. Fixed some bugs and added lilypond support. The -o option does not seem to work on my system when adding a path.
* R391 -- FIXED: Export LilyPond alternative repeat markings correctly.
* R392 -- FIXED: Placed Clef and/or KeySig is now properly interpreted in non-first voices when the rhythm is different than in the first voice. Playback is still messed up. Removed some debugging stuff.
* R393 -- Scons project administration
- Added scons admin files. scons and automake generate grammar.hh instead grammar.h.
- Added main SConstruct file and SConscript for noteedit, kguitar_excerpt and doc (po is generated by SConstruct).
* R394 -- Printing restructuring part II
- Splitted printing from mainframewidget.cpp into a new class NPreviewPrint.
- Removed some code duplication.
- Added method doExport to uiconnect.cpp (exportFrm) for separation of export itself from startExport.
- filePrint(No)Preview initialize the exportFrm now.
* R397 -- Scons updates
- Add WITH_SCONS, WITH_FADE_IN, VERSION
- Use WITH_SCONS for checking if those "config.h" should be included
- Copy lyrics.ui.qt3 to lyrics.ui if it is missing
* R399 -- FIXED: Key shortcuts not working anymore on KDE3.5. Thanks to Adam.
* R400 -- FIXED: Compiler warnings for chord.cpp/h, chorddiagram.cpp/h, clef.cpp, midiexport.cpp/h, musixtex.cpp and musicxmlcommon.cpp/h.
* R401: small LilyPond export filter fix: Pianostaff (Grandstaff) accepts lyrics.
* R402: Insert clef dialog now supports:
- mouse wheel for scrolling
- double click to confirm the selection
- up/down keys to walk through elements
- return/escape keys to confirm/cancel the selection
TODO: Get rid of the stupid timer that calls refresh procedures and start using Qt's implemented solutions for that (needs probably some restructuring as well).
* R403: Fixed compiler warnings: lexik.ll, grammar.yy, lilyexport.cpp/h, chord.cpp/h, staff.cpp/h, mainframewidget.cpp/h, voice.cpp/h, resource.cpp/h.
* R405: ADDED:
- implemented Insert special barline dialog
- if an element is selected, barline is inserted right after it. Otherwise, only the selected barline becomes the current item being placed when you first click on the score.
- added menu option Insert->Special barline...
- added shortcut key SHIFT+Key_Tab for this
- Escape key now unselects the current active sign to be placed (e.g. barline)
- Home/End keys hit multiple times select the first/last element
- Home/End keys goes to the last X pos of the current staff
- some other minor fixes and additions
* R406: FIXED: Crash, when canceling the selection in special barline dialog.
* R407: FIXED: Shortcut keys for setting the pitch (C,D,E,F, etc.) changed from Key_C to SHIFT+Key_C (capitalized C) and so on for the others, so there's no collision with Key_E for Edit mode when in non-caps-locked mode.
* R410: Updated bksys files to new scons version 0.96.91
* R411: Scons: Replaced kde.py by kde3.py. Added a missing function for KDEprogram
* R413: unix scons files
* R414: osx scons files
* R415: win32 scons files
* R416: Scons: Added check for existing cache files
* R417: Updated scons minimum environment to 0.96.91
* R418: lowlevel scons file
* R423: Changed toolpath to scons_admin, bksys link no longer needed
* R421: Updated SConstruct file to new scons version
* R420: Simplified sconscript with new scons version
* R424: Added translation sconscript required by new scons/bksys version
* R426: Added printing icon ("fileprint") and preview icon ("frameprint")
* R434: FIXED: compilation warnings for lo48 and lo64 icons
* R435: Updated NEWS. Updated Slovenian and other translations.
* R439: Enable print support by default in configure
* R441: In lilypond export korrect syntax for alternatives in repeats
* R444: ADDED: Portuguese translation thanks to Denis A. Altoe Falqueto.
* R445: FIXED: Removed obsolete nscaleedit.h inclusion from a couple of .ui files, which caused problems during compilation on some systems.
* R446: Updated Slovenian and Italian translation.
* R447: Updated Documentation (Authors, Copyright, Dependencies)
* R448: Updated German translation.
* R450: Bugfix Preview Print: Don't delete preview files too early
* R451: FIXED: Lilypond instrument name is now exported in UTF8 encoding
* R452: FIXED: Author -> Composer, Last author -> Arranger, updated translations
* R453: Updated Spanish translation (part I)
* R454: FIXED: Removed HTML lyrics parsing. QTextEdit completely messed up NoteEdit's < and > keywords for syllabic singing.
* R455: FIXED: Duplicate env string in lilytest.cpp, so the path won't get truncated
* R456: ADDED: kpdf as preview program
* R457: CHANGED: Use KProcess:AllOutput on export instead of All
FIXED: Use Lilyponds PDF output for preview and print
FIXED: Use QProcess for preview as KProcess::NotifyOnExit is broken on my system
FIXED: Parent parameters for QProcess and KProcess in preview and export
* R458: FIXED: Two slots were wrongly assigned to their signals.
ADDED: New shortcut for breve.
* R459: ADDED: StaffGroup for staffs connected with barlines under bracket in LilyPond export code and ChoirStaff only for non-connected staffs under bracket.
* R460: FIXED: In LilyPond export stanza number moved to beginning of lyrics
* R461: FIXED: Crash, when you place a note in non-first voice and the first voice doesn't contain the key signature yet.
* R462: ADDED:
- Correctly export to LilyPond hyphens and melismas. To do this, every word which ends with '-' means that it's connected with another note with an ordinary hyphen (the word is not finished) and every word which ends with '_' means that it's connected with another note with melisma (the word is finished).
- Instrument name is now exported for multi-voice staff too.
* R463: ADDED: Some more LilyPond lyrics improvements.
* R464: FIXED: Updated example4.not - new hyphens and melismas implemented. Removed stanza numbers - they show up in Lily now out of the box.
* R465: FIXED: kpdf is now the default preview program.
* R466: Improved LilyPond export filter:
- Support for LilyPond 2.8.x. The exported syntax works out of the box.
- New drum note for rectangle note - diamond.
- Different drum notes can be present in a single chord now. LilyPond 2.8.x is needed for this, because we use \tweak function.
* R467: FIXED: Removed mixed ties warning in Lily export. LilyPond 2.4.x and on supports mixed ties perfectly.
* R468: ADDED: Ties and Slurs are now drawn with wide pen. This gives better readability of the score.
* R469: FIXED: Some UI polishments. Updated translations.
* R470: FIXED:
- Font size in Lily export works again.
- Added official font sizes from Lily documentation:
- 11.22 pt (pocket scores)
- 12.60 pt
- 14.14 pt
- 15.87 pt
- 17.82 pt (song books)
- 20 pt (standard parts)
- 22.45 pt
- 25.2 pt
* R471: FIXED: A typo in tips&trick - lines are placed using the left mouse button, not middle. Thanks to Takeshi Hamasaki for spotting this.
* R472: ADDED: previewprint::setupPrinting returns whether setup
was successfull or not and checks if preview is still running
FIXED: create preview process only if it wasn't created already
FIXED: print/preview: stop if preview is still running
FIXED: delete form_ in IntPrinter destructor (does not remove the dialogpage though -- might lead to crashes!)
* R473: ADDED: Japanese translation thanks to Takeshi Hamasaki.
* R474: FIXED:
- Tuplet doesn't disappear anymore, when pasting it after the non-musical element anymore.
- Crash when pasting a tuplet into an empty staff.
* R475: ADDED: Lines (cresc., trill, 8va) improvements:
- Double click in Insert line dialog selects the line and closes the dialog.
- Multiple line symbols per single chord now allowed.
- When in edit mode, the appropriate tab is now open and enabled according to which line the note has.
- Crescendo/Decrescendo's "Turn" checkbox is now refreshed correctly when selecting an element in edit mode.
- By default, if "Turn" flag is disabled, we place Decrescendo, if "Turn" flag is enabled, we place crescendo.
* R476: ADDED: Double click selects the key in Insert key dialog. Resized Insert lines dialog a bit to fit other languages too.
* R477: Updated docbook. Added Printing section.
* R479: Updated lilyexport for trills
* R480: FIXED: Syntax error in docbook.
* R481: ADDED: convert-ly process before calling lilypond
FIXED: two formats were missing for the custom export formats
FIXED: a more logical sequence for the export formats
* R482: FIXED: ABC music export fixes. Now, Latin1() is called to convert from the original NoteEdit's internal UTF8 encodings for all the strings there are. Also, remove any non-alpha characters from staff names and other basic elements that prevent abcm2ps to compile the score.
* R483: ADDED: Use UTF-8 encoding checkbox in ABC music export dialog.
* R486: FIXED: de.po
* R488: UPDATED: de.po
* R489: UPDATED: german documentation with translated parts from the english documentation.
* R491: UPDATED: japanese translation update by Takeshi Hamasaki
* R493: UPDATED: translation for brazilian portuguese by Denis Alessandro Altoe Falqueto
* R494: dito
* R495: UPDATED: de.po