Musical Nexus Editor

The official MML composition editor for Musical Nexus.

Latest

v0.5.0

Views

1,778

Downloads

1,184

Musical Nexus Editor is our replacement for 3MLE, and while 3MLE has served the community well the source code was never available to us. The most we could do is keep the soundfonts updated, but we could not add new tools or any real changes to the program. We have developed our own MML editor from scratch using C# / .NET 10 and have based some of the tools and ideas of Musical Nexus Editor of those from 3MLE and also Mabiicco. Currently we fully support Mabinogi and MapleStory 2 composing. In the future on our short list we are adding support for Black Desert and FFXIV.

Some of the features:

  • Better import midi control and auto-drum mapping.

  • Support for 32 individual parts.

  • Support for instant rendering to WAV or MP3 audio.

  • Support for exporting to the editors format [MNE], but also MML, MMI, MusicXML, and MID.

Some of the tools:

  • Bulk Transpose Tool

  • Bulk Key Change Tool

  • Time Signature Marker changes.

  • A lot of velocity (Volume) tools.

v0.5.0

Download
  • Replace MeltySynth with SpessaSynth and match our customizations we did for the website so we can produce accurate audio renders in MNE.
  • On first run add a new inertia step that lets the user know we have to download some additional library files to accurately render offline to WAV, MP3 and OPUS. This is a one time install, and is installed locally to the app data folder.
    • We also show the source URL link it's coming from, as well as the path were installing it to.
    • Users can hit cancel to back out and use the native DLS Direct WAV output instead if they want.
  • Add some opt-in flags for the CLI engine since we can't show modal popups like we can in the editor.
  • Additional Libraries that now download upon first offline render run request:
    • Bundled NodeJS (35 MB) [From Official NodeJS Website]
    • Our customized Mabinogi soundfont for the web. (41 MB) [From our Website CDN]
  • MapleStory 2 mode updated to use this new audio render engine as well.
  • Note: Just like before, we can render to WAV without additional libraries, but rendering to MP3 or OPUS direct requires the user to set up their FFMPEG path still as we can not bundle this, or allow direct download set up due to their licensing restrictions.

v0.4.9

Download
  • Fix an issue where the Jabchiel tool was sometimes failing to properly transfer the tempo or tempo changes to the later lanes.
  • Fix an issue where note flattening was destroying echoing effects early.
    • If echo overlaps are detected, and were not at 32 instruments parts we will unflatted just that instrument during playback so we keep the full note effects.

v0.4.8

Download
  • Fix a bug in our midi generator that was not using port assignement past 15 melodic parts to allow the use of 32 parts correctly.
    • This fix also applies to our website Cli
      • [This also fixes submissions over 15 parts like FFXIV Endwalker where Part 16 was heard for Part 1]

v0.4.7

Download
  • Refactor the audio renderer to be engine agnostic and then add it to the CLI function for the website.
  • Additionally add OPUS audio rendering support.
  • Add missing fixes we made for the website soundfont, to our engine soundfont to fix audio rendering problems.
    • Add missing DMOD/IMOD-style overrides from the DLS.
    • Add the custom concave curve to the soundfont pack.
    • Increase and stabalize the quality of the mp3 files they were outputting at a lower bitrate on accident.
  • Add a direct COM/WASAPI Interop recording path with Windows API to record the raw DLS output directly to WAV. This is similar to how 3MLE's WAV export works and will give the most accurate, and direct rendition but it does require "listening" to the recording playback as it outputs.
  • NOTE The offline render playback has been improved, but its still not 100% perfect like the new Direct WAV (DLS-Raw) path added in the render output menu. If the current mp3/opus output is not good enough, please use the raw output render option until further improvements can be made.

v0.4.6

Download
  • Loosen hard restriction on multiple fantastic chorus in a jam party for songs that promote custom start timings.
    • Flatten all chorus parts (by female or male voice type) into the same track when near maximum to save space.
  • Fix a program id reference mismatch for Harp on the Website CLI.
  • Add additional warning and diagnostic messages for the CLI analyzer for use on displaying on the website to users.
  • Add ability to re-arrange the parts sidebar.. just click and hold to drag it to another part.
  • Add a gear icon next to the trash can icon on the parts sidebar.
    • Allow setting a custom name for each part on the sidebar.
    • Allow setting a custom color for each part on the sidebar.
  • Setting a customer color also updates the track notes and velocity bar.
  • Persist this data to a saved .MNE project file, this does not save or track in other file types.

v0.4.5

Download
  • Some changes / fixes relating to cli output for website rank compute and mml block formatting.
  • Some of these calculation fixes also went into the visual part of the editor as well namely around code box counters.
  • Fix a bug regarding Velocity being flattened into CC7 and the code box tracks overwriting each other. Move Velocity to note events only and not the shared CC7 channel when exporting to midi.
  • Fix default parts sidebar width not respecting the minimum to show the trash can (remove part button)..
  • Fix the Midi import modal window not giving enough height to the tracks area and the other parts of the window stealing its height.
  • Fix Import Midi mode for MapleStory2 swapping back to Mabinogi and importing there instead.
  • Do not auto-check octave -1 when piano is detected in other modes other than Mabinogi mode.
  • Further Midi Import Window Improvements
    • Increase line height space per source track to make it more readable..
    • Add horizontal scrolling so we stop cutting off columns text trying to fit them.
    • Add minimum column width as well.
    • Add a column that shows the GM Definition Instrument NAME not just Program ID.
    • Add a Instrument Set override field that lets you pre-set the instrument to something on import instead of just the GM Program #.
  • Restore / Fix live playback instrument changing so you don't have to pause and hit play again to hear the new instrument during preview.
  • Improve playhead performance while preview is running so mouse over events are less expensive and interefere less with the ms of the playhead.
    • Still need to do more here really, but this improves it from what it was.

v0.4.4

Download
  • Add Export to MusicXML support by using the MML parsing engine to convert to standard MusicXML format for use in other musical notation software or playback tools. Since not all musical notation is available, we just do the best we can. This will be more useful for raw MIDI edit mode or full MML editor mode in the future.
    • Add to CLI as well so the website can utilize it to display sheet music versions.

v0.4.3

Download
  • Fix Taiko Drum being mapped to the wrong program ID.
  • Add enhanced instrument definition mapping for MS2 to improve engine versus wpf sync.

v0.4.2

Download
  • Add a mode aware undo / redo system
    • Added undo / redo arrows in the global toolbar
    • Also supports standard hotkeys: Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z
    • Added these as hotkey configs in the shortcuts preferences window
    • Added an option in preferences to set a higher undo / redo log. (Up to 200, default is 20)
  • Added some additional guard rails and hardening code around shortcut setting and changing
  • Added MapleStory 2 Mode Option
    • Auto-Downloads the MS2 dls bank upon first load.
    • Separate engine, cli and rendering paths from Mabinogi Mode.
    • Code boxes updated to 10 for MS2 Mode, In this mode allow the code boxes to split into 2 rows of 5, instead of 10 in a row.
    • Instrument List updated for MS2 Mode.
    • New CLI options added + Editor import / export options for MS2MML files, also multi-MML import support for MS2 Songs.
    • Add support for the "p" symbol in MML code for this mode.
  • Added additional guard rails to the Jabchiel tool
    • Tied note chains like note & note & note are now treated as an indivisible split unit, so the splitter will not insert a scroll boundary/prefix inside the tie chain.
    • Added a validation pass per lane after splitting. It parses the original lane and the generated scroll sequence, then warns if total ticks, note count, note tick, duration, pitch, or velocity changed.
    • If a tied group is too large to fit after continuation state is added, it now warns instead of silently splitting in a risky place.

v0.4.1

Download
  • Add Jabchiel MML@ export support on the parts toolbar.
    • The button shows up per part on the parts toolbar
    • Opens a modal showing how many it has split into, and the rank / count of each.
    • Tries to safely split based on tick token, also reinserts tempo and other symbols at the start of the new scroll.
  • Add Jabchiel data output support to the CLI so the server can process it for the website.

v0.4.0

Download
  • Fix a bug related to Mabi percussion instruments where the midi export was forcing GM Bank compatibility mode and stripping their program id and forcing them on to the midi standard percussion channel, which was breaking our new website playback tool.
    • NOTE: This is mainly for the CLI engine. In full editor mode we give you a dialogue to convert the drum kit to a native Midi GM Bank Drum kit if wanted or you can leave it as Mabi's custom program id patch.

v0.3.9

Download
  • Fix another regression in the writer that was breaking on custom line breaks and then skipping ahead.

v0.3.8

Download
  • Fixed a bug that somehow snuck into the .MNE project file formatter in which it was using ; to delimit the MML@ block data instead of , (what the heck) and Codex decided it would just work around this by fixing it in the MML@ clipboard export and other areas but leave it broken in the file writer. Thanks to Claude for finding this weird quirk when I was trying to find out why parsing through the website queue was blowing up on manual MML@ processing through a .MNE wrapper.
    • A workaround has been put in for .MNE project files with the ; delimiter to update to the , delimiter on its next save automatically.
  • Made the Impossible Rank (to many characters) more explicit by actually showing either IMP or Impossible, instead of just a "-". (This was also needed for easier website parsing, more explicit).

v0.3.7

Download
  • Move additional functions from WPF core to the new cross-platform engine core for CLI usage.

v0.3.6

Download
  • Internal App / Engine Module updates to support a CLI version of the program for website/server use.

v0.3.5

Download
  • Add Discord Rich Prescence support, you can turn it off specific options (or the whole thing) in the preferences menu.
  • Fix an issue (Hopefully) with Bulk Transpose and Bulk Key Change ignoring the parts selected and preferring the selected part in the UI.
  • Fix reported issue where the piano roll visualizer divider line was 1 note higher than it should have been.

v0.3.4

Download
  • Add a Bulk Transpose Tool that lets you select parts and move them up/down by the amount you type in.
  • Add a Per Part Transpose Tool that lets you transpost specific tracks within a part in the same way as above.
  • NOTE: Transpose uses a safety first method to re-write the MML text so it does some-what bloat the MML Text when used. But using one of the optimizers will bring it back down to normal levels when you are ready. It does do a light clean-up pass on itself after but it will still have more MML Text than there was until its optimized again.
  • Add a Bulk Key Change tool that guesses what keys the current parts are in, and then lets you choose a Key to re-arrange the part to.

v0.3.3

Download
  • Move back to expected optimization path, strip comments (and dont crash on them).

v0.3.2

Download
  • Fix the optimizer exploding when it came across comments.. Properly handle comments now in multiple situations, add crash guard rails.
  • Move the code highlighter from a separate tick dispatch to the timer-driven playback ticket to try to fix the highlighter.

v0.3.1

Download
  • Fix the "What's New" versions history list showing in reverse order.
  • Fix an issue where the grab handle did not compute properly and the bars could get stuck at v9 instead of v15 in the Velocity tools.

v0.3.0

Download
  • Additional fixes to the whats new versioning column as the history manifest was missing (whoops).
  • Replace the chonky light theme scroll bars with a custom dark theme implementation and make it thinner.
  • Fix a bug from the 3MLE parser that does not allow you to go down an octave from 1 using <
    • < now allows 1 -> 0
    • direct o handling is also explicitly normalized to 0..8
  • Add a new velocity panel that can be unhidden to visually see (and edit) the note velocity bar lines.
  • Add a new "Velocity Tools" button to the global tool bar that lets you reveal/hide the related velocity panel and tools.
  • Add a new additional dropdown that appears when setting piano roll to "Part View" to drill down further into "Track View"
  • Pinning the piano roll to an individual track within a part will also update the velocity bar panel and event list panel to match.
  • Added a guide line that appears when hovering over the velocity bar that draws to its matching note.
  • Add a checkbox to "Show velocity on notes" NOTE: Minimum zoom in distance required on piano roll to show successfully.
  • In the velocity lane panel add a new compare drop down to show a faded/onion version of the other tracks in the part behind the selection.
  • Add several new tools to the Velocity Lane panel which can manipulate velocity bars with click + drag to select, or ctrl+click.
    • Select Tool - Click and Drag to multi-select veclocity bars in the velocity lane panel.
    • Level Tool - Takes the selected velocity bars and lets you drag them all to the same level.
    • Ramp Tool - Lets you grab the left or right circle handle and raise or lower each side to create a perfect volume ramp.
    • Scale Tool - Lets you select a group of velocity bars and move them all up individually from their starting volume.
  • Add two new "Bulk" tools as opposed to the above which are more drill-in tools.
    • Bulk Level Tool - Same as above but for the entire part or track at once.
    • Bulk Scale Tool - Same as above but for the entire part or track at once.

v0.2.9

Download
  • Startup Fixes to window sizing, also taking into account workspace area and DPI Scaling.
    • if the screen/work area is large enough, it keeps the normal size
    • if the screen is smaller, it clamps the startup size down
    • if a saved or computed position would leave the window unreachable, it clamps the position so the title bar stays visible
    • first run now centers within the current work area instead of risking an off-screen start
  • Fix an issue where the updater window would appear, and then the what's new window would steal focus after causing layer confusion.
  • Add a new column to the Whats New version window to allow you to read previous version notes as well in case your skipping a few.

v0.2.8

Download
  • By default make the Time Sig tool snap to the nearest perfect measure tick start.
  • Allow unchecking the snap option box to place the signature tool on any tick, anywhere.
  • Add a second small visual row in the piano roll header so the time signature markers and measure numbers dont collide.
  • Add the ability to click on the measure number row in the event list to jump the cursor there.

v0.2.7

Download
  • Fix the piano roll’s time-signature segment drawing one extra beat/measure line past its own end so the outgoing grid leaked into the next signature section and made a visually short-column look after the marker.

v0.2.6

Download
  • Fix speaker glyph not swapping between mute/unmute icons.
  • Add a time sig tool button to the toolbar, double-click to set down a cursor then click time sig button to set a new time signature.
  • Visually the marker cusor will appear on the piano roll. Green in general, gold for highlighted/selected.
  • Visually a green highlight will appear for Time Signature changes on the event list panel row where it occurs.
  • You can set multiple time signature cursor points.
  • To remove just click on an existing one and hit DEL key on keyboard.
  • We will now import/export these signature markers from MIDI files as well.
  • Update the midi importer window to show how many time signature changes were detected.

v0.2.5

Download
  • Fix buttons not inheriting the dark theme style in the MP3 Export FFMPEG information window.
  • Fix button hover color still getting chrome WPF colors instead of dark mode colors on almost all modal windows.
  • Add some basic iconography for the mute/unmute/solo buttons on the parts toolbar, and mixer panel.

v0.2.4

Download
  • Fix an additional issue with the startup update checker.
  • Fix the cut/copy/paste menu not inheriting the dark theme.

v0.2.3

Download
  • Add trash can icon to be able to delete a part from the parts sidebar.
  • Fix an issue with the channel planner that was using the old 15 part method instead of the 32 part manager.
  • Fix an issue where we were not correctly flattening parts to ports to allow 30 part playback (+2 reserved for percussion).

v0.2.2

Download
  • Add horizontal scroll bar to the bottom of the piano roll visualizer.
  • Make the parts sidebar update the instrument name right away visually instead of waiting for a tab refresh or switch.
  • Make the play button also double as a pause button like in 3MLE.
  • Add the Tempo row highlighter in the Event List panel like 3MLE has.
  • Reduce default column width of some columns in th event list to try to fit vel/value better at default panel width.
  • Update the About modal to include information about some of the additional packages we use such as NAudio, MeltySynth, etc.

v0.2.1

Download
  • Rework Volume & Velocity as it was mixing up / or combining Channel Velocity with MML Velocity.
  • Also add in missing per instrument DLS attenuation data which was not being used for sound data.
  • Thanks to Mabiicco, we were able to borrow their special percussion velocity curve for the standalone instruments.
  • Live playback now uses part volume/pan for CC7/CC10.
  • Bypass MeltySynths SF2 Attenuation Generator and use the same data as our DLS attenuation scaffold to get a closer render sound.
  • Completely re-work the event tick list panel (again) to resolve an issue where it was poisioning the entire ui cache in multiple ways.
  • Fix a secondary bug where if you disabled the event panel and re-opened it would still have a panel slot for it.

v0.2.0

Download
  • Fix cursor tracker not properly resettings its state at the natural end of song playback to head or manual cursor position.
  • Fix regression in performance related to the previous change note.
  • Fix edge case where sometimes hitting "stop" at certain points can cause bad UI states in the background.

v0.1.9

Download
  • Fix an issue with n notes being visually processed as raw midi instead of MML n notes..
  • Change the virtualization and data table type of the event tick list to reduce its oppertunity to cache bust the main ui thread.
  • Remove WPF tooltips from the event tick list and replace with custom ones due to them also poisoning the cache..

v0.1.8

Download
  • Fix not being able to play from a specific point on the piano roll when setting down the cursor head and clicking play.
  • Resolve issue with playback in code box 10, or part 4 melody box somehow getting assigned to the percussion channel in the dual channel manager.

v0.1.7

Download
  • Fix the "check for updates on startup" not always checking on startup
  • When opening a .MNE file check for its Mode and then auto-open into that mode
  • Allow dragging and dropping a .MNE project file on to the app window to open it
  • Add the missing pause button + Pause/Continuation related guard rails and tick code.
  • Redo the entire preferences window to be Mode aware. Refactor into sidebar + top bar tabs
  • Make Mode rail auto adapt to new modes
  • Change shape of preference / save system from flat to app and mode specific separation
  • Completely redo the .DLS loading system to support multi-dls loading for the Mabinogi Client
  • Add DLS mode selection so users on first run can choose the Musical Nexus combined .dls download, or point to their client
  • Incorporate the Instrument Definition override file from Mabiicco and incorporate it into our Mode/DLS Loading system
  • Also update the Musical Nexus Combos DLS with missing translations for KR voice Selectors
  • Move the KR Voice Selectors into our song box selector and out of the main drop down like chorus and NA Voice
  • Add the missing rank calculation indicator to the parts sidebar, and the parts toolbar
  • Auto-Swap song rank based on the song box being included or not. (Defaults to off in MNE)
  • Adopt the optimization pipeline from both 3MLE and Mabiiocco's Level 1, 2, 3 options.
  • Add MIDI Importing modal information window with options on text splitting, and other passes. Show Tuplet Data.
  • If Drum Track detected auto-open the drum mapping window after importing tracks.
  • If Tuplet Data was modified, highlight it in the piano roll and link it to the per-part issue sidebar.
  • Auto-Open the issues sidebar per-part if issues or suggestions are detected.
  • Show the issue badge on the parts sidebar as well instead of only buried within the part.
  • Bundle Material Font Kit from Google to have consistent cross platform icons for future potential builds on Mac or Linux.
  • Redo the play control bar into icons from the icon kit, and add the missing skip forward / go backward / go to head icons.
  • Implement proper skip ahead or rewind by measure as well as back to head like 3MLE and Mabiicco.
  • Add a full audio mixer panel at the top of the parts sidebar to allow quick muting/unmuting/solo moding parts globally.
  • Rewrite part of the playback channel to allow live mute and unmute of parts channels without having to pause/unpause the playback.
  • Add the sub-tooling and code required for a reusable MIDI export interface between modes.
  • Add mode aware MIDI Export Dialogue that shows mapping and options specific to it, while using the app wide export code underneath.
  • Add midi export mode for Mabinogi with specific Mabi to GM Bank mapping options as well as other export configurators.
  • Add a reverse Mabinogi percussion / drum kit mapping to GM Bank mapping workflow when exporting MIDI in Mabinogi Mode.
  • Remove (now not needed) tooltip path that was poisoning / cache busting the WPF and causing massive part switch lag.
  • Remove a hot path to lazy path loading for the mini-keyboard player to stop trying to re-track every tick.
  • Remove issue with massive fast forwarding a song causing a massive UI Sync build up for tick and tempo and change to coalesce.
  • Change Mix panel to faux floating form since the actual one was causing cache poison for part switching. (Why is WPF weird with this)
  • Add a .dls to .sf2 conversion pipeline cache for use with MeltySynth and audio rendering APIs.
  • Add a new tab in Mabinogi Mode preferences window for .sf2 cache management next to the playback tab.
  • Embed the light-weight open source project "MeltySynth" for better audio rendering control on export with NAudio.
  • Add WAV Audio Export via the local .sf2 cache and using MeltySynth for instant WAV rendering without requiring playback.
  • Add MP3 Audio Export if FFMPEG is already on the operating system path.
  • If FFMPEG is not detected, give instructions on how to download and enable it. [Can not embed due to legal licensing]
  • Add custom built tooltip render instead of using WPF Tooltip due to it cache busting and breaking performance.
  • Employ custom tooltips on note hover on Piano Roll visualizer to bring over 3MLE functionality.

v0.1.6

Download
  • Add Discord Webhook Update Notification after successful CI Build.
  • Update manual "check for update" flow to include next versions release notes.

v0.1.5

Download
  • Fix the about modal cutting off buttons.
  • Fix the release notes window not rendering markdown.
  • Fix some of the buttons not using the dark theme correctly.
  • Fix the auto-updater check option in user preferences to actually check things..

v0.1.4

Download
  • Try a new approach to the release notes updater

v0.1.3

Download
  • Additional signed updates fixing

v0.1.2

Download
  • Even more .MNE file association fixes
  • Even more auto update checker fixes

v0.1.1

Download
  • Fix file association during instal for .MNE files
  • Fix Update Checker getting stuck forever

v0.1.0

Download
  • Initial private release pipeline for Musical Nexus Editor
  • Installer-based distribution via Inno Setup
  • Update feed scaffolding with Cloudflare
  • Native .mne project format, legacy 3MLE .mml, and MabiIcco .mmi support