Opensource Libraries and Tools Developed in CineFX Labs
CineFx Labs actively pursuits research in many domains of computation
including but not limited to Information Theory, Computer Visualization, Mathematical
Modeling, Dynamics Simulation and Computer Graphics. Many of our libraries and tools
are used in commercial and open-source projects alike across the world. If you find
any library or tool useful for your purpose, feel free to go through the relevant
documentation and use it in your application. If you have a research idea that you
would like to get implemented or query for a tool, do not hesitate to contact us.
CFugue, MusicNote Library
Popularily referred to as CFugue, meaning Carnatic Fugue or the C/C++
replacement of JFugue, MusicNoteLib is a high level Music Programming Library. This
library makes it possible to play music notes directly from C/C++ programs, without
ever having to deal with the low-level MIDI complexities. It provides a beautiful
abstraction that lets you concetrate on programming the music rather than
worry about the MIDI nuances.
Provides features that makes it possible to use this library directly from many
platforms, including but not limited to ASP pages, .Net applications and even non-Windows
based systems. With built-in support for both Western and Carnatic music, programming
music with this library is as sample as writing plain Music Notes.
For more details and downloads:
http://musicnote.sourceforge.net/
PlayByEar Application
An opensource application that lets music learners improve their Play-By-Ear
capabilities of Music. With support for over 100 different instruments, users will
be able to practice identifying the notes of their own favorite instrument.
For the first time in the world, this is a single application that seamlessly supports
both Western and Carnatic Music Notations.
The application is designed around simple Question/Answer paradigm. It plays (poses)
a series of notes that the user has to identify (using the Virtual Keyboard Control
provided on the application Window). The questions are designed around the concepts
of reinforced learning paradigm. With questions designed to be set at multiple levels
of difficulty, users of all levels (from beginners to advanced) should be able take
advantage of the application starting at their own level of Music Knowledge.
The scoring system is based around advanced behavioral learning patterns that captures
users' Music recognition capabilities through different metrics that help them immensely
with progressive learning.
For more details and downloads:
http://musicnote.sourceforge.net/
Phonetic Translation Library
Phonetic Translation Library is a project that aims to
create reusable components (C++ libraries, COM components, and Edit controls) for
Phonetic Transliteration of Indian languages, such as Telugu, Tamil, and Kannada
etc. Reuse, platform-compatibility and easy-of-use are the primary design considerations.
This release ships with both ready to use end-user tools and programming API libraries,
components. In-built support for 10 Indian Languages.
End-user tools available as part of this are:
- A simple phonetic transliteration application
for typical users who use Indian language content (mails, instant messaging, greeting
card designs). Just enter the words and get them transliterated phonetically to
the chosen language.
- A complete RichText editing application to
typeset documents in Indian languages. This is for more serious users who would
like to use phonetic transliteration for creating Indian language documents (Desktop
publishing). Helpful for preserving old Indian classical books and documents in
native language format. Supports multiple platform-compatible output formats such
as Html, OpenOffice document and Acrobat PDF.
Library API/Components available for Developers are:
- C/C++ API for using directly as a Library from
any C/C++ project
- DllImport
options for use with .Net and VB applications
- COM components for use with Script languages (vb/java script). The
component is Registration-free-COM ready.
- Multi-platform compatible Phonetic RichEdit Text control ready to be used
with GUI applications. Supports Mac, Linux and Windows versions
Supported Languages:
Bengali, Gujarati, Hindi, Kannada, Malayalam, Oriya, Punjabi, Sanskrit, Tamil, Telugu
Maya API Tracer
An open source tool for tracing Maya API calls made by any given application.
Uses specialized version of Trace n Patch library customized to trace the Maya C++
API. Quite useful for Maya Plug-in developers and end-users alike to help optimize
their scenes based on the internal evaluations of Maya runtime.
Object Introspection Library (OIL)
A developer library aimed at providing the Object Introspection capabilities
for C++ developers using the techniques of Template Meta Programming. The goal is
to be able to inspect and modify the contents of any given C++ object at run time.
This library facilitates the collection of meta-data information for the class and
member variables in C++ modules and optionally displays the information. The robust
event handling mechanism provided by the library lets developers track the changes
to the variables at run-time and handle the changes on the fly. This functionality
is quite invaluable in the development of profiling, debugging and instrumentation
tools.
Trace n Patch
A developer library that provides the ability to selectively detour Win32API
functions and patch them at run-time with user supplied .Net code on per-process
basis. The non-intrusive nature of this library allows tracing and modification
for any valid Win32 process without requiring its source code, while the run-time
per-process modifications guarantee the alterations only for the target process
without affecting the other system processes. With the ability to serialize the
modifications into an executable file, this library provides the ability to generate
new programs from existing programs without requiring the original source code (by
generating Trampoline functions and injecting the user supplied .Net code into the
existing Win32 processes at run-time). This is a very useful library for reverse
engineering applications, instrumentation tools and process monitoring applications.
Sequence Modeling Library
A mathematical library with efficient indexing and de-indexing functions
for various mathematical sequences such as,
- Range Sequence
- Permutation Sequence
- Combinational Sequence
Uses arbitrary precision arithmetic to provide the indexing facilities for sequences
of any length without restrictions. This simple and efficient library is useful
for various routine tasks such as object serialization, graph statistics encoding,
script debugging analysis etc.
Event Tracking Library for Windows
A developer library that provides system-wide event tracking facility
for Windows applications. Uses Microsoft Active Accessibility technology to provide
in-application event notifications without requiring any external dependencies (such
as Dlls) to be loaded at run time. This offers light weight solution for event tracking
and is quite useful for tasks such as computer based training, command context analysis,
user requirement prediction etc.
Movie Creation Library for Windows
A developer library designed with Zero Error Impact Architecture (ZEIA)
to provide movie creation facility for windows applications. ZEIA is a low cost
alternative to fault-tolerance that aims at minimizing the error impact by inhibiting
the error propagation to external modules. Uses finite state machine mechanism to
implement ZEIA. Supports the creation of movies in
- Audio-video interleaved format (AVI)
- Windows media format (WMV)
- Quick Time format (MOV)
This easy-to-use library can generate movie files from any native HBitmap sequence
and is quite useful for recording the OpenGL / DirectX simulations.
Universal Progress Dialog
A developer library for providing the progress dialog interfaces for
lengthy background computations in Windows GUI mode applications. When requested
to perform a lengthy computation, this library automatically takes care of spawning
and manipulating the necessary background worker threads and the GUI synchronization
details, freeing the developer from the routine thread manipulation tasks. A quite
flexible library that can be used in both WIN32 and MFC applications with same ease
without any restrictions.
.Net Obfuscator
Tool with CLR-Hosting
A developer tool that is quite useful for .Net developers for deploying
their managed assemblies without being vulnerable to the dissemblers. This simple
and elegant tool uses the .Net features of reflection and interoperability in combination
with the WIN32 cryptography services to provide security for the managed assemblies.
Further, an alternate option to use the CLR-Hosting technique is also available.
These techniques do not involve any modifications to the assembly code and hence
are quite safe and more accessible compared with the existing commercial obfuscation
techniques.