Jump to content

Photo

HCM & HARDBASS tools


29 replies to this topic

#26 antrykot OFFLINE  

antrykot

    Space Invader

  • 22 posts

Posted Sat Dec 16, 2017 9:59 AM

Hi Sandor,

 

Could you explain what kind of lowpass filter is Hardbass using, and what simplification did you use in order to implement it on Atari?

 

Also, in your Java code SAMPLE_RATE is defined to be 1950 Hz, why not a more accurate value 1773447.0 / (8 * 114), (around 1944.57 Hz)?


Edited by antrykot, Sat Dec 16, 2017 10:00 AM.


#27 Sandor / HARD OFFLINE  

Sandor / HARD

    Space Invader

  • Topic Starter
  • 42 posts
  • Location:Dublin, Ireland

Posted Sat Dec 16, 2017 4:03 PM

Hi Sandor,

 

Could you explain what kind of lowpass filter is Hardbass using, and what simplification did you use in order to implement it on Atari?

 

Also, in your Java code SAMPLE_RATE is defined to be 1950 Hz, why not a more accurate value 1773447.0 / (8 * 114), (around 1944.57 Hz)?

 

Hello,

 

Thanks for your questions.

 

> Could you explain what kind of lowpass filter is Hardbass using, and what simplification did you use in order to implement it on Atari?

 

It's not a decent/standard low pass filter anymore as it's over simplified.

First I experimented with FIR and IIR filters and various waveforms at around 16KHz in Java at 4bit.

Of course I got amazing results. Then I started to lower the frequency and when I got to the real frequency I wanted to use it turned out that multiple waveforms made no real sense and the different filter implementations & configurations all sounded kind of the same at this low frequency.

So I got the idea to drift away from a proper filter implementation as it was very resource hungry (they used multiple history values and had to re-calculate some values for their sample calculation each time you set the cutoff frequency).

I thought I'd try a single history value and simplifying the reconfiguration step into taking the scaled down values & the new value from a simple short lookup table. (also simplified the number of steps at which I let cutoff set from 256 to 16 to save memory as it gave me similar results anyways)

Then I realized this still sounded something like the lot more expensive proper filters I had implemented at this low frequency.

So that's what I implemented in assembly and that's what became HARDBASS.

 

> Also, in your Java code SAMPLE_RATE is defined to be 1950 Hz, why not a more accurate value 1773447.0 / (8 * 114), (around 1944.57 Hz)?

 

I just calculated it as 50 frames * 39 updates (there's 39 char lines per PAL frame if you count all invisible char lines = 312 scan lines).


Edited by Sandor / HARD, Sat Dec 16, 2017 4:04 PM.


#28 _The Doctor__ OFFLINE  

_The Doctor__

    River Patroller

  • 3,987 posts
  • Location:10-0-11-00:02

Posted Sun Dec 17, 2017 3:19 AM

and there is the first clue to something to change for NTSC to work,

I did notice that in PAL the slightly higher rate works out due to some cycling and other things so it really does sound as it should, even if you take something to the point of almost breaking it... as you pass that point you will here it affect the sound and strange noises will occur if you try to do way too much yet it tolerates it... I do like the fact that the machine will crawl rather than crash or wipe itself and other things out when you reach that point.... that allows you to go back and fine tune whatever you are brewing...



#29 antrykot OFFLINE  

antrykot

    Space Invader

  • 22 posts

Posted Mon Dec 18, 2017 3:55 PM

Thank you for your answer. I am going to rewrite some part of your Java implementation into C++ to understand it better and experiment with it.


Edited by antrykot, Mon Dec 18, 2017 4:21 PM.


#30 miker OFFLINE  

miker

    Stargunner

  • 1,855 posts
  • Stay Atari!
  • Location:Warsaw, Poland

Posted Thu Jun 14, 2018 11:59 AM

I've recently tried to build app with that gradle.
Unfortulately I got this

c:\Users\mikerro\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst\gradle-2.10\bin>gradle --info
Starting Build

FAILURE: Build failed with an exception.

* Where:
Initialization script 'C:\Users\mikerro\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst\gradle-2.10\init.d\build.gradle' line: 21

* What went wrong:
A problem occurred evaluating initialization script.
> Could not find method task() for arguments [{type=class org.gradle.api.tasks.Delete}, clean, build_2s8hpkpnry4hx2zjyrrk7fzc1$_run_closure3@18d7714] on build.

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Total time: 2.751 secs

c:\Users\mikerro\.gradle\wrapper\dists\gradle-2.10-all\a4w5fzrkeut1ox71xslb49gst\gradle-2.10\bin>

I put in init.d directory following files:

 

2018-06-14  19:57    <DIR>          .
2018-06-14  19:57    <DIR>          ..
2017-11-25  18:21             1˙032 .gitignore
2018-06-14  19:50    <DIR>          .idea
2018-06-14  19:50    <DIR>          app
2017-11-25  18:21               498 build.gradle
2018-06-14  19:57                 0 dir.txt
2018-06-14  19:50    <DIR>          example
2018-06-14  19:50    <DIR>          gradle
2017-11-25  18:21               855 gradle.properties
2017-11-25  18:21             1˙471 README.md
2017-11-25  18:21                15 settings.gradle
               6 File(s)          3˙871 bytes
 

Am I doing something wrong?


Edited by miker, Thu Jun 14, 2018 12:02 PM.





0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users