Skip to content

Windows Custom Version 12

Choose a tag to compare

@Estwald Estwald released this 09 Feb 14:31
· 23 commits to master since this release

will be updated with more information

Midieditor CUSTOM is my personal version for Windows of the program created by Markus Schwenk called Midieditor, adding Fluidsynth support, VST plugins and other improvements.

Donations

Without a doubt, there is a lot of work behind Midieditor Custom. Right now, I feel exhausted after the long and hard work I have had to do for this Custom 11 that has numerous changes. But this development has not been made with money or similar compensation in mind.

I simply like programming as a hobbyist and it would be a waste not to share it ;). If you like this program, enjoy it and that will make my work worthwhile :)

And if you don't like this program, it's not a problem either: I find it useful and fun :D

About the CUSTOM11:

The original version of Midieditor only had support for one input and one output device. Due to this, the Custom Version worked without channel differentiation between tracks.

The MIDI standard supports a maximum of 16 channels, with channel 9 (in the case of the MIDI editor that identifies them from 0 to 15) dedicated to drum. This allows a maximum of 16 instruments to play simultaneously. The channels allow changing instruments and even choosing the instrument bank in real time.

Additionally, an indefinite number of tracks are supported. These tracks can separate events to different instruments, when there is only one Midi output device (for example, channel 0 would be the same on all tracks and therefore we run the risk of overlapping events if we are not careful), but also we can send the events of each track to a different Midi output device.

At the same time, Fluidsynth supports a maximum of 256 channels. It also allows you to define the channel as 'MELODIC' or 'DRUM'. Because Fluidsynth is used as a virtual Midi output device, it seems and we are limited to 16 channels per track, it is optimal to be able to dedicate channels 0 to 15 as one device and channels 16 to 31 as another device, etc. .

For internal design reasons and because we can use up to 2 VST plugins per channel, support has been limited to expanding up to 48 channels, as can be seen in the 'Midi Devices Screen' image with 3 assignable Fluidsynth devices.

The number of tracks that can be created in Midieditor has been limited to 32, with track 0 sharing the output device of track 1. In the supported Midi file format, track 0 is used for certain events: do not use note events here please (note events should go on tracks 1 to 31).

And by the way, as a personal opinion, because Midi channels allow you to change instruments and in the case of Midieditor, with relative simplicity, you should avoid creating tracks that share channels of a device, to avoid unwanted effects.

Midi Input

The number of input devices that can be connected to Midieditor simultaneously has been increased to 6. For compatibility with what we have done previously, a format has been chosen that pairs the devices according to the UP/DOWN zones in which Midi In Control could divide a keyboard:

piano key down up

If we connect two devices in the pair, one assumes the role of UP and the other assumes the role of DOWN.

Midi Devices Screen:

midieditor_midisettings_icon

midieditor_mididevices

Midieditor Screen:

Important note: Midieditor custom has contextual help when you place the mouse cursor over the different controls, which can be very useful when working.

midieditor_screen

When changing the role of Midieditor from being a program with a single output device to using multiple devices, it was no longer appropriate to be able to select events in a two-dimensional way, because channel 0 of track 1 is not the same thing that channel 0 of track 2, for example: they are channels from different devices. Thus, we need a more selective tool that works 'three-dimensionally'.

For this reason, a new bar was added that allows you to select between tracks and between channels (even exclusively) in a simple way. I am going to show some images that will serve as a reference:

trackbar1

As you can see in the previous image, we have a Midi file with 3 tracks and 3 notes, one in red color on track 1 and channel 0 and the other 2 that are on track 2 (as seen in the note information) are they look translucent.

Since track 1 is selected, we can only select track 1 events at that time.

Let's see what happens when you switch to track 2:

trackbar2

Now we can see the two notes colored, one on channel 0 and the other on 1 of track 2. And the one on track 1 has become translucent.

If we do click with the mouse on the "Tracks" button in the bar, we will go to channel selection mode:

channelbar1

We can see that we have channel 0 of track 2 selected. The red note (channel 0) has a black border to highlight it. As you can see, all this coincides with what is presented below and to the right in "Add new events to...".

As you can see in the image, we have a box selection tool in use. With that tool we could select all the notes in color (all the notes of any channel on that track). But there is a more exclusive way to select only the notes of a single channel: if you do double click with the mouse on channel 0 and select both notes, this happens:

channelbar2

By double clicking with the mouse we can return to normal mode.

Multi-track event selection.

There is a direct way to be able to select events from all tracks simultaneously. If a copy/paste is performed while in this mode, the channel/track preferences will be ignored in the paste. The following image shows the button to press and the result of selecting the events in this mode:

multitrack_selection

Paste events from file

midieditor_pastefile_icon

Every time we use the 'COPY' option with selected events, a copy of the list of events is made in memory, but also in the %user%/Midieditor/file_cache directory in a file that has a structure very similar to a MIDI file. .

The reason for doing this is, on the one hand, to allow the copying of events in a deferred way (that is: a MIDI file is opened, events are copied, it is closed, another MIDI file is opened and those events are pasted) and from different instances of Midieditor Custom (it is copied into one with a MIDI file open and pasted into another with another file open.

The icon shown is the one that should be used to paste the events in this way (normal pasting only works with objects in memory).

A known problem with Midieditor is that it uses many copied objects and lists of objects in memory. It didn't even delete the objects when opening a new MIDI file and taking into account, in addition, that it uses a redo/undo list that literally copies all the objects of a channel in memory for any small modification, it means that I have to have certain consideration and a certain tendency to transfer the use of objects in memory to the equivalent file stored on the hard drive.

By the way, I would like to point out that one of the new changes has to do with the use of the registry: the intensive use of the Windows registry has been replaced by .ini files that are stored in %user%/Midieditor/settings. This is very convenient for several reasons, among them, that we now use different files to record different things and thus allow for easier export for the user (that is, YOU).

Midi In Control

midieditor_midiin_icon

midieditor_midiincontrol

The 'Split Keyboard' option determines whether Midi In Control works or, on the contrary, is disconnected and does not perform any action.

Just below you have a PDF that is an old guide to Midieditor Custom to give you an idea. It is evident that it needs to be updated and I will try to do so another time.

Midi In Control: Inputs Actions

midieditor_inputactions

I'm sure you're smart enough to understand how the options on this screen work.

But YES, a PDF is needed as a user guide.

If you look at the old Midieditor Custom guide, you will see that we had the ability to program keys on your MIDI device in order to trigger a series of effects and/or modify input events for that purpose.

The 'Input Action' list is something much more complete and complex than what was previously there, as you can see. You can even do fun things like program buttons (switch category) in order to assign different functions to a sustain pedal, or a mod wheel. Or activate effects on a different device (with bypass), which can be very useful if you connect a MIDI controller device.

Midi In Control: Sequencers

midieditor_sequencer

Midi Sequencer example file:

midieditor_filesequencer

This is the sequencer management aspect from Midi In Control. One UP/DOWN device can control up to 4 sequencers (not simultaneously). Remember that a sequencer is still a lighter type MIDI file, but it takes up memory space. If you are wondering, but what is a sequencer? The answer in this case is that it is a way to enter a pattern of notes in a more or less automated way (from start to finish, repetitively (loop) by pressing and holding, or simply pressing once and holding it alone). (Auto. In this case, if the key is held down for a while and released, the sound stops).

In 'Auto rhythm' mode the sequence can contain 4 channels of instruments + drum and is played independently, without modifying the pitch of the notes depending on the keyboard note.

Midi In Control: arpeggio editor/builder

midieditor_fingerpattern1

midieditor_fingerpattern2

Virtual Keyboard:

midieditor_vitualkb_icon

A virtual keyboard has been incorporated with the ability to be assigned to any input device and has buttons to program as 'input actions' (notes on channel 9) and rotary controls that can be reprogrammed for a certain number of Control Change events (by clicking with the right mouse button)

midieditor_virtualkeyboard1

midieditor_virtualkeyboard2

midieditor_virtualkeyboard3

Fluidsynth:

midieditor_fluid_icon

midieditor_fluidsynthmain

midieditor_fluidsynthconfig