DOC PREVIEW
Columbia COMS W4115 - Language Proposal for Atomic Sound Manipulation Language

This preview shows page 1-2 out of 5 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Team SoundHammer: Language Proposal for Atomic Sound Manipulation Language (ASML) Frank A. Smith [email protected] Tim Favorite [email protected] Introduction Atomic Sound Manipulation Language is Team SoundHammer's solution to the problem of how to make a high level computer language that describes effects that can be applied to sound waves. The idea is to give the programmer access to the most elemental levels of a sound's composition in an easy, intuitive way. This elemental access to sounds is the idea from which our language derives its name, as we intended the language to operate upon sound at the "atomic" level. ASML will feature typical computer language constructs such as loops, if statements, comparators, and arithmetic operators. It will use these features to manipulate new primitive types based upon the most fundamental components of sound: frequency, amplitude, and time. Programmers in ASML will be able to use these statements and operators to produce general purpose and specialized functions to act upon sound waves, their individual frequencies, and other available types. Programmers will then be able to aggregate these functions into even more robust effects that can be intelligently triggered. Team SoundHammer would like ASML to bring power and ease to the manipulation of sound waves in the same way that a language like AWK makes it easy to write powerful text file manipulation programs. We would like to have the user be able to use simple commands to open wav files, isolate frequencies and time ranges from those files, and manipulate the data therein on either a micro or a macro scale. Functional Aspects Functionality Any real world sound is, in essence, a sum of the amplitudes of the range offrequencies audible to the human ear (20 Hz - 20 kHz). Each frequency is represented by a simple sine wave with a unique wavelength. When a dog barks, or a violin plays, many frequencies are emitted, each at different amplitudes, and the combination of these (called a complex wave) is what gives the sound its unique character. Figure 1: Three simple waves followed by a complex wave made up of the sum of the three simple waves (in black) (obtained from http://www.umanitoba.ca/faculties/arts/linguistics/russell/138/sec4/specgraf.htm) So to work with a sound at the most basic level and perform functions such as pitch shifting or high-pass filtering, we must be able to pull out individual frequencies or ranges of frequencies from the complex wave of an input sound, and manipulate them. We'll represent input sound as an indexed list of frequencies, and users will be able to access an individual frequency as in the following example, where we are accessing the 440 Hz frequency: wave f440 = get wave from input at 440hz; Users will also be able to access a given sample time from the input sound, as in thefollowing example, where we access a 1 second sample starting at 5 seconds into the input: wave sec5 = get wave from input at 5000ms to 6000ms; The "wave" type can represent simple waves (one frequency) or complex waves (many frequencies). All waves will be considered 2-dimensional matrices consisting of amplitudes, and indexed by frequency and time. For simple waves, all other frequencies besides the frequency represented by the simple wave will be considered to have an amplitude of zero at all times. Major Characteristics ASML will be implemented as a functional language. The program will accept wav files as input and move the input through a series of functions in order to accomplish the desired effects upon the sounds. We may stray from the notion of a purely stateless language where it allows for better ease of programming. We will also be implementing ASML as a strongly typed language. While we will not be allowing users to create user defined types, we would also like to ensure against users doing actions that do not make sense within the context of sound manipulation. There is no reason for a user to write an equation for an amplitude as a function of a frequency, so we should prevent a user from doing this. • For example: • freq f = 10000hz; • amp a = f/16; Such an equation does not make sense from the perspective of sound manipulation because frequency and amplitude are measurements of two collaborating but unrelated characteristics of sound. What's more significant with respect to why we are making this a strongly typed language is that such a construction is not really useful. The numbers applying to these two different characteristics are on different scales and magnitudes and simply do not play well together for such a function, so we intend to make the program more strict in this respect. However, in case sound designers come up with ideas that we haven't thought of yet, we will try to incorporate a casting system between primitives that are based on numerals (e.g. frequency and time). ASML will also be implemented with lazy evaluation of arguments in mind. The current rationale for this is the fact that sound engineering generally operates upon massive and repetitive data structures. If there is a situation where an argument in a function is only used in 40% of the calls made to the function, we would like to save that calculation. We may change our minds on this later depending on the difficulty of execution and the value of implementing it this way. Another feature of the language will be the ability to create library files to store and share functions. It is beyond the scope of this project for Team SoundHammer to create more than just a few library functions, but we will create a small number for testing and demonstration purposes. This is a core feature of the language as it is what will allow programmers and sound designers to make large and interesting effects. Although this paper has thus far focused on proposed new primitive types, the language will include such standbys as ints, floats, and strings as well. There is clearvalue in having arithmetic types in such a language, and we will allow new primitives to be coerced into these old types where that is logical. • For example • amplitude time1 = get amplitude from wave1 at 500ms; • amplitude time2 = get amplitude from wave1 at 600ms; • float ratio = time1/time2; • set amplitude of wave1 at 500ms to ratio; Furthermore, these types can be useful for purposes of debugging in the language, and this is a reason that we


View Full Document

Columbia COMS W4115 - Language Proposal for Atomic Sound Manipulation Language

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download Language Proposal for Atomic Sound Manipulation Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Language Proposal for Atomic Sound Manipulation Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Language Proposal for Atomic Sound Manipulation Language 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?