Jump to content
IGNORED

New bass approach rediscovered in old song


R0ger

Recommended Posts

6 hours ago, emkay said:

So you're telling me the SID visualizer is really used for POKEY wave recording? Good grieve...

This visualiser is just a universal oscilloscope video renderer. Works with literally anything to showcase pretty waveforms.

  • Like 1
Link to comment
Share on other sites

51 minutes ago, VinsCool said:

This visualiser is just a universal oscilloscope video renderer. Works with literally anything to showcase pretty waveforms.

I bet it would render faster and look cooler if someone would do a Mode D double scanline mode of this!

  • Like 1
Link to comment
Share on other sites

Here are some first tests. It's just one channel for the bass.

 

The first one is just the bass, 3 octaves bellow standard A distortion. It's very naive approach, simply handle only every 8th IRQ.

The second one plays major chord, so you can see (hear) how it's all perfectly in tune. The bass is moved one octave higher.

The color is changed during every IRQ, even those I skip.

 

IRQ1.xex

IRQ2.xex

  • Like 6
Link to comment
Share on other sites

Higher than bass ?

Baritone ?

 

To save a channel for music replay. It still seems better to play "softsynth" style waves instead.

A 200Hz tone needs only 400 Updates. Thanks to the POKEY timers,  it shouldn't be a problem to put that to a whole "bass" playing octave. It's also possible to build "modulation" tones there, by hacking into the generator with the specific speed of the frequency. You won't get a clean PW control, but the basses would gain more "energy".  

Link to comment
Share on other sites

8 hours ago, R0ger said:

Here are some first tests. It's just one channel for the bass.

 

The first one is just the bass, 3 octaves bellow standard A distortion. It's very naive approach, simply handle only every 8th IRQ.

The second one plays major chord, so you can see (hear) how it's all perfectly in tune. The bass is moved one octave higher.

The color is changed during every IRQ, even those I skip.

 

IRQ1.xex 715 B · 12 downloads

IRQ2.xex 745 B · 14 downloads

This is really damn cool! Looking at that PWM through an oscilloscope viewer is very, very satisfying.

Link to comment
Share on other sites

  • 2 weeks later...

Some new progress ! I can now somewhat combine this new bass with RMT. At the moment I use simple approach: I expect RMT to play A distortion on channel 1. I then take the frequency a volume, and play this new bass on channel 1 instead. There is some basic PWM, but there is no control over it, and it is not even reset based on notes in RMT. That will come later.

 

I can use E or C bass in RMT .. and then change the instrument to use A before export.

 

I play the notes 2 octaves below the original frequency.

 

I don't use the naive 'skip 7 play 1' approach anymore. I convert every source wavelength into new 16 bit wavelength.

Let's say I get divisor 9F from RMT. That means wavelength $A0, 4 times that is $280. Which means I should do IRQ with FF divisor twice, and then one IRQ with 7F divisor.

There is still one complication. In some cases I could get realy small divisor in the lower byte. For example if I wanted 201 wavelength. I wouldn't be able to serve the IRQ fast enough. So instead of 2xFF+0 I can do FF+80+80. So I actually use table with 3 bytes for every source frequency. This gives me nicely spaced IRQs, with very little CPU overhead.

 

I'm also after all noises and crackling which can occur. One source was I played RMT in VBI, as usual. That leads to very long NMI handler, which delays IRQ too much. So this example calls RMT from main thread, syncing using VCOUNT. Short DLI or VBI handlers are no problem.

I also use shadow registers for all 6 values I use in IRQ bass, and they are updated only on down edge. Changing them directly disregarding the actual phase of the bass was another source of minor crackling. At the moment it should sound rather clear.

 

I suggest turning off channels 2 and 3 in Altirra, and to turn on the audio monitor, to clearly see and hear what's going on.

 

Please note you still need real HW or Altirra. We discussed Atari 800 IRQ timing with Petr Stehlik for like 2 hours this spring, it's rather clear where the problem is. It just wouldn't be easy to fix, and it might break easy portability to old systems like Atari ST. Who knows, maybe one day ?

 

The song is just some unfinished idea, not even sure how much original it is. I mean I don't know what song it is, but I still have feeling it is some song ?

But it proved useful for this testing. The lowest frequency is about 30Hz. Probably too low. But hey, it's a test.

IRQ.xex

  • Like 7
Link to comment
Share on other sites

1 minute ago, R0ger said:

 

But it proved useful for this testing. The lowest frequency is about 30Hz. Probably too low. But hey, it's a test.

IRQ.xex 3.16 kB · 2 downloads

Sounds very nice. But the Bass is totally powerless compered to the melodic part in your demonstration.

 

It could be really interesting to have a tracker , using this but RMT misses a lot other features as well.

As it enhances the resolution of the bass range, it will be easier to get the musical part in tune.

My latest achievements with RMT .... If the bass had a better resolution, things would get marvelous.

 

 

 

 

Link to comment
Share on other sites

If by 'powerless' you mean low volume, it can be, it depends a lot on the audio system you use. Those are rather low frequencies. TV or cheap earphones will not play it well. You need subwoofer or decent earphones.

  • Like 2
Link to comment
Share on other sites

On 6/20/2019 at 8:31 AM, emkay said:

Because of this feature I was always thinking that POKEY wasn't created to suit any 8 Bit computer. POKEY works well with a CPU as a driver. A 2nd CPU in an Arcade machine driving POKEY, some high tone filter behind it, to get real great sound experience back in the 70s. In the Atari , as a main sound device, well... you know the limits.

Please name which Atar arcade games in the 70s used POKEYs ?

none did sir as it got out only in 1979. Further IMHO, Atari Coin-op never managed to pull very much from POKEY at all. Centipede is just a number of fairly simple sounds. The best they did was with Star Wars...but they used 4 POKEYS and a TI voice synth controlled by a separate CPU. But ven wth 4 POKEYs they didn’t think of creating true stereo but added a simple fake stereo phase shifting set-up.

nah...POKEY was used meagrely by Atari coin op, but then again, how well was it used in the A8 machines in 1983 ?

Link to comment
Share on other sites

On 7/8/2019 at 10:02 AM, Heaven/TQA said:

sounds good. yeah reminds me Hardbass.

Thanks for mentioning Karolj.

 

I had a listen to this just now and it sounds very nice!

 

If I can give some advice here, to make this into a tool to be used in complex demos and games with screen kernels rather than a standalone demo on its own:

 

Make sure you give an easy option to update the sound during tight screen kernels (no IRQ or DLI). HardBass doesn't dictate how you propagate the sound data into the POKEY and it's very important so that others can use the tool you made. If you can display a HCM or RastaConverter picture while this is playing, that's a very good indication that you have a usable tool on your hand.

Link to comment
Share on other sites

  • 8 months later...

PG made nice song which suffered from standard bass inaccuracies, so I offered him trying to fix it using my bass. I discovered some problems in phase modulation, so the song only uses simple 50% square wave, accurate frequency being the only advantage.

 

Check PG's thread here:

 

In my previous tests, I used additive phase modulation. So for let's say wavelength of 500 cycles I would use X cycles for high output, and then 500-X for low output. Problem is the sound will be very dependent of the frequency, and it just didn't sound right. There is also some limit. If I use X=100, I can't play shorter wavelengths than 100. So my next idea is to use relative phase modulation. The phase will be set simply in range 0-1 (ie. 0-255). High output for wavelength*X and low output for wavelength*(1-X). I will have to do fast 16 x 8 bit multiplication for every new note.

A bit extreme, but speed-wise it's not big problem, I will use fast multiplication I used in my 3D engine. It just needs 2k of tables. But at the moment, that's just a plan for the future.

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