All posts by Martin Stoppacher

Using trigonometric functions in R

R uses radiant as input for trigonometric functions.

Now we can plot the function.

And by playing with the functions we get a funny graphic output.


And if we include the tangent, the graphic looks like this:

 

Audio file conversion with afconvert (mac)

I was looking for a simple and elegant way to convert a high amount of audio files from one format (.caf) to another (.aif). The solution i found is a very elegant one and also comes included with your operating system – if using a MAC.

And now here is the most amazing part. It is super easy to execute the conversion of multiple files by just one command line.

or to run through subdirectories:

or with recursion by using find:


Key linear PCM format
LE Little Endian
BE Big Endian
F Floating point
I Integer
UI Unsigned integer
8/16/24/32/64 Number of bits

Number of bits Information Size
8 256
16 65536
24 16777216
32 4294967296
64 18446744073709551616

Audio file and data formats: data_formats:
‘3gpp’ = 3GP Audio (.3gp) ‘Qclp’ ‘aac ‘ ‘aace’ ‘aach’ ‘aacl’ ‘aacp’ ‘samr’
‘3gp2’ = 3GPP-2 Audio (.3g2) Qclp’ ‘aac ‘ ‘aace’ ‘aach’ ‘aacl’ ‘aacp’ ‘samr’
‘adts’ = AAC ADTS (.aac, .adts) ‘aac ‘ ‘aach’ ‘aacp’
‘ac-3’ = AC3 (.ac3) ‘ac-3’
‘AIFC’ = AIFC (.aifc, .aiff, .aif) I8 BEI16 BEI24 BEI32 BEF32 BEF64 UI8 ‘ulaw’ ‘alaw’ ‘MAC3’ ‘MAC6’ ‘ima4’ ‘QDMC’ ‘QDM2’ ‘Qclp’ ‘agsm’
‘AIFF’ = AIFF (.aiff, .aif) I8 BEI16 BEI24 BEI32
‘amrf’ = AMR (.amr) ‘samr’
‘m4af’ = Apple MPEG-4 Audio (.m4a, .m4r) ‘aac ‘ ‘aace’ ‘aach’ ‘aacl’ ‘aacp’ ‘alac’
‘caff’ = CAF (.caf) ‘.mp1’ ‘.mp2’ ‘.mp3’ ‘QDM2’ ‘QDMC’ ‘Qclp’ ‘Qclq’ ‘aac ‘ ‘aace’ ‘aach’ ‘aacl’ ‘aacp’ ‘alac’ ‘alaw’ ‘dvi8’ ‘ilbc’ ‘ima4’ I8 BEI16 BEI24 BEI32 BEF32 BEF64 LEI16 LEI24 LEI32 LEF32 LEF64 ‘ms\x00\x02’ ‘ms\x00\x11’ ‘ms\x001’ ‘paac’ ‘samr’ ‘ulaw’
‘MPG1’ = MPEG Layer 1 (.mp1, .mpeg, .mpa) ‘.mp1’
‘MPG2’ = MPEG Layer 2 (.mp2, .mpeg, .mpa) ‘.mp2’
‘MPG3’ = MPEG Layer 3 (.mp3, .mpeg, .mpa) ‘.mp3’
‘mp4f’ = MPEG-4 Audio (.mp4) data_formats: ‘aac ‘ ‘aace’ ‘aach’ ‘aacl’ ‘aacp’
‘NeXT’ = NeXT/Sun (.snd, .au) I8 BEI16 BEI24 BEI32 BEF32 BEF64 ‘ulaw’
‘Sd2f’ = Sound Designer II (.sd2) I8 BEI16 BEI24 BEI32
‘WAVE’ = WAVE (.wav) UI8 LEI16 LEI24 LEI32 LEF32 LEF64 ‘ulaw’ ‘alaw’

access file systems – recursive function r

I was playing around with recursion. This is a short snippet about iterating through folder structures. It shows all directories and subdirectories within a file path.

This is the output from a test directory:

 

Plane crash data

 

My Sounds (Freesound.org)

This is a collection of my sounds at freesound.org. I try to keep the list up to date but sometimes there are more sounds available on freesound therefore please check out my freesound account and freesound in general. “Freesound is a collaborative database of Creative Commons Licensed sounds. Browse, download and share sounds.” – freesound.org

bifurcation tree with R

Lately i was exploring the logistic map function because i was fascinated again how chaotic behavior can arise from very simple circumstances (i.e. a rather simple equation).
Of course, i learned about this in school but never got a chance to write some code.
So here it is. 🙂

And here is some of the code i wrote:









Creating sounds out of financial data.

 

 

Creating a beat frequency interference with R

A beat frequency is a mix of two frequencies which are very close to each other but not similar. The trick is that they are to close to each other to be separated by the human ear as two distinct frequencies, thus generating  a single tone with fluctuating amplitude behavior – a periodic change in volume. In Fact this effect just appears within the human brain, therefore the two tones can be measured physically by using the appropriate instruments. Further more the effect also works in a binaural situation where one ear can only hear one frequency respectively.

The following graphic shows two almost similar sinus waves, one at 440 Hz and one slightly below, at 435 Hz. The sound data is produced for exactly 2 seconds of time at a 44100 Hz sample rate, giving us 88200 sample points for 2 seconds. The first three demonstrations of the graph show only the beginning of the wave whereas the last one presents the combination of both signals for the complete 2 seconds.

435Hz-440Hz-beatsfrequency-4plots

Basically a combination of two sinus waves can be mathematically represented by:

f3And if we assume that both amplitudes are the same we get the reduced form by:

f2

It is interesting to understand that the resulting frequency of the beat, i.e. the recognized periodic fluctuation of volume, is given by:

f7

 

440Hz – Sinus – 2 seconds

435Hz – Sinus – 2 seconds

435 & 440Hz – Sinus – resulting beat frequency – 2 seconds

The oscillations in this post are simple created in R by using standard mathematical functions in combination with the time series package in R. In addition the seewave package is used to store the sinus waves as a .wav file to the system.

The time series package handles data as equispaced points in time. This is in accordance with the sampling of continuous sound signals as the become digitized. A common used sampling frequency for CD quality is 44.1 kHz which results in 88.2k sample points for a length of 2 seconds.

For ease of use the summation of the amplitude 2a becomes reduced to a by division.

The graphical representation of the sound can easily be saved as a .jpg file to the system.

In addition to the sample above we can also see and hear what it is like when the beat effect fades out and the brain starts to recognize two different tones. Therefore the next few examples present the resulting wave after summing two different frequencies, where one is always 440 Hz.

beatsfrequency-9examples

 

435 & 440Hz – Sinus – resulting beat frequency – 2 seconds

425 & 440Hz – Sinus – resulting (beat) frequency – 2 seconds

415 & 440Hz – Sinus – resulting (beat) frequency – 2 seconds

405 & 440Hz – Sinus – resulting (beat) frequency – 2 seconds

395 & 440Hz – Sinus – resulting (beat) frequency – 2 seconds

485 & 440Hz – Sinus – resulting (beat) frequency – 2 seconds


  • http://cran.r-project.org/web/views/TimeSeries.html
  • http://cran.r-project.org/web/packages/seewave/index.html

Latex code for the Formulas above: