Search Forums


Forums supporting
reViSiT (http://revisit.info)
and MIVI (http://mivi.nashnet.co.uk)
nashNET Forums ->  reViSiT - Tracking Software for VST hosts -> Testing & Development -> View Thread

You are logged in as a guest. ( logon | register )

reViSiT MIDI Specification
Jump to page : 1
Now viewing page 1 [25 messages per page]
View previous thread :: View next thread
   reViSiT - Tracking Software for VST hosts -> Testing & DevelopmentMessage format
 
chrisnash
Posted 2005-02-27 5:37 PM (#13496)
Subject: reViSiT MIDI Specification



Developer

Posts: 746
50010010025
Location: England

Hello everyone,

The last few reViSiT days have been devoted to experimentation and research - working out what's possible, practical and preferential for reViSiT's 'complete' MIDI specification. Here's what I've generally settled upon:

  • Pitch slides (bends), panning and volume changes for notes and channels will all be transmitted at the channel level. With MIDI, it is not possible to affect these variables for notes / pitches individually. The idea with MIDI has always been that a MIDI channel represents a musical part, rather than instrument, in the piece. Thus, if you have two violins, you must use two MIDI channels.
  • Further parameters will be controllable through the pattern's effect column, with special MIDI effect commands. These will be accessed by using the numeric keys (0-9), but will appear in the pattern as 0-9 - where the underline denotes a MIDI effect. Each number will represent a different form of MIDI control, which the user can specify for each instrument. So, effect 0 might be a MIDI CC # (e.g. # 91 - MIDI Effect Send 1), but effect 1 could be Channel Aftertouch, and so on. This of course allows 10 assignable methods of control per instrument (and each instrument can have different mappings). Of course, there will be nothing to stop the user copying the instrument to another instrument slot, thus gaining 10 extra variables - and since they will transmit to the same MIDI instrument, you will effectively have 20 control variables for the one instrument. This process could be continued, theoretically allowing almost unlimited potential for MIDI control.
  • An "IT compatibility" mode might be introduced, in which reViSiT MIDI will behave as it did in IT2 - pitch, pan, etc. will be ignored and though orphaned volume changes (volume entries without pitch/instrument entries) will affect MIDI channel volume, non-orphaned volume entries will affect note velocity. When this mode is not enabled, non-orphaned entries in reViSiT will probably affect note velocity and channel volume. Though, it might be made switchable whether note volume entries affect note velocity and/or channel volume. Your comments please.
  • In addition to Channel Aftertouch, Key Aftertouch might be available. Originally, it was thought that this might be a way of controlling note volumes after they have been triggered. However, there were several problems with this. Notably, only a few MIDI instruments support key aftertouch. Also, even when it is implemented, it is not always volume that the aftertouch controls - it can often be pitch or even the rate of an LFO (e.g. vibrato rate). Instead, if key aftertouch is added, it will be as an effect command, and will use whatever the current pitch of the effect's track is to specify which key it affects.

Additionally, some other things cropped up in my musings that might affect future versions:

  • Since reViSiT has now effectively taken charge of MIDI device communication, it might actually be possible for it to send sync information to the host. Effectively, reViSiT could dispatch time code to a virtual/loopback driver, which the host could be set to slave to, giving reViSiT the capability of controlling tempo variations, and even possibly allowing the original use of the Axx speed command. The host would merely see reViSiT as though it were an external MIDI sequencer. I should, however, add that this isn't a high priority feature (most likely to come after v1.0), and that the Advanced Sync feature might itself support the Axx command.
  • Some of the more advanced MIDI features might be available for output only, as there might be problems with recording things like pitch bend to patterns. Notably the inherent quantisation of tracker rows might be a stumbling block. It might be slightly easier, however, to implement them for live use (e.g. using MIDI input to trigger instruments directly, rather than recording patterns). Key jazz and the realtime recording of MIDI notes, volumes, etc. should nonetheless be possible at some point. Indeed, non-realtime MIDI input shouldn't be too far off now (though perhaps not the next release).

Anyway, now that I have reViSiT MIDI a little clearer in my head, I can get down to laying the actual code, which hopefully shouldn't take too long. The biggest part will be working out how to marry MIDI Pitch bend with reViSiT / IT2 pitch slides. Unfortunately, even the zTracker source might not be that helpful here - and it also looks like pitch bends might have different effects on different MIDI devices. Typical.

I would welcome questions, comments and suggestions on these concepts.

All the best,
Chris


Bookmark and Share Top of the page Bottom of the page
Jump to page : 1
Now viewing page 1 [25 messages per page]
Jump to forum :
Search this forum
Printer friendly version
E-mail a link to this thread

(Delete all cookies set by this site)