wood burning stoves 2.0*
The moose likes Other JSE/JEE APIs and the fly likes Could setting ByteArrayInputStream as InputStream deteriorate sound quality? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Other JSE/JEE APIs
Bookmark "Could setting ByteArrayInputStream as InputStream deteriorate sound quality?" Watch "Could setting ByteArrayInputStream as InputStream deteriorate sound quality?" New topic
Author

Could setting ByteArrayInputStream as InputStream deteriorate sound quality?

john price
Ranch Hand

Joined: Feb 24, 2011
Posts: 495

The music is sent through a server. The music is received by a client. When all the music has been received, it sends it in a byte array (byte[]) to the following method :


Could the following line deteriorate the sound?


I am asking this because when it is sent through the server to the client and played, it has bad quality to the sound. I have posted this in different forums on Coderanch (one I believe, possible two). The difference is that this is asking a different question (about the ByteArrayInputStream). I am just trying to cover all my bases and figure out why the sound is so bad. I felt this belonged here because this is about sampled audio specifics.


“Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.” (Mosher's Law of Software Engineering)
“If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger Dijkstra)
Tina Smith
Ranch Hand

Joined: Jul 21, 2011
Posts: 171
    
    5

What sound format is the sound in originally?

Just to give an example, a WAV file (raw audio) has each sound sample encoded as a signed short (16 bit integer). The value of the sample is dependent on the volume of the sound at that point in time. I could see sound getting messed up if someone were to try to play each sample of sound as two samples (i.e. encode a wav file in an array of bytes). (I've never actually tried to do this, so I don't know what it would sound like.)

Have you tried writing the byte stream out to file and playing it with a media player? That should help you isolate the problem, whether the songsToPlay variable contains bad data, or if, as you suppose, the ByteArrayInputStream is somehow at fault here.


Everything is theoretically impossible, until it is done. ~Robert A. Heinlein
john price
Ranch Hand

Joined: Feb 24, 2011
Posts: 495

Thank you for your suggestion. This is what I put in my code :

reRoute method :


I tried it and it still sounded really bad. It's not with reading it. It's with the network transfer. Thanks for you suggestion. I can now cross this off the list.

EDIT : I just thought, I'm saving the incoming bytes in a StringBuilder. Maybe that is the issue. I'm going to make a new post in the I/O section about StringBuilder to Bytes. Hopefully, that will be the problem and I will somehow be able to fix it.

Thanks again for your help,
John Price
 
Consider Paul's rocket mass heater.
 
subject: Could setting ByteArrayInputStream as InputStream deteriorate sound quality?
 
Similar Threads
Java sound: how to play a file?
Send, receive, and play music files through network.
Data loss during file transfer
JAR + Including Files
How to receive/send byte array properly