Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Sample audio on C64, how to do a better conversion?
2020-07-17 08:00
zzarko

Registered: Feb 2003
Posts: 65
Sample audio on C64, how to do a better conversion?

Hi all!

Recently I have found about c64kernel and a movie player based on that code that uses 16MB REU as a storage. (https://github.com/vbguyny/c64kernel). Movie is based on Koala image sequences, and audio is 4bit samples, where playing routine is based on codebase64 code (https://codebase64.org/doku.php?id=base%3Anmi_sample_player) There is a manual that describes how to make a movie at
https://github.com/vbguyny/c64kernel/blob/master/doc/HowToMakeA..

Anyway, I wanted to make an automatic conversion from a movie file to format for that player and have come up with this Bash script:
https://bitbucket.org/zzarko/c64movie

For audio conversion I did this: converted audio to 8-bit unsigned raw format, and then extracted higher 4 bits from every byte. The result isn't bad, but it is somewhat worse than what "Wav to digi" program can produce (Wav to Digi). So, my question is what could I do to make audio conversion better?

I know that there are more advanced audio and video player routines by magicians around here (I enjoy watching their work!), but nevertheless, if you have some advice, please tell.

One of conversions I did this way:
https://www.youtube.com/watch?v=LN3y1koqi3A
 
... 7 posts hidden. Click here to view all posts....
 
2020-07-17 21:06
Mixer

Registered: Apr 2008
Posts: 418
Mahoneys Music Run/Stop technical details pdf should have the data IIRC.
2020-07-17 21:59
Durandal

Registered: May 2006
Posts: 30
The Python conversion code we're using for streaming on the Turbo56K BBS, while not specifically taking into account any non linearity of the SID, it does a decent job in most cases.

This code accepts most audio file formats

import librosa
import numpy

y, sr = librosa.load(filename, samplerate, True) #load file

numpy.clip(y, -1, 1, y) #Clip samples
norm = librosa.mu_compress(y, mu=15, quantize=True) #mu-compress and quantize to 16 different values
norm = norm + 8 #offset the samples values
									
bin8 = numpy.uint8(norm) #convert to 8-bit unsigned


bin8 contains 4-bit sample data in the lower nibble of each byte.
2020-07-17 23:51
Krill

Registered: Apr 2002
Posts: 2804
Quoting Durandal
[...]not specifically taking into account any non linearity of the SID[...]
[...]mu_compress[...]
Okay, so my takeaway is that applying μ-law is better than using a linear mapping, no matter if specifically tweaked for SID or not.
2020-07-18 00:07
chatGPZ

Registered: Dec 2001
Posts: 11088
My guess would be its just the implied lowpass that "does the job" in this case
2020-07-18 00:17
Krill

Registered: Apr 2002
Posts: 2804
Hmm, lowpass or not is mostly a function of catering to a specific sample frequency (downsampling in this case), not reducing bit depth, i thought?
2020-07-18 00:36
chatGPZ

Registered: Dec 2001
Posts: 11088
Sure, that... and perhaps a bit of log compression too, which µ-law basically is.
2020-07-18 23:49
zzarko

Registered: Feb 2003
Posts: 65
Thank you all for answers, and especially to Durandal, his conversion gives better results than mine.

I would like to ask Durandal would it be OK to use his conversion code as part of my script, with given credits of course?
2020-07-19 00:24
Durandal

Registered: May 2006
Posts: 30
Sure you can use it, I wouldn't have posted it otherwise ;)
2020-07-29 22:18
zzarko

Registered: Feb 2003
Posts: 65
Thank you all for the help! Author of VBGuyNY C64 Kernel also made some modifications to the player code, now video loops when it finishes and code is more stable. Conversion script was also updated and cleaned.

Also, all this has made one of my dreams come true - State of the Art on C64 :)

https://www.youtube.com/watch?v=QAf5JsIje2Y
2020-07-30 04:46
Kruthers

Registered: Jul 2016
Posts: 21
Downloaded the examples and OMG! Thought I was the only who knew about Sledge Hammer...
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
MAT64
zscs
LordCrass
New Design/Excess
Nordischsound/Hokuto..
Brataccas/HF
LDX#40
iAN CooG/HVSC
Guests online: 314
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 No Bounds  (9.6)
6 Comaland 100%  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 Party Elk 2  (9.7)
2 Cubic Dream  (9.6)
3 Copper Booze  (9.5)
4 Rainbow Connection  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Onscreen 5k  (9.5)
7 Dawnfall V1.1  (9.5)
8 Quadrants  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Nostalgia  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Organizers
1 Burglar  (9.9)
2 Sixx  (9.8)
3 hedning  (9.7)
4 Irata  (9.7)
5 MWS  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.049 sec.