Unformatted text preview:

Team SoundHammer Language Proposal for Atomic Sound Manipulation Language ASML Frank A Smith fas2114 columbia edu Tim Favorite tuf1 columbia edu 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 of frequencies 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 the following 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 clear value 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 shall also try to include a console printing facility Finally it is a goal of ours to try to implement a whole language syntax style that is closer to English than most existing high level languages The small pieces of code so far


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
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 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?