Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Recommended Posts

The sound card is added by Computronics, a wonderful addon for OpenComputers. There are a few who actually know what it does. Even less people are able to use it. No one dares to understand how it works, or so I hope.

Anyway, it appeared a few years (?) ago, and is still mostly undocumented. There is a page in the in-game manual, which fails to explain how great the card is. Of course it does! It has a heap of different methods, which you can use to cast many crazy magics to make the sound card sound, and it's impossible to teach someone to do magic by reading a single page.

OK, I'm serious now. Last year I managed to understand how to use it, and even wrote a few posts about that. In Russian. Half a year later, I translated them to English. And now I thought of posting a topic here so that you could read them, too.

Here's the link.

The first two parts are all about basic things, like getting simple sounds, ADSR, and modulation. The third part features a little bit more complex things, like complex numbers and Fourier transforms. I tried to keep it simple, so I could get something wrong. If so, please leave a comment there pointing out the mistake. Grammar fixes are also highly appeciated.

Share this post


Link to post
Share on other sites

i know you said to post comments on the github thread but (am too lazy to make a account also you'll see it faster here - i think)

 

so the sound card can play wav files?! omg, thats amasing

i'll try it out :D

http://test.noahtg.com/theAlienIsStealingCows.mp4

all right yeah i can sell this as an alien sound efect :D

 

http://test.noahtg.com/yayItworksKindof.mp4

omg this sounds like songs this time yay! altho it sounds like there is running a retro space movie from the 1970 in the background :D

 

http://test.noahtg.com/andAliensAgain_SAD_.mp4

"and there goes a nother cow"

-noahthegame 2018

sems the gymnopedie no.1 is a little too much for it

the yayItWorksKindof is a melody from kong fu panda

 

 

so perhaps its a wrong setting? i'm conferting the wavs from mp3 files altho they sound currectly on my irl music player thingy tho

a simple answer chould be that the program/sound card just can't handle such adv. melodys? maybe?

 

 

 

 

Share this post


Link to post
Share on other sites

The last chapter mentions briefly the biggest problems that make sound reconstructed from the audio data sound bad, and I'm going to try to explain them.

1. The program is quite simple.

It's merely a proof of concept. It doesn't use modulation or non-sine waveforms.

2. Most sounds are complex.

Most sounds I hear are far from being purely sinusoidal. Perhaps it's different for you, or for someone else who happens to read this post. :) White noise is vastly different from a flute, and the flute isn't the same as a guitar. Each instrument has a unique timbre, and even a single instrument can have different timbres depending how performers play it.

Sound can be decomposed into an infinite number of sinusoids that, when summed together, produce the original sound. This is what Fourier transform does, basically. So if you use it to decompose a sound of a violin playing, and filter the output, you'll see, indeed, multiple sine waves that construct the signal, which are called partials. When you reconstruct the sound back, to get better approximation, you need to sum more partials.

3. Unfortunately, the sound card only has 8 channels (by default).

This means that from the set of sinusoids that represent the encoded signal we have to choose eight of them. It's enough for a piano, but for some sounds (such as human speech) it's clearly too few of them, and what you get doesn't even seem to be similar to what was originally encoded.

It's worth noting that if the program also analyzed the spectrum to use different waveforms, it could probably achieve a better resemblance.

4. Furthermore, we discard phase.

The Fourier transform produces two values for each sinusoid: the amplitude, and the phase. The phase is important. For example, if you have two sine waves that differ in phase by π, and have the same frequency and amplitude, you won't hear any sound. These sinusoids are opposite of each other: if, at some point, one has a value of 0.5, the other has the value of -0.5, so, when you sum them, you get zero everywhere.

The sound card has no way of setting phase. It's possible to get the situation as described above: if the first channel accumulates phase of π, and then you initialize the second channel, you may hear no sound at all!

Though, given the limited channel count, the fact that we discard the phase doesn't really make much difference.

But the channel count can be changed in the configuration file.

When I was testing the program, I had tried running it with 64 channels. It was quite noisy, because the program does not filter the output of Fourier transform, and doesn't set phase. It was also glitchy, caused by my computer, which was unable to process everything fast enough. But it was still better than 8 channels.

Share this post


Link to post
Share on other sites
15 minutes ago, Fingercomp said:

White noise is vastly different from a flute, and the flute isn't the same as a guitar. Each instrument has a unique timbre, and even a single instrument can have different timbres depending how performers play it.

the 2# song that sounded got was exeraly a violin and it was a "fake" violin so to speak meaning that the music was made by a midi to mp3 arguritem. thats most likey why it sounds decent becuse it isn't as complicated then if a musision had played it

 

24 minutes ago, Fingercomp said:

and what you get doesn't even seem to be similar to what was originally encoded.

yeah you see the:

17 hours ago, Ta©ti Tac0Z said:

was first proccest by some pcm converter from the 1991 it made the song 3 times as long as it should so thats broken thats why it played score.pcm not score.wav as in the secount actemnt. i used time seaching for a pcm converter becuse i miss inderstond what you said in your github thread

the:

17 hours ago, Ta©ti Tac0Z said:

was the one who worked it was what i said a file who was: midi then mp3 then finaly a wav with the qulaty set to 8000 hz insted of 24000 hz

 

the last one:

17 hours ago, Ta©ti Tac0Z said:

is the one who started sounding bad its a "fake" piano melody (also midi) but belive it or not but i can hear a little of the song in 0:04. anyway

 

so you say that there is not enough sinusoids (channels) to form the sound and that we can't just add infined about of channels at some point the computer whould be too slow or comutronics whould get enough and start playing wriedly or what you said:

42 minutes ago, Fingercomp said:

It was quite noisy, because the program does not filter the output of Fourier transform

 

so there is programs that can make some thing called midi-piano and that is a much more simpere then actuel piano so if i feeded that in your program whould that make any positive resoluts?

Share this post


Link to post
Share on other sites

do you know if some body as made a table or at least a list of all (or at least some) piano notes by fregensy? becuse i don't want to go like

notes = {
{"#A1", some-freg},
{"A1", some-freg},
...
  
--EDIT: this will most liky be better:
notes = {
"#A1" = some-freg,
"A1" = some-freg
...

thats gona take forever :D

 

 

Share this post


Link to post
Share on other sites
1 hour ago, Ta©ti Tac0Z said:

so there is programs that can make some thing called midi-piano and that is a much more simpere then actuel piano so if i feeded that in your program whould that make any positive resoluts?

forget it i hoped there was like a single wave mode

Share this post


Link to post
Share on other sites
22 hours ago, Ta©ti Tac0Z said:

do you know if some body as made a table or at least a list of all (or at least some) piano notes by fregensy? becuse i don't want to go like


notes = {
{"#A1", some-freg},
{"A1", some-freg},
...
  
--EDIT: this will most liky be better:
notes = {
"#A1" = some-freg,
"A1" = some-freg
...

thats gona take forever :D

i found out my self i made a javascript that will create a lua table form a html table:

http://packages.noahtg.com/pianoNotesArray.php

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.