<< Chapter < Page Chapter >> Page >

The program ignores:

  • Blank lines that result in a string with a zero length
  • Comment lines that begin with a /
  • Lines that begin with a space

Conversion to audio

The data values are converted to audio frequencies and presented as an AudioGraph. The data is biased and scaled so as to make maximum use of the audio dynamicrange from 220 Hz to 1760 Hz inclusive.

If the data contains both positive and negative values, the data is adjusted so that the most negative value is emitted at220 Hz and the most positive value is emitted at 1760 Hz. The frequency that represents zero will fall somewhere between those extremes.

A unique sound is heard whenever a value of zero occurs in the data. It consists of a weightedsum of three frequencies one octave apart centered on the frequency that represents zero.

Three synthetic data items with a value of zero are prepended onto the beginning of the incoming data.They are used to establish the audio pitch for a value of zero on playback.

If the data is all positive, it is biased and scaled so that the minimum value is emitted at 220 Hz and the maximum value is emitted at 1760 Hz. In this case,the frequency that represents zero has little meaning because it is off the bottom of the page, so to speak. It is set at 220 Hz.

An output pulse is heard for each data value. The frequency of the pulse is proportional to the data value. Higher data values result in pulses with ahigher pitch. Lower data values result in pulses with a lower pitch.

The output pulse rate in pulses per second is specified by the user as a command-line parameter. Faster output rates provide a quick look at the data.Slower output rates allow for more detailed audio analysis of the data.

To eliminate the pops and clicks that result from abrupt changes in frequency from one pulse to the next, each pulse is shaped using a linear scale factorthat is zero at both ends of the pulse and maximum at the center of the pulse.

Sound progresses from the left speaker to the right speaker in proportion to the value of x as a percentage of the total number of x values.

The number, the type, and the order of command-line parameters are defined in the comments in the class named MusicComposer10 .

Beginning of the class named AudioGraph01

The class named AudioGraph01 begins in Listing 9 , which includes the declaration and initialization of some instance variables. Listing 9 also includes the beginning of the constructor for the class.

Listing 9 . Beginning of the class named AudioGraph01.
import java.io.*; import java.nio.*;import java.util.*; public class AudioGraph01 extends AudioSignalGenerator02{double[]inputData; double highFreq = 1760;double lowFreq = 220;public AudioGraph01(AudioFormatParameters01 audioParams, String[]args, byte[]melody){ super(audioParams,args,melody);

Read the input text file

Listing 10 reads the input text file to define the function that is to be played or filed as an audio file. The text file must be stored in the subfolder named Data , which is a child of the folder containing the compiled program. The incoming data isinitially stored in an ArrayList object for convenience and later transferred to an array object.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Accessible objected-oriented programming concepts for blind students using java. OpenStax CNX. Sep 01, 2014 Download for free at https://legacy.cnx.org/content/col11349/1.17
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Accessible objected-oriented programming concepts for blind students using java' conversation and receive update notifications?

Ask