Jump to content
IGNORED

Sound list ripper


Asmusr

Recommended Posts

Since upgrading to Java 7 R71, I have found that the last row of a sound list will get stuck playing continuously and I am unable to stop it or start another sound. Oddly, it seems to affect only some imported lists and not others, but repeatedly.

 

Sounds like an issue I fixed in the latest version, see post #1.

Link to comment
Share on other sites

Playing around tonight with SLR. I have couple of questions/requests:

 

1) Copy and paste: it appears you are just using a pointer and number of rows when CTRL-C is hit, as if I make a "template" section and copy it, then make changes to that section, when I paste the section with the changes gets pasted. Am I right? Is it possible to have a copy which actually copies so I can use the clipboard as a template?

 

2) Can an option to show row numbers be put in?

 

3) Can an option to remove a single list from the display be added?

Link to comment
Share on other sites

I have been actually taking a little bit of an intellectual break from Arkanoid and got a wild hair. I transcribed* the opening theme of the Commodore 64 game Trolls and Tribulations, "March of the Trolls." Of course, the TI does not go low enough for the bass line so I took some license there (amongst a couple of other places which are virtually imperceptable unless you are Cylon.)

 

This is a raw binary export from SLR so you will import it to play.

 

* Using the original SID, I used a program called SID2MIDIw which can export a SID to MIDI or text. The text is in a tracker format with 1/60th second intervals. Pretty handy. At some point I would like to create a SID-to-Sound List converter. Later. Much later.

 

Edit: Removed some redundant tone values, and fixed several one-off values which were calculated incorrectly in my spreadsheet.

Trolls and Tribulations - Intro Theme (March of the Trolls).bin

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Rasmus, is there source for SLR? I was thinking tonight about making a modification to knock the sound table down two octaves to emulate the F18A's GROMCLK setting.

 

Here you are. You can set the clock in the call to the constructor of the SN76489.

 

    /**
     *  Init SN76496 to Default Values.
     *  
     *  @param clockSpeed    Clock Speed (Hz)
     *  @param sampleRate    Sample Rate (Hz)
     */


    public void init(int clockSpeed, int sampleRate)
    {
        // Master clock divided by 16 to get internal clock
        // e.g. 3579545 / 16 / 44100 = 5
        clock = (clockSpeed << SCALE) / 16 / sampleRate;
       
        regLatch = 0; 
        clockFrac = 0;        
        noiseShiftReg = SHIFT_RESET;
        noiseFreq = 0x10;

...

SoundListRipperSource.zip

Link to comment
Share on other sites

Imported into Eclipse.

 

attachicon.gifI-Have-No-Idea-What-I-am-Doing-2.jpg

 

Can you tell me which class makes the call? I am hoping I can just modify and compile that class, then slip it into the jar.

 

Sorry for not getting back to you before - I have had a really busy week at work.

 

In SoundListPlayer.java:

public void setMasterChannel(MasterChannel channel) {
    ...
    psg = new SN76489();
    ((SN76489) psg).init(PsgDeviceChannel.CLOCK_3_58MHZ / 2, MasterChannel.SAMPLE_FREQUENCY); // Add this to divide clock by 2
    ...
Link to comment
Share on other sites

 

 

Sorry for not getting back to you before - I have had a really busy week at work.

 

In SoundListPlayer.java:

public void setMasterChannel(MasterChannel channel) {
    ...
    psg = new SN76489();
    ((SN76489) psg).init(PsgDeviceChannel.CLOCK_3_58MHZ / 2, MasterChannel.SAMPLE_FREQUENCY); // Add this to divide clock by 2
    ...

 

 

No worries. I appreciate any time you can spare.

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

I finally got the third-voice-to-periodic-noise ratio correct (up three octaves, down one semitone.) So I have been able to play a little more.

 

Ghosts 'n' Goblins stage start theme.

 

Ghosts n Goblins - Start Stage.bin

(new version, fixed a few durations and the ending "bu-bummmmm." Still plays a tad fast.)

 

(I know, I should be working on 4Anoid ;))

  • Like 2
Link to comment
Share on other sites

More Ghosts 'n' Goblins sounds in this post.

 

Since you refuse to listen to reason and use proper tools, the least I can do is to allow you to export the music in a format that can be played back on other devices. So the latest version available in post #1 contains a wav file export option. Note that only one sound list per wav file is supported.

  • Like 3
Link to comment
Share on other sites

 

Since you refuse to listen to reason and use proper tools, the least I can do is to allow you to export the music in a format that can be played back on other devices. So the latest version available in post #1 contains a wav file export option. Note that only one sound list per wav file is supported.

 

What proper tools? Your SLP is the closest thing to a tracker I know of for the TI and, while difficult to use that way, it works just fine for me and my hard-headedness. Plus with the Perl script I am working on I can easily manipulate the resulting lists.

 

I do appreciate the wav file export, thank you! Now I can more easily make tones for phones or system sounds from existing carts, disks, etc., as well as my own lists. Besides, I figured that by exporting my lists to the .bin format I could get SLP into more peoples' hands ;)

 

(As an aside, the interleaved format of the ISR sound lists does seem to make playback very simple, I think a format like SID where each channel has its own stream would make composition much easier.)

Link to comment
Share on other sites

Thanks to the wav export function you can "see" what the output of our TI looks like. Very rigid, almost sterile looking.

 

Here are the first few tones of my Ghosts 'n' Goblins music file in Audacity after amplification. You can definitely see the discrete steps of attenuation here as the tones have attenuation of 2 for the attack and 6 for the release. The first two groups of lines are the period noise. Assuming the output library accurately emulates the output of the 9919 it is interesting to note the noise is all positive while tones are mostly positive, whereas the recorded output of most MAME games is all positive.

 

post-27864-0-74398000-1426961008_thumb.png

Link to comment
Share on other sites

I consider the MOD2PSG2 tracker together with Tursi's VGM converter and player a much better choice than my basic tool. I have been using it already for Titanium, Sabre Wulf and the New Year demo music, and I don't think I will ever go back to sound lists for anything but simple sound effects. The ability to define 'instruments' makes a big difference, and bass notes using periodic noise do not have to be adjusted.

 

I think the TMS9919 emulation used in SLR is pretty accurate, but the wave form it generates is a perfect square whereas I think a real TMS9919 waveform would have ripples and stuff around the edges. I don't know about the polarity difference - it's possible I have changed something in the conversion to wav.

Link to comment
Share on other sites

Right, I addressed the converter(s) in my post putting my neck out for conversions*. Yes, a conversion tool would be easier, but it does at least two things: first, it relies almost exclusively on someone else's work, unless you have a tracker for that format; secondly, it takes away from the creative aspect of actually creating the sound list as per my mind's eye; lastly, when I looked at Tursi's conversion tool it requires a special player, whereas my goal is to be compatible with the native ISR and compatible players (Matt's XB player and retrocloud's Spectra2.)

 

Now, so I do not come off sounding elitist, purist, or like an ass, I am by no means saying my way is better or any more creative, just that I prefer the feel that I get from doing it this way.

 

* Gyruss is your request?! One of the longest and most complex arcade themes of the era I can think of! heheheh But it is one of my favorites and I expect it to be VERY fun.

Link to comment
Share on other sites

Gyruss is the best :)

 

Sound list format is little more than a raw stream of the bytes to send to the PSG. I totally understand that this is the standard sound format for the Ti-99/4A and you want to stick to it, but in my humble opinion the format sucks.

 

This is the process I use with Tursi's player:

 

- First I create my VGM music in MOD2PSG2

- Then I Tursi's Windows tool to convert the VGM into TI compressed format. Takes about 10 secs.

- Then I turn the binary file into a assembly DATA statements. I have my own little Java program for this that I'm happy to share.

- In my assembly project I include Tursi's player and the sound file, and I call the @stinit procedure.

- Finally, I call the player every frame @stplay, but this is my own hack. You can also let the IRS hand it as Tursi intended.

Link to comment
Share on other sites

I totally understand that this is the standard sound format for the Ti-99/4A and you want to stick to it, but in my humble opinion the format sucks.

 

Oh, no, it does suck. It is very efficient, though. Even though storage-wise a sound list can be very expensive, it requires only a single two counters in PAD RAM to run the list (current location pointer and duration countdown) with a couple of other status bits. It sucks for creating lists because of the interleaving of all four channels into a single stream. The first part of a tune I lay down, in most cases a bass line, I often have to divide durations up to fit in the melody or accompaniment or to accommodate a tone's trailing attenuation. It is also very easy to get lost with a big list which is why I will usually divide it up into parts and let SLR combine them when I export by removing the last 0-duration line when I export.

 

There are much better formats out there. Off the top of my head, SID and MOD spring to mind. SID is three discreet streams, one for each channel, and each stream is mostly register values for the SID with other information for the player. MOD has the concept of patterns and, but its nature, instruments. The SID editors I have used in the past were excellent, Stereo SID Editor by far being my favorite.

 

While I have been working on my lists in the standard ISR stream format, I have been poking away at my own player comprised of the pattern and instrument model. I have not decided if the raw format will be a single stream or separate streams for each channel, but largely with a good editor that will not matter. I plan to be able to define up to 16 "instruments" which are essentially just patterns for a very rudimentary A-D-S-R envelope (resolution of one jiffy) spanning one to three tone channels, or spanning channel three and the noise channel. The instruments will be indexed within each pattern the player will simply keep track of each channel individually, the instruments are of course preemptive, and each pattern will be referenced from what should be a compact pattern list.

 

The problem is the editor. I lack the skill to easily throw one together, but I will give it my best shot once I get there.

Link to comment
Share on other sites

Assuming the output library accurately emulates the output of the 9919 it is interesting to note the noise is all positive while tones are mostly positive, whereas the recorded output of most MAME games is all positive.

 

None of them are very accurate in my experience. I've spent a lot of time measuring the output of the actual console to improve Classic99's playback. (In the end, I left it inaccurate too, and I'll briefly cover why).

 

First thing is that the real output is very noisy, in three ways. First, the 99/4A just throws a crapton of noise onto the wire - up to a volt's worth in many cases!

Second, the 2dB attenuation has a 50% plus or minus error per the datasheet, so each step is anywhere from 1db to 3db attenuation.

Thirdly (and this is documented and emulated in some libraries), the chip leaks, so all the waveforms drift towards zero rather than being square. ;)

 

I measured the attenuation as best as I could on my scope, and got ranges from roughly 0 to 720mV at the TI output. (Again, sound chip emulators emulate the sound chip.. I don't think /any/ attempt to include the analog circuitry between the sound chip's output pin and the output of the computer). I saw the center point near 1v, so, nothing ever went negative. Also, for attenuation, I saw the highest voltage stay constant and the lowest voltage increase (actually moving the center point).

 

The SMS Power documentation says that noise never goes negative, but my older measurements said that white noise does, and periodic noise doesn't. I still need to reverify that. In fact, all this still needs more testing to be certain I didn't screw something up.

 

In the end, all that matters is the shape and the amplitude, not the center point. Leaving the center point at 0 volts actually plays nicer with the host system, avoiding clicks on startup and the like. :)

Edited by Tursi
  • Like 2
Link to comment
Share on other sites

Just to be aware, the export does not always function properly. A few different sound lists export distorted or as noise. I have attached a couple of examples. I am NOT worried about you fixing it considering it was a big favor.

 

I converted a couple to MP3 to save space/time. The original wav files were corrupted, already.

Trolls and Tribulations - Theme (ti99).mp3

Munch Man - Clear Level.wav

The Attack - Main Theme.mp3

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