Jump to content
IGNORED

Music channel priority for tracker


DZ-Jay

Recommended Posts

Hello,

 

In my aim to make the Intellivision Music Tracker useful and increasing its appeal to IntyBASIC programmers, I want to make sure it at least offers at a minimum any critical features that the IntyBASIC music player has.  One thing that was missing, and that some have already asked me about, is the ability to disable channels in the tracker so that you can use them for sound effects.  Unfortunately, the Intellivision Music Tracker messes with all PSG channels during playback, even if it's just to re-assert silence.

 

I added a simple enhancement that allows the programmer to configure the tracker at runtime to leave some PSG channels untouched.  It works by organizing the channels into a prioritized list, and only using the number of channels requested, starting from the one with the highest priority.

 

In order to emulate something like "PLAY SIMPLE" in IntyBASIC, I chose to assign the lowest priority to the third channel of each PSG.  The priority list then looks like this:

 

  1. A  (Main PSG)  - Highest priority
  2. B  (Main PSG)
  3. D  (ECS PSG)
  4. E  (ECS PSG)
  5. F  (ECS PSG)
  6. C  (Main PSG)  - Lowest priority

 

+-----------+-----------+
|  MAIN PSG |  ECS PSG  |
+---+---+---+---+---+---+
| A | B | C | D | E | F |
+---+---+---+---+---+---+
| 1 | 2 | 6 | 3 | 4 | 5 |
+---+---+---+---+---+---+

 

So, for example, if you are only using the main PSG without the ECS, and you request 2 active channels, the tracker will use "A" and "B" and leave "C" untouched.  Likewise, if you plan to take advantage of the ECS extra PSG to play additional music channels, you can request 5 active channels and the tracker will use "A", "B", and the three ECS channels, and still leave "C" untouched.

 

That allows you to predictably reserve "C" for sound effects, and still take advantage of the extra sound channels of the ECS for the tracker, just like when using "PLAY SIMPLE" in IntyBASIC.

 

However, in contrast to "PLAY SIMPLE," you are not constrained to just reserving one or two channels; you can configure the tracker to use anywhere from 1 to 5 channels, disabling the rest and reserving them for external use.  All you need to do is use the macro "SET_ACTIVE_CHANNELS(n)" where "n" is the number of channels to use.  The default is 6, letting the tracker use them all.

 

	' Enable 5 channels for tracker use.
	' This reserves channel "C" for other things.
	SET_ACTIVE_CHANNELS(5)

	' The song will start playing immediately.
	CALL TRKLOADSONG(VARPTR MYSONG(0))

 

(Obviously the feature is available using the native Assembly Language interface of the Intellivision Music Tracker as well.)

 

The full set of channel priority configurations are as follows:

+------------------------+-----------+-----------+
|                        |  MAIN PSG |  ECS PSG  |
+------------------------+---+---+---+---+---+---+
| SET_ACTIVE_CHANNELS(n) | A | B | C | D | E | F |
+------------------------+---+---+---+---+---+---+
|           1            | X | - | - | - | - | - |
+------------------------+---+---+---+---+---+---+
|           2            | X | X | - | - | - | - |
+------------------------+---+---+---+---+---+---+
|           3            | X | X | - | X | - | - |
+------------------------+---+---+---+---+---+---+
|           4            | X | X | - | X | X | - |
+------------------------+---+---+---+---+---+---+
|           5            | X | X | - | X | X | X |
+------------------------+---+---+---+---+---+---+
|           6            | X | X | X | X | X | X |
+------------------------+---+---+---+---+---+---+

LEGEND:
[ - ] => Inactive
[ X ] => Active

 

One important thing to note is that, because channels "A" and "D" are the only ones in which the tracker supports drums, we may want to keep those at a higher priority, or else you lose the ability to use drums when using less than the full set of channels.

 

What do you guys think?  I know it is a useful feature to be able to reserve some channels for non-tracker use, but is this a good interface?  Would it be helpful, or is it too confusing?

 

Is the priority order too wonky?  Any feedback will be welcomed! :)

 

   -dZ.

Edited by DZ-Jay
  • Like 1
Link to comment
Share on other sites

By the way, playing drums instruments using noise in the "A" or "D" channels may get in the way of your sound effects, in much the same way that "PLAY SIMPLE" without the "NO DRUMS" option would.

 

The good thing is that, contrary to IntyBASIC, the Intellivision Music Tracker doesn't play drums automatically; it only plays drums you create in your patterns, and only uses the noise generator as instructed by your drum instrument definitions.  To avoid any interference from the tracker, just don't play any patterns with drum instruments that use noise. ;)

 

    -dZ.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...