Decibel is a statically typed, domain-specific programming language designed to simplify audio generation and manipulation. It offers a powerful yet intuitive approach to handle complex audio tasks, including sound generation, mixing, and real-time processing. With its user-friendly syntax and a rich set of operators, Decibel allows both professionals and beginners to create high-quality audio applications effortlessly.
- Intuitive Syntax: Makes complex audio operations easy to understand with a straightforward syntax.
- Comprehensive Audio Operations: Provides powerful operators for audio manipulation, including concatenation, superposition, panning, and more.
- LLVM Integration: Leverages LLVM for for efficient code generation to enhance performance.
- Currying Support: Allows users to create more flexible and reusable functions by breaking down functions that take multiple parameters into simpler ones with fewer arguments.
- Advanced Language Design: Decibel’s unique approach of treating functions as variables and supporting currying gives it a level of versatility and power not seen in most other audio programming languages.
- Functions as Variables: Lets you treat functions as first-class variables, offering dynamic behavior and more flexible programming options.
- Seamless Integration (Future Feature): Designed to easily integrate with external programs and files through import statements, with the framework already in place for future implementation.
-
Clone the repository
-
Run the following commands:
makecommand builds the project.make testcommand runs the tests. -
Individual components can be run. Change the directory to the respective component and run the following commands:
makecommand builds the individual component.make testcommand runs the tests.
- Lexer
- Parser
- Semantic Analysis using Abstract Syntax Tree
- Code Generation using LLVM IR (In Progress)
- Complete Code Generation
- Allow to play the generated audio
While there are several audio programming languages and frameworks currently available, such as Pure Data, Max/MSP, Supercollider, and Csound, Decibel differentiates itself by focusing on ease of use and high-level abstraction:
-
Pure Data/Max/MSP: These platforms offer visual programming, which can be intuitive but require extensive learning, whereas Decibel uses a readable textual approach, easing the learning curve for traditional programmers.
-
Supercollider: While Supercollider is powerful and flexible for sound synthesis, Decibel offers similar capabilities in a more approachable format for beginners.
-
Csound: Csound's complex syntax can be challenging, but Decibel's simpler and more intuitive syntax enables faster audio project prototyping.
In comparison, Decibel stands out by offering both simplicity and power, allowing users to focus on audio creation rather than learning complex programming paradigms. It brings together the flexibility of professional audio tools and the user-friendly approach needed for rapid prototyping and development.
- Aditya Garg (CS22BTECH11002): Arushi Garg, Aditya, Garg_Aditya
- Anirudh Saikrishnan (CS22BTECH11004): Anirudh Saikrishnan
- Bonthu Mani Hemanth Reddy (CS22BTECH11013): Hemanth, hemanthreddy6
- Edward Nathan Varghese (CS22BTECH11020): edwardnvv57k, Edward Nathan Varghese
- Kaipa Venkata Tuhil (CS22BTECH11030): Tuhil
- Shaik Police Parvez (CS22BTECH11052): ShaikPoliceParvez
- Syed Abrar (CS22BTECH11058): Syed Abrar