It is time to handle the recording of MIDI files. This could happen in the MIDI roll view, in the session, or in both, but it is essential that one can record in a MIDI file, which can later be edited. That is, after all, the power of MIDI.
MIDI sound banks
MIDI files contain events, but not sound. For example, a MIDI file could contain an event that tells a MIDI device to start playing a certain note at a certain time, but, with this information only, you would not know what sound that note will produce. Some other even before this one determined what instrument will be played on the same channel and somewhere else a sound bank was specified that contained the actual sounds of that instrument.
In the current version of Orinj, MIDI files in the MIDI roll view play General MIDI sounds according to the default sound bank used by the default device on the operating system. That could be some DLS or SF2 file somewhere on your computer. You cannot use Orinj to change that sound bank or to choose a different MIDI device that may play sounds with a different sound bank. (You can do that in the loop building view, but that is a separate story).
The first thing that we need to do is allow the user to change the sound bank through Orinj. The second thing that needs to happen is to allow the user to choose the MIDI device that would receive MIDI playback. Maybe I want to send MIDI events to my computer speakers, or maybe I want to send them to my keyboard.
Translating MIDI files in the session
In version 7, there is one soundfont (SF2 or DLS) file that is used to translate all MIDI files in the session to wave files. This is not great. Different soundfonts are good at different things. Some may have better drums while others may have better brass. It would be good for each MIDI file in the session to use its own soundfont.
Drawing of MIDI notes
You should be able to draw notes on the screen. Right now, you have to do this twice, by first specifying where a note starts and then specifying where a note ends. That is OK, but it is too much work and can be done faster.
Handling MIDI key pressure messages
MIDI key pressure messages are tricky. Key pressure on a keyboard creates vibrato or tremolo, but there are multiple messages sent to a MIDI device to get the vibrato or tremolo effect. Thus, they have to be handled differently than a simple note start or note end message. Either way, the user should have access to a MIDI vibrato or tremolo.
Side chaining in Orinj is currently implemented only within one stock effect: the side chained compressor. We need more. We could, for example, have a side chained equalizer. It will then be easier to implement a dynamic equalizer – one that kicks in only whenever the amplitude of frequencies exceeds a threshold.
In principle, in a most generic implementation, you should be able to hook up any effect to a side chain and you should be able to do so anywhere in the mix order: in tracks, auxiliary channels, and the master channel.
A tape delay is one that would equalize the delay repetitions as if they were recorded on tape. That is, they will change with the magnitude response of the tape. This does not yet exist as a stock effect in Orinj. The only question is whether this should be a delay, an echo (multiple repetitions), a chorus (with delay sweeps) or something else.
Distortion is one way of adding harmonics to a sound, but distortion tends to add odd order harmonics that decrease in amplitude up in the frequency range. We need some effects that give the user more control over what harmonics can be added and at what magnitude.
The fact that Orinj still does not have punch recording is a bit embarrassing. It takes a few clicks to get rid of a recorded block and to start over, but we can speed that up.