Jump to content

Recommended Posts

Hi All,

I've been sifting the Internet for months now, but I've been unable to find a copy of an old TI Extended BASIC music program called SANDMAN. I used to demo that program to PC users 'back in the day', before everyone had sound cards... it blew them all away.

 

Anyway the song was Metallica's Enter Sandman, but naturally without lyrics. I actually liked it better than the original. I'd like to put together a TI-Jukebox of sorts and think this would be the perfect #1 selection.

 

If anyone has it in their collection, or knows where it can be downloaded I'd REALLY be appreciative! It's been driving me NUTZ! :P

Link to comment
https://forums.atariage.com/topic/215029-ive-been-searching-in-vain-help/
Share on other sites

Found this on Youtube - it's not the version I remember:

I hear ya. I used (past tense) to have AXEL F as well. If I remember correctly it had cursive writing on the screen. THAT was an exceptional version of the song. I wish I had that one too!

 

It makes me ill to think about all the stuff I had that has vanished and copies of which I cannot find to replace them.

 

At this point I'd be happy to have any decent tunes to make a TI-Juke Box.

Hey Rich,

 

Nice. Reminds me of early Crowded House, or even earlier Split Enz. :thumbsup:

 

Yea a local band here in Portland and I met some of them: http://www.youtube.com/watch?v=ZJLDjYRfx3g

 

Not a good idea to get me started on Music I have over 128 Gig of music. All types and kinds.

Edited by RXB

Yep :)

 

I noticed in the MOD2PSG2 tracker that you can produce this effect by controlling the periodic noise using a muted channel 2. If you set the frequency of channel 2 somewhere in the 4-5 octave interval and turn off the volume, and then set the noise channel to periodic noise that follows the frequency of channel 2 you can get some very interesting bass effects. But when I tried to do this on the TI-99/4A an awful high pitched tone was audible. I guess that's because of a difference between the noise generators in the SN76489 and the TMS9919. Is it possible to do the same in the TMS9919?

lowfreq.zip

Thanks Marc, but I don't think it's just a numbering issue. The MOD2PSG2 tracker <http://www.smspower.org/Music/Mod2PSG2> has 4 channels: 0-3. Channels 0-2 correspond to tone generators 1-3. Channel 3 is the noise channel, and channel 2 is the channel you can use to control the frequency of periodic noise. In the post above I attached a .psgmod file for the tracker that uses this trick to play some low frequency nodes together with some ordinary nodes. My issue is that this didn't sound right on the TI using Tursi's mod player. I don't have an example ready to demonstrate this, so I will switch to XB instead:

 

This makes a low freq sound. All tone generators are muted. 659 is the freq for a high E node.

CALL SOUND(4000,110,30,110,30,659,30,-4,0)

 

Now the first tone generator also plays an E (165 is the freq for a low E), but this is out of tune with the noise 'E':

CALL SOUND(4000,165,0,110,30,659,30,-4,0)

 

Now, the MOD2PSG2 tracker was written for the SN76489 chip, or probably for the Sega made clones. According to this article <http://en.wikipedia.org/wiki/Texas_Instruments_SN76489> there is a difference in the noise generator:

 

"Although basic functionality is almost identical to that of the original SN76489A sound processor, a few small differences existed: the randomness for the noise channel is generated differently, and the Game Gear's version includes an extension for stereo audio output. The periodic noise is also 16 stages long on the Sega-made clones; this makes a significant difference for music/programs which use periodic noise, as sounds will play at 6.25% lower pitch than on the TI-made chips."

 

So on the Sega system, the analogue to the second CALL SOUND statement above would probably play in tune. I think this might explain why my mod did not sound right on the TI.

 

Sorry for rambling on. This is probably of little relevance to anyone else, but perhaps Tursi will have some information to add?

  • Like 1
Found this on Youtube - it's not the version I remember:

 

It's not... it's a new conversion from MOD I did a couple of months ago. I like it better than the older one, but I'm a bit biased. ;)

 

Here's the assembly version of the old one (loads a bit quicker than the XB one): AxelfEA5.zip

 

I noticed in the MOD2PSG2 tracker that you can produce this effect by controlling the periodic noise using a muted channel 2. If you set the frequency of channel 2 somewhere in the 4-5 octave interval and turn off the volume, and then set the noise channel to periodic noise that follows the frequency of channel 2 you can get some very interesting bass effects. But when I tried to do this on the TI-99/4A an awful high pitched tone was audible. I guess that's because of a difference between the noise generators in the SN76489 and the TMS9919. Is it possible to do the same in the TMS9919?

 

The only difference between the chips is the pattern of generated noise is longer on the SMS version. Make sure you are actually setting the pitch on the third voice. (Whether you count as 0-1-2 or 1-2-3). You should not be hearing any high pitched tone.

 

To understand how to convert notes, it helps to understand the chip. All it is, is a bunch of count down timers. The pitch value that you load into a tone channel counts down at the chip's internal rate, and every time it reaches zero, the polarity of the output for that channel flips. XB hides this by letting you enter hertz, but it gets converted to a simple countdown number for the sound chip.

 

On the noise channel, so far as periodic noise is concerned (white noise is much more complicated), there is just a shift registers with a single '1' in it. Every time the countdown is reached, the next bit in the shift register is output. What this means (again, for periodic noise only) is that every x*(shift register size) cycles, the speaker ticks.

 

On the TI-99's sound chip, the shift register is 15 bits long. On the SMS (which that tracker was written for), it's 16 bits long.

 

So basically, to play "E" on the noise channel, on the TI, you have to multiply the divider value by 15, because the actual frequency will be 15 times lower than you specified.

 

Musical notes are logarithmic, so you can't just start with the note frequency and divide by 15. It's easier to start with the tick rate. Going back and forth between tick rates and musical notes is a bit hairier than I want to get into, but suffice to say in the end, your tick rate is limited to a value from 1-1023. The math to go between tick rate and Hz on the TI chip (this is TONE generator Hz) is:

 

ticks = 111860.8 / Hz

or

Hz = 111860.8 / ticks

 

Then you can divide Hz by 15 if it's on the periodic noise channel. That divide by 15 is why it's out of tune.

Edited by Tursi

Forgot to address this:

 

So on the Sega system, the analogue to the second CALL SOUND statement above would probably play in tune. I think this might explain why my mod did not sound right on the TI.

 

This is because the SMS sound chip uses a divide by /16/, instead of /15/ as on the TI. So all your pitches are slightly out of tune if created with that player.

 

I was working on a new set of conversion and playback routines (the above AxelF and the elsewhere linked Chuck Rock being demos) that takes that into account and automatically adjusts your pitches, but at the time that I did the playback code for PSGMod, I wasn't really aware of the difference. You have to multiply the pitch in the third channel by 15/16 to get the right answer, but only when custom noise is being played (and if you are /also/ playing audible tones in the third channel, then you're out of luck. But in my testing that's pretty rare since the note is usually not useful).

 

  • Like 1

So basically, to play "E" on the noise channel, on the TI, you have to multiply the divider value by 15, because the actual frequency will be 15 times lower than you specified.

 

Musical notes are logarithmic, so you can't just start with the note frequency and divide by 15. It's easier to start with the tick rate. Going back and forth between tick rates and musical notes is a bit hairier than I want to get into, but suffice to say in the end, your tick rate is limited to a value from 1-1023. The math to go between tick rate and Hz on the TI chip (this is TONE generator Hz) is:

 

ticks = 111860.8 / Hz

or

Hz = 111860.8 / ticks

 

Then you can divide Hz by 15 if it's on the periodic noise channel. That divide by 15 is why it's out of tune.

 

This is because the SMS sound chip uses a divide by /16/, instead of /15/ as on the TI. So all your pitches are slightly out of tune if created with that player.

 

Thank you, this this really helpful to know. A divide by 16 would have been more sensible since this lowers the frequency exactly 4 octaves while a divide by 15 brings it out of tune, right? [edit: or is that wrong because it's tick rates and not frequencies?]

 

I know you're not going to update the mod player any more, but I could in theory make a small conversion routine that takes a epsgmod file and multiplies the tick rate by 15/16 for the relevant nodes. I could also add it to the player code, but I guess that would be slow.

Thank you, this this really helpful to know. A divide by 16 would have been more sensible since this lowers the frequency exactly 4 octaves while a divide by 15 brings it out of tune, right? [edit: or is that wrong because it's tick rates and not frequencies?]

 

I don't know MUSIC theory very well, but I believe you are correct, since I found that doubling the frequency raises your octave by one (and tick rates are directly correlated to frequency, so it's the same concept with a different measurement). That actually might explain /why/ they switched to a 16-bit noise shift register. I always kind of wondered.

 

I know you're not going to update the mod player any more, but I could in theory make a small conversion routine that takes a epsgmod file and multiplies the tick rate by 15/16 for the relevant nodes. I could also add it to the player code, but I guess that would be slow.

 

hm. Well, the math can be as simple as one shift (for the multiply by 16) and one division (to divide by 15). Since the maximum tick rate is >3FF, there's no danger of overflow, and one division per note won't kill performance. The problem is knowing when to apply it - you have to apply it when the noise channel is active and not when the tone channel is playing.

 

In looking at the playback code.. yeah.. it would be a lot simpler to apply it with a little PC tool to convert the output. My VGM converter does a raw conversion of the input so it always knows the state of every channel, that makes it easy... but you can just "play" the sound file back and remember when periodic noise is playing. (Optionally, if you know you never play music on voice 3, you can just do it to all notes.)

 

The tracker does support a 'detune'.. maybe that would help?

 

 

 

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...