home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 202.lha / MidiRouter_v0.1 / Tutorial.doc < prev    next >
Text File  |  1988-12-27  |  32KB  |  669 lines

  1.  
  2.  
  3. Getting Started
  4. ---------------
  5.  
  6. This Document will be mostly in the form of a tutorial.  Many parts of 
  7. this program are not well documented because of the need for some kind
  8. of copy protection.  My belief on documentation is it should be on-line
  9. and the program "User Friendly". But this documentation will contain many
  10. useful features of the software.  I also believe that examples is the
  11. fastest way to learn.  There are several examples that may be loaded.
  12.  
  13. First, you should make a new directory for all the executables.  Add this
  14. directory to your path and copy the MidiRouter, SplitNote, and SSBridge
  15. programs and .info files.  Next, make sure you have the files 'Midi.library' 
  16. and 'arp.library' is in your libs: directory.  If you are using SoundScape
  17. this should be the same place as 'SoundScape.library'.   Both the libraries
  18. 'Midi.library' and 'arp.library' are not included in this demo but are PD
  19. and may be found on the "Musician's SnowBird Den" in the file 'MRouter2.arc'.
  20. The file 'MidiRouter.CHIP" should be in this directory as well as all the 
  21. ".route" and ".env" files. See Read.Me for complete installation instructions.
  22.  
  23. You should now be ready to run.  The easies way to get something
  24. running is to run the SplitNote routine in the /midi mode.  This mode
  25. not only starts the module but adds routes to both MidiIn and MidiOut.
  26. This mode is mainly intended if you are not going to be using MidiRouter or
  27. SoundScape.  If MidiRouter is run with this module in this mode, the
  28. module will be shown on the patch panel but not the routes.  The only
  29. way to remove the routes added by the module is to leave the program.  
  30.  
  31.     > Double click on the SplitNote+midi icon or run "SplitNote /midi"
  32.       from CLI.
  33.  
  34. First, the CopyRight window is displayed. Click "OK" to continue.
  35.  
  36.     > Click OK in Copyright window
  37.  
  38. A small window is opened in the upper left corner.  To leave the SplitNote
  39. module, close this window.  To edit the presets of the SplitNote module
  40. use the menu of the "SplitNote" window.  There are three options on this
  41. menu.  The first enters the edit routine.  "Read" and "Write" are used to
  42. save and load banks of presets but is not available for this demo.
  43. But presets can be read by MidiRouter and sent to this Module.
  44. At this point, the MidiLib nodes "SplitNote" have been created and, because
  45. of the /midi option, routes connected to MidiIn and MidiOut.  The default
  46. split point is at C3.
  47.  
  48.     > Select "Edit" option from the menu on the "SplitNote" window
  49.  
  50. A new window is opened and the MIDI stream will not send messages.  This
  51. interruption of the MIDI flow will not happen if this edit window is opened
  52. from the MidiRouter.  But when running a module by its self, make sure
  53. you do not leave this edit window open.
  54.  
  55. Since this module is most useful when used with other modules and the
  56. route capabilities of MidiRouter, lets leave this module and restart it
  57. without routes being connected to MIDI.  We will use
  58. MidiRouter for that.
  59.  
  60.     > Close Edit window of SplitNote
  61.     > Close "SplitNote" window to leave module and remove routes to MIDI.
  62.  
  63.     > Double click on SplitNote without +midi option.
  64.     > Click on "OK" of CopyRight Window
  65.  
  66. The window "SplitNote" is create as before.
  67.  
  68.     > Double click on MidiRouter icon to start MidiRouter program.
  69.     > Click on "OK" of CopyRight Window.
  70.  
  71. The MidiRouter patch panel is now opened and icons for Midi IN/OUT and
  72. the SplitNote module are displayed.  To connect a route from MidiIn to
  73. SplitNote, use the mouse and click on the Midi icon on the left, then on 
  74. the SplitNote icon on the right. A line is drawn representing 
  75. the route.  
  76.  
  77.     > Click on MidiIn on left then SplitNote on right.
  78.  
  79. Add another route from SplitNote to MidiOut.
  80.  
  81.     > Click on SplitNote on left then MidiOut on right.
  82.  
  83. There is now a split point at C3 for notes on Midi channel 1.  To see
  84. the presets for the SplitNote module, double click on the modules icon
  85. in the Patch Panel.  
  86.  
  87.     > Double click on SplitNote icon on either left or right.
  88.  
  89. The edit window for the SplitNote module is now displayed and will be 
  90. explained later.  For now though, you may change the split point by pointing
  91. to the C3 label under "split point", pressing and HOLDING down the left
  92. mouse button, and draging the mouse up or down while holding the left
  93. mouse button down.  The preset number at the top of the window may be
  94. changed in a like wise faction. SplitNote preset number 2 has two
  95. split points set at C2 and C4.  Unlike being in the edit window while
  96. running a module's edit routine, the flow of midi data is NOT interrupted
  97. and all edits are active when the left mouse button is released.
  98.  
  99.     > Close SplitNote's edit window.
  100.  
  101.  
  102. Creating and Displaying routes
  103. ==============================
  104.  
  105. The creation of routes between module nodes is the primary function
  106. of MidiRouter.  These routes are defined by Bill Bartons MidiLib.  Basicly,
  107. routes are used to select which MIDI messages should be passed to the
  108. routes destination.  Notes may have there note value shifted.  The midi
  109. channel may also be shifted by the route.  This gives an incredible 
  110. amount of processing power simply in how messages are routed.  My hat off
  111. to Bill on this.  
  112.  
  113. So lets use MidiRouter to select where to place routes and how to filter
  114. the data.  By using routes between MidiIn and MidiOut alone there are a
  115. number of useful things to do.  First, lets create an environment where
  116. all notes coming from MIDI channel 1 is layered such that a minor
  117. chord is played with the 3rd and 5th of the chord each playing a different
  118. sound.
  119.  
  120.  
  121. The Display Mask
  122. ----------------
  123.  
  124. First, since no midi data will be sent to MIDI out until a route is
  125. created, lets create a route with no filtering from MidiIn to MidiOut.
  126. To do this we must first set the display mask to include all MIDI messages.
  127. This is the default state when the program is first run.
  128. The display mask is the setting of the gadgets in the top half of the 
  129. MidiRouter window.  The row of gadgets to the right of the "MSG:" text is
  130. used to select which MIDI message types are to be shown on the display.
  131. It also says what message filtering to use on NEW routes created.  It 
  132. will not change the settings of routes already connected.  But it will 
  133. change the routes currently display.  This will be demonstrated in a 
  134. moment.  The gadgets right of the "CH:" text are used to select which
  135. MIDI channels are active.  The scrolling gadget to the right of the text
  136. "Solo" is used to change the mode of the message and channel filter
  137. gadgets.  When "Solo" is selected, the five options may be selected by
  138. holding down the left mouse button and moving the mouse up or down.  The
  139. options are:
  140.  
  141.     None    - Each gadget for MSG: and CH: only toggle on or off.
  142.     MSG     - When selecting a MSG: gadget, turn off all other messages.
  143.     Chan    - When selecting a CH: gadget, turn off all other channels.
  144.     Both    - Solo both Message and Channel gadgets.
  145.     AllOn   - Turn all message and channel gadgets on.
  146.  
  147.  
  148. First lets make sure there are currently no routes.  On the menu for window
  149. "MidiRouter #1", under the menu option "Routes" select the option "Clear".
  150. This will erase all routes.
  151.  
  152.     > Execute menu option "Clear" under menu "Routes"
  153.  
  154. Now make sure all message types and channels are on.
  155.  
  156.     > Use "Solo" scroll gadget and select "AllOn".
  157.  
  158. Now we can connect are route from MidiIn to MidiOut.
  159.  
  160.     > Point to MidiIn icon on left then MidiOut icon on right.
  161.  
  162. If at any time we wish to remove a route, simply point to the two icons
  163. of the route to delete.  This only works if there is only one route between
  164. these two modules.
  165.  
  166.     > Point to MidiIn icon then MidiOut icon to delete route.
  167.  
  168.     > Reconnect route again as before.
  169.  
  170. So now we want to add a second route between MidiIn and MidiOut.  But we
  171. can not just point to the two icons because that would remove the old
  172. route instead.  The "Add" icon is used to add routes over existing ones.
  173.  
  174.     > Point to the "Add" gadget in the "MidiRouter" window.
  175.  
  176. The message "--> Select Source" is displayed in the MidiRouter's prompt
  177. window just above the line in the middle of the window.
  178.  
  179.     > Point to MidiIn.  Message on prompt line changes.
  180.     > Point to MidiOut.
  181.  
  182. A new route is added and the line changes color to indicate that more than
  183. one route is now connected.  Since we want this new route
  184. to transpose the note and MIDI channel, we first have to edit the routes.
  185. To do this point to the "edit" command and then select the source and
  186. destination of the routes to edit.
  187.  
  188.     > Click on "Edit".
  189.     > Select "MidiIn" then Select "MidiOut"
  190.  
  191. The route edit window is now entered.  This is where you can edit all
  192. parameters used by the MidiLib route manager.  In the example we are doing,
  193. we want to shift the second note to be a minor 3rd above the root.  We
  194. also want this to be a different sound so we will want to shift the MIDI
  195. channel.  But before we do that, note that since we never turned off any
  196. of the other midi message types, all the controllers, system exclusive,
  197. pitch bends, program changes, etc. will be duplicated.  To prevent this
  198. we need to turn off all message types except notes in the second route.
  199. There is a short cut to doing this.  Clicking on the "Clear" gadget on the
  200. right side of the route to clear.
  201.  
  202.     > Click on "Clear" gadget on the far right of route 2.
  203.  
  204. If the route editor is left with all messages or channels cleared, the
  205. route is deleted.  Now turn on note filtering, channel 1, and note 
  206. transpose to a miner 3rd.
  207.  
  208.     > Click on route 2's note filter to toggle to "Y".
  209.     > Scroll note transpose to 3.  Note transpose is the scroll gadget
  210.       second from the left.
  211.     > Click on channel 1 for route 2.
  212.  
  213. Last we need to increment the MIDI channel.  By changing offset to
  214. 1, messages on channel one will be mapped to channel two.
  215.  
  216.     > Scroll route 2 offset to 1.
  217.  
  218. All changes in this window are effective now.  Be careful not to have notes
  219. on when changing either the channel offset or the Note transpose as this
  220. will leave notes hanging.
  221.  
  222. Leave the edit window by closing it. We can now use the message display 
  223. mask to tell us something about where we have messages.  If you set the 
  224. Solo scroll gadget to "Both" and select "PW" and "CH1", the number of
  225. routes display will be two and the color will be yellow instead of white
  226. indicating more than one route (at least yellow with my preferance).  
  227.  
  228.     > Close route editor window.
  229.     > Select "Both" for Solo gadget.
  230.     > Click Note (N) Message.  All other filter turns off.
  231.     > Click on channel 1.  All other channels turn off. 
  232.  
  233. The route turns yellow.  There is more than one route connected from 
  234. MidiIn to MidiOut with note messages on channel 1.
  235.  
  236.     > Click on channel 2. Channel 1 goes off.
  237.  
  238. The route turns white.  There is only one route passing only notes on 
  239. channel 2. If you move the Solo gadget back to "None" (all the way up) and
  240. select channel 1, the route agains turns yellow indicating multiple
  241. route with notes on channel 1 or channel 2.
  242.  
  243.     > Scroll "Solo" to "None"
  244.     > Click on channel 1.  Channel 2 should still be on.
  245.  
  246. By using the display filter you can keep tract of the 
  247. route path for each type of midi message and/or MIDI channel.  With
  248. other modules connected, this display mask is very effective in keeping
  249. route paths clear for each type of MIDI data.  Another great benefit
  250. of being able to deal with message types separatly is that controllers and
  251. other MIDI streams can be filtered off or re-routed early in the path.
  252. For example, the split note module uses only note and program change MIDI
  253. messages.  So if a path was connect from MidiIn to SplitNote and from 
  254. SplitNote to MidiOut, the other MIDI data would have to be passed thru
  255. two paths before being sent to MidiOut instead of only one if a separate
  256. route was added.  This example will be elaborated later and can be
  257. loaded via the MidiRouter environment file "Basic-Split.env".
  258.  
  259. But we have not completed the minor chord.  With the two routes we have
  260. the root and the third.  So we need to add a third route.  When we added
  261. the second route, we left the display message maksk to all on.  But since 
  262. what we want is only notes, change the display mask.
  263.  
  264.     > Select "Both" for Solo.
  265.     > Click MSG Note.
  266.     > Click CH 1.
  267.  
  268. Once again we want to add a route where there are already routes.  In the
  269. first case, clicking MidiIn and MidiOut would remove the route.  Since there
  270. are multiple routes, clicking the two icons will bring up the edit routes
  271. window as if the Edit gadget was clicked. So lets add the third route and
  272. edit it.
  273.  
  274.     > Click "Add".
  275.     > Click MidiIn then MidiOut.
  276.     > Click MidiIn then MidiOut again to start route editor.  This is the
  277.       same as clicking "edit" then MidiIn and MidiOut.
  278.  
  279. There are now three routes with the last one being the one we just added.
  280. Note that only the filters specified in the display filter were added.
  281. Now change the note shift and channel offset.
  282.  
  283.     > Scroll route 3's note transpose to 7 to add the fifth of our chord.
  284.     > Scroll route 3's offset to 2.  MIDI channel 1 is now mapped to 3.
  285.  
  286. So finally we have the desired results.  These three routes could 
  287. have been entered with fewer commands by adding all three routes before
  288. editing.  Now for every note played on channel 1, three notes are played.
  289. The root played on channel 1, a minor 3rd above that on channel 2, and
  290. a perfect 5th above the root on channel 3. 
  291.  
  292. Whenever you are done with a window, it should be closed.  This frees up
  293. more of the computer for MIDI.  Also, not more than one edit program may
  294. be called at a time.  To open a new edit window the other edit windows will
  295. have to be closed first.
  296.  
  297.     > Close route editor window. (Window "Edit-Route")
  298.  
  299. At this point you will be able to save the routes in a route file or save
  300. an environment which also saves the presets for the modules.  But this
  301. function is disabled for the demo.  However, I have include the 
  302. ability to read these environment files and the route example above may 
  303. be loaded from the environment file "chord.env".  
  304.  
  305. I have also included a route file I use with my guitar synthesizer.
  306. It maps MIDI channels 1 thru 7 to channel 1.  I need to do this because
  307. I have my PitchRider set up to send each string on a different MIDI channel
  308. and channel 7 is used by the hold function.  There are times when I want
  309. to play with a sound just on my DX7 with the guitar.  Since my DX7 only
  310. receives on one MIDI channel, (at least I have it set up that way) I
  311. am able to quickly move this module into a patch panel MIDI stream.
  312. I can call this patch panel with only MidiIn, MidiOut, and 8 routes a
  313. module because multiple copies of the MidiRouter can be run, each with
  314. its own routes and modules.  So a PatchPanel can act as a new module in
  315. a second copy of the Patch Panel (MidiRouter), This feature is not 
  316. completely working yet so I am going to save an example of this for 
  317. the next release.  But go a head and load the route file "OMNI.router".
  318.  
  319.     > From MidiRouter's Menu, execute "read" option from "routes" menu.
  320.     > Give the name "OMNI". Do NOT give the extension ".route".
  321.       All other routes are deleted. 
  322.  
  323. That's it! If you want to see the routes, click MidiIn then MidiOut.
  324.  
  325. To leave MidiRouter, simply close its window.  The program will verify
  326. that you really want to quit.  Unless the modules where run with options
  327. saying otherwise, all modules will be close when the MidiRouter exits.
  328.  
  329.     > Close MidiRouter window.  
  330.     > Quit. Are you sure??  Click on OK
  331.  
  332.  
  333. Using MidiRouter with SoundScape
  334.  
  335. ================================
  336.  
  337. First, make sure MidiRouter is not running.  It will needed to be started
  338. with different options to run with SoundScape.
  339.  
  340. Since MidiLib and the MIDI message passing system used by SoundScape are
  341. different, there must a program that will read MIDI messages from the
  342. SoundScape MIDI stream and pass them in to MidiLib and the other
  343. way around.  The program SSBridge does just that.  Running SSBridge does
  344. several things.  First, if SoundScape is not already running, it loads
  345. SoundScape.  SSBridge then creates the Node's needed by MidiLib and opens
  346. a small window in the upper left corner. 
  347.  
  348.     > Double click on SSBridge icon to start SoundScape and MidiLib.
  349.  
  350. At this point you should have a window of the SoundScape Patch Panel with
  351. a new icon.  This icon is the letters M.L. in a box.  This is your Node
  352. in and out of ANY MidiLib module, weather written for MidiRouter or not.
  353. However, when used with MidiRouter, another icon is included in the 
  354. MidiRouter Patch Panel that is the letters "S.S." for "SoundScape".
  355.  
  356. There are allot of considerations when using MidiRouter with SoundScape.
  357. But I am only going to mention one of them here.  Be default, when 
  358. MidiRouter starts it includes the MidiIn and MidiOut nodes used by
  359. MidiLib.  Since SoundScape has its own Midi In/Out routines, the MIDI
  360. ports will only work with one of them.  By including the "-midi" option
  361. to MidiRouter, it will not include its own Midi ports.  This may be done
  362. either by executing the command "MidiRouter -midi" from CLI or by
  363. including the -midi option in the .info file.  I have included the
  364. .info file with this option already set in "MidiRouter-midi.info".
  365.  
  366.     > Double click on "MidiRouter-midi" icon.
  367.     > click on OK of CopyRight window.
  368.  
  369. The MidiRouter Patch Panel window is now displayed but with the "SS" 
  370. (for SoundScape) instead of the MIDI in and out icons.
  371.  
  372. You may also choose to use the MIDI ports set up by MidiLib instead
  373. of SoundScape's MIDI ports.  To do this, do not include the -midi
  374. option for MidiRouter. Include it in the SSbridge program instead.  This
  375. will remove the MIDI ports from the SoundScape Patch Panel. This option
  376. is already set in "SSBridge-midi.info".
  377.  
  378. Connecting routes to MidiRouter from SoundScape is the same as for any
  379. other modules.  To use data from SoundScape in MidiRouter, use the
  380. SS icon like you would use MidiIn and MidiOut.  Messages come from 
  381. SoundScape via the SS icon on the left and messages are sent to 
  382. SoundScape by sending them to the SS icon on the right.  
  383.  
  384. This is not a very complete description of every thing you should know
  385. but should be enough to get you going.  Let me give these last warnings.
  386. First, if you uses the MIDI ports of MidiLib with the MIDI ports
  387. of SoundScape, either SoundScape or MidiLib will have control of the
  388. ports depending on the order things have happened.  The ports are
  389. not freed until you reboot.  So if you are having problems with the
  390. MIDI port, try rebooting and make sure you only use one or the other
  391. MIDI ports.  If you start SoundScape and/or MidiRouter then exit then run
  392. SoundScape and/or MidiRouter again, if you do not do things in the correct
  393. order, you may loose your MIDI port so that one program or another can not
  394. use MIDI.  Reboot to correct.  If you have problems, leave a message on
  395. the "Musicains SnowBird's Den" for me. 
  396.  
  397. Last, I ran into allot of problems when I has writing SoundScape utilities
  398. before I wrote MidiRouter.  I believe the problem to be that the Manx
  399. "C" compiler/linker does not do the same thing as the lattice compiler/
  400. linker, which is what was used for SoundScape.  But I believe SSBridge
  401. works well enough.  As I start having more time to use this software
  402. for my music, and not just writing the software, I may find more
  403. problems.  Please let me know if you have problems. Please no collect
  404. calls, but do call if you want to know more!!!
  405.  
  406.  
  407. Using SplitNote 
  408. ---------------
  409.  
  410. The SplitNote utility module is but one module that will be available
  411. for the MidiRouter program.  This one module will describe how modules
  412. are used in the system.  The following tutorial may be run weather
  413. you are running MidiRouter alone or with SoundScape.
  414.  
  415.     > If not already running, start MidiRouter.  SSBridge may be running
  416.       or started now too.
  417.  
  418.     > Start SplitNote module by double clicking on SplitNote.  Do NOT
  419.       start the "SplitNote+midi" copy of this module as this will connect
  420.       routes to MIDI.  All routes should be connected with MidiRouter.
  421.  
  422. Routes may now be connected to the icons of modules as before.  To enter
  423. the edit routine of a module, double click on its icon in the MidiRouter's
  424. window.
  425.  
  426.     > Double click on SplitNote icon in MidiRouter's window.
  427.  
  428. A new window is opened which is the edit window for this module.  This
  429. edit window will be different for every module except for some common
  430. gadgets that are common to most modules I have in mind.
  431.  
  432.  
  433. Module common features
  434. ----------------------
  435.  
  436. First, so that you can see the edit window and this tutorial, you may want
  437. to resize and position the edit window for SplitNote.  Whenever you change
  438. this window, the new position is remembered.  This position is also saved
  439. by MidiRouter when saving environments.  
  440.  
  441.     > Resize and move the SplitNote's edit window.
  442.  
  443. So now if we close this edit window, the position and size are remembered
  444. the next time the window is opened.
  445.  
  446.     > Close SplitNote's edit window
  447.     > Double click on SplitNote icon in MidiRouter's window.
  448.  
  449. There are 3 scroll gadgets used by most modules.  The first of these
  450. is the "Preset" gadget.  Every module may define from 1 to 128 preset
  451. slots.  Each preset slot contains a new configuration for the module.
  452. In the case of the SplitNote routine, changing the preset slot number
  453. will change how many and where the split points are.  The number of
  454. slots is defined when the module is first loaded, or when a MidiRouter
  455. environment is loaded.  This means that if you need only two different
  456. split point maps for one song and 32 maps for the next song, when the
  457. environment for the two songs is loaded, the number of slots used in the
  458. module is redefined and reloaded.  There can be 128 preset slots defined
  459. except that for this Demo you may define only 1-3 slots.
  460.  
  461. Another common gadget for most modules is "Preset via MIDI".  This gadget
  462. is used to allow MIDI to change the modules preset map.  This gadget
  463. has three values.  When "Preset via MIDI" is "Disabled", the modules
  464. preset map can not be changed from MIDI.  The only way to change the
  465. preset is to use the mouse.  When "Preset via MIDI" is "Enabled", the
  466. modules preset map may be changed by a MIDI program change.  So a program
  467. change of 2 will set preset 2, 3 will set preset 3, etc.  If a program
  468. change is sent that is greater then the number of slots, nothing happens.
  469. If the gadget is set to "Wraped", MIDI program changes will change the
  470. preset as with "Enabled" but if the program change is greater than the
  471. number of slots, the program number is wraped around so that it will 
  472. change the preset.  For example, if the number of slots is 2, a PC of
  473. 1 set preset 1, 2 sets 2, 3 set preset 1 again, etc.  So in this case
  474. all odd program change numbers will set SplitNote preset map 1 while
  475. all even program change numbers will set SplitNote preset map 2.  This
  476. is very powerful for being able to change your entire setup including 
  477. module configuration from your MIDI controller, which is where all the
  478. control should be coming from in the first place!
  479.  
  480. The last common gadget is the MIDI channel number used to control preset
  481. changes for this module.  So if set to 1, PC on all other channels are
  482. ignored.  If you want program changes to change the modules preset 
  483. regardless of the MIDI channel, set this scroll gadget to "OMNI".
  484.  
  485. The whole concept of using MIDI program changes to control module
  486. configuration really needs allot more explanation, but that will have to
  487. wait until I have more modules and start writing the "real" documentation
  488. for this program.
  489.  
  490.  
  491. How SplitNote works
  492. -------------------
  493.  
  494. SplitNote is a basic note split routine.  A different split point may be
  495. set for all 16 MIDI channels.  When a note enters the SplitNote module,
  496. its MIDI channel is examined. The note is compared with the split point
  497. set for that channel.  A new midi channel is assigned depending if
  498. the note was above or below the split.  If the new channel is less than or
  499. equal to the original input channel, the note with its new channel is sent
  500. to the modules destination.  If not, another split point is searched based
  501. on the new midi channel.
  502.  
  503. For example, in preset #2 of the SplitNote module, there is a split point
  504. on channel 1 at C2 and and channel 2 at C4.  If we get a MIDI note message
  505. at say G4 on MIDI channel 1, the split point at channel 1 is examined.
  506. Since G4 is greater then the split point of C2 for channel 1, the channel
  507. is reassigned to channel 2, since that is the channel for the upper part
  508. of the split.  Now, since channel 2 is greater then the input channel of
  509. 1, the note is compared with the split point at the new MIDI channel,
  510. channel 2 in this case.  Since once again the note is greater then the
  511. split point, the MIDI channel is again reassigned to the upper split.  
  512. So now the channel is 3 and since 3 is greater then the input channel of
  513. 2, another split point is checked for MIDI channel 3.  Since the split
  514. point at channel 3 is set to "Lower", all notes will be passed to the
  515. lower channel number, in this case 3.  Since the new MIDI channel is now
  516. equal to the input channel for this split point (that is 3), the note is
  517. now sent to the destination.
  518.  
  519. To change the split point, use the mouse and position the pointer over
  520. the "C 3" text under "Split Point" and right of "Input Channel 1".  Press
  521. and HOLD the left mouse button while moving the mouse up or down.  As
  522. long as you hold the left mouse button down the value under the pointer 
  523. will change.  Even where the value to change is only yes/no, the value 
  524. may be changed my holding the left button.  If there is only two values
  525. then the value is toggled.
  526.  
  527. Another way to look at how to set split points with this module is this.
  528. Starting at the input channel of your controller, (usually 1), set the
  529. split point to the lowest split you want set.  Leave the lower and upper
  530. channel numbers to there default.  Change the split point of input 
  531. channel 2 to where you want your next split point.  Continue this
  532. for the split point on channel 3, 4, etc. until you have as many split
  533. as you want (up to 16).  The important thing is that the split point for
  534. channel 1 is lower that for channel 2 which is lower than the split point
  535. for channel 3, etc.
  536.  
  537. The values of all split points for all presets in this module may be saved
  538. to disk either for this module alone or as part of the environment.  This
  539. function is disabled thou for this Demo.
  540.  
  541.  
  542. Split points and layering with multiple routes
  543. ----------------------------------------------
  544.  
  545. The real power of this kind of module can be better demonstrated with other
  546. examples.  But most of these examples I will leave for another time.
  547. Let me leave with one more example thou that demonstrates how using this
  548. module with multiple routes gives us more power then would first be 
  549. suspected.  
  550.  
  551. In the above example on setting split points, each split point range
  552. can have only one MIDI channel.  We wanted to set up the split points
  553. so that below C2 notes are on channel one, from C2 to below C4 notes are
  554. layered on channel 1 AND channel 2, and from C4 and above notes are sent
  555. on channel 2. There are actually several ways to do this.  The best way
  556. is the one that uses the fewest routes or makes copy of routes as close
  557. to MidiOut as is possible.  One way is to have the SplitNote module change
  558. the MIDI channel for notes in every range that we want something
  559. different to happen.  In
  560. this example we have 3 different ranges that are all doing something
  561. different, even thou we are only using two MIDI channels.  So if
  562. we use preset number 2 of the default settings for SplitNote, notes
  563. will have MIDI channels as follows:
  564.  
  565.     below C2        -> Channel 1
  566.     C2 - B3            -> Channel 2
  567.     C4 and above    -> Channel 3
  568.  
  569. Execute the following to connect are controller to SplitNote.
  570.  
  571.     > Clear all routes with "Clear" menu command under "Routes"
  572.     > Set Solo to "AllOn"
  573.     > Set Solo to "Chan"
  574.     > Select CH: 1 in display mask
  575.     > Turn off display mask message for all but N and PC.
  576.     > Connect route from MidiIn to SplitNote.
  577.  
  578. We now have a way to identify which of the three split areas a note was 
  579. played in.  The rest can be done with routes.  Connect three routes
  580. from the SplitNote icon on the left to MidiOut.  The first route
  581. passes only messages on channel 1.  Since what is coming out of channel
  582. 1 is already what we want, this takes care of the first range.
  583.  
  584.     > Set Solo to "Both"
  585.     > Select MSG: N in display mask
  586.     > Select CH: 1 in display mask
  587.     > Select Solo to "None"
  588.     > Select MSG: PC.  Both N and PC should be on.
  589.     > Add route from SplitNote to MidiOut
  590.  
  591.  
  592. Next, the notes on channel 2 need to also be copied to channel one.
  593. There are two steps here. First, since in the last route we selected
  594. channel 1 only, the notes on channel two will be filtered.  Simple add
  595. channel 2 to the filter mask of the route already created from SplitNote
  596. to MidiOut.  To do this you will need to bring up the route edit window.
  597. Changing the display mask channels will not change any routes already
  598. created.
  599.  
  600.     > Select "Edit" and click SplitNote then MidiOut icon
  601.     > Click on route 1's channel 2 filter to turn it to 'Y' for Yes.
  602.     > Close edit window.
  603.  
  604. We now have notes below C2 on channel one and between C2 and C4 on 
  605. channel 2.  Now add a second route to copy notes on channel 2 to
  606. channel 1.
  607.  
  608.     > Set Solo to "Both"
  609.     > Select MSG: N
  610.     > Select Chan: 2
  611.     > Click "Add" then SplitNote on left and MidiOut
  612.  
  613. The route line changes color to indicate more than one route is connected.
  614. This new route now copies every note on channel 2 to channel 2.  Since
  615. this is not what we want, edit the routes from SplitNote to MidiOut.
  616.  
  617.     > Click "Edit" then SplitNote then MidiOut.
  618.  
  619. To change the midi channel from 2 to 1, scroll the "Offset" for route 2
  620. to -1.
  621.  
  622.     > Scroll route 2's "Offset" to -1
  623.     > Close route edit window
  624.  
  625. Last, there are still all the notes above C4 on channel 3.  We need to 
  626. add a route that passes these note and shifts the channel to 2.
  627.  
  628.     > Select CH: 3. Channel 2 should go off
  629.     > Click "Add" then SplitNote then MidiOut
  630.  
  631. To change the channel offset open the edit routes window.
  632.  
  633.     > Click "Edit"
  634.     > Click SplitNote then MidiOut
  635.     > Scroll Offset for route 3 to -1
  636.     > Close edit window
  637.  
  638. We now have the result we wanted.  The last think you may want to 
  639. do is to pass the controller, pitch bend, etc. to MidiOut since we have
  640. never connect a route that didn't filter it out.
  641.  
  642.     > Scroll Solo to "AllOn"
  643.     > Scroll Solo to "None"
  644.     > Turn off MSG: N and PC
  645.     > Connect a route from MidiIn to MidiOut
  646.  
  647. This example is in the environment file "Split-Layer.env"
  648.  
  649. From here we can change this example to many others with only the splits
  650. and routes we currently have.  For example, try changing the note
  651. transpose on route 2 from SplitNote to MidiOut.  This will give the
  652. doubling of the notes in the mid range of the keyboard an interval.  Or
  653. maybe you want a different sound for the top part of the keyboard. Change
  654. the channel shift for route 3.  The list goes on.
  655.  
  656. There are a number of points I have left out of this documentation.  There
  657. are still plenty of places to get into trouble.  I can not cover every-
  658. thing about this program here and choose not to cover as much as I could
  659. as an incentive to contact me.  Let me help you on this point, though.  Do
  660. not change the split points, channel offset, or note shift while you 
  661. are playing.  This will cause hang notes.  I have another module that
  662. helps to release some of these hangs because of changes.  This is needed
  663. mostly when I use the MIDI program change to change the split points (i.e.
  664. the SplitNote preset number via MIDI), but want to keep playing the
  665. chord I have until after the new split points are enabled.  So keep in
  666. touch for more help.
  667.  
  668.                                                    
  669.