? Nimajin Software Consulting Projects 2012
Nimajin home
Home Resume Portfolio Technologies Download Contact

Projects

2013

2012

2011

2010

2009

2008

2007

2006

The projects are listed in chronological order, most recent first. Each project description includes the start and end dates, the effort (in man-months) and the technologies used. Clients include AST Technologies Labs Inc., ATRA Vision Inc., Microtronix Systems Ltd., Listen Inc., and The National Centre for Audiology.

.Net VoIP Component Design & Development
Aug 2012 - Dec 2012 (0.70 m/m)
Windows 7, VS 9.0, C++, C#, OPAL, NSIS VoIP Client Test GUI
This simplified SIP client was designed for general use by .Net programs. It is licensed by Nimajin to a third party for peer-to-peer voice communications in an on-line game and is for sale at this web store. First, an abstract interface was designed to work as a plug-in for the host program and a stub component was developed for use by the third party so they could code and test their UI while the VoIP functionality was implemented. A test harness and client GUI was developed in C# separately for use by Nimajin. A new interop layer was designed and coded to adapt the open-source OPAL VoIP library's C-language structures and functions to .Net. This defined the new API and event callbacks for the host program. The OPAL library linkage was modified into one DLL with the minimum symbol table necessary, to reduce download size. A new randomized STUN server selection was implemented for use behind NAT routers. A NullSoft installer was scripted using NSIS. Installation and usage instructions were contributed to the game publisher's wiki.

Program Updater Design & Development
Aug 2012 - Dec 2012 (0.10 m/m)
Windows 7, VS 9.0, C#, HTTP
This .Net component provides services of checking versions of specific programs against on-line database and downloading new files from a Web server and replacing them. The implementation was adapted from open-source code. The code was made more portable, an abstract interface was encoded so the component could be used as a plug-in and a DLL was built. An update control database was written and hosted on a Web server, along with the target program files. This system is in operation serving the commercially-available VoIP Component.

Speech to Lipsync Script File Converter
Sept 2012 - Nov 2012 (0.20 m/m) Audio Phoneme Tool
Windows 7, VS 9.0, C++, WTL, Microsoft Speech API 5.1, Python
Small GUI utility program analyses audio files and generates lipsync script files, suitable for 3D animation tools like Blender. SAPI usage was adapted from open-source code from Annosoft, which provided rudimentary Anno4 output. New functionality was added to scale frame timing information based on user selection and to output to Papagayo format. Experiments were performed to host Python script files for the purpose of enabling other forms of output.

VoIP Call TalkOff Test
May 2012 - Aug 2012 (0.10 m/m)
Windows 7, VS 9.0, C++, WTL, OPAL, SIP, DirectSound TalkOff Test
This addition to an existing program was required to test SIP gateway detection of DTMF digit tones under noisy audio conditions. The implementation sent the DTMF tones to the audio card output from user-selectable file sets so various distortions could be tested. The audio card output was attached to the gateway input. Between the tones, user-selectable noise files were played. The gateway was expected to send SIP INVITE messages over its Ethernet interface in response to the DTMF tones. The OPAL SIP call handling in the program was used to detect the gateway signaling. The new code compared the incoming SIP messages to the sent DTMF tone values and tabulated the matches and unexpected digits. The audio sending, SIP signaling and digit comparison were implemented in worker threads, and visual feedback was provided by posting Windows messages to the UI thread.

CIDCW-EIU Signaling
May 2012 - Aug 2012 (0.70 m/m)
Windows 7, VS 9.0, C++, WTL, WASAPI CIDCW-EUI Test
This was an addition to an existing program to set output bits and play an audio file in response to input bit signal. It required low (sub-millisecond) latency and precise synchronization between the I/O bit input and the output and audio file playing. DirectSound could not satisfy the timing requirements, so a WASAPI audio output object was implemented to drop in to the OPAL audio channel interface definition. Because the WASAPI audio was set for exclusive mode (to minimize latency), and in this mode it only accepts input at device-specific rates, audio sampling rate conversion was required to convert the source audio files to the device-natural rates. This was implemented by modifying and integrating some open-source FIR filter code. The file loading and conversion was implemented as a worker thread. The triggering, and bit and audio response were implemented as a state machine to synchronize under user-configurable timings.

Audio File List Player
May 2012 - Aug 2012 (0.20 m/m) File List Player
Windows 7, VS 9.0, C++, WTL, DirectSound
This addition to an existing program provides standard audio file play list capability with the addition of user-selectable period of silence before each file. Developed the UI for file selection and ordering. A worker thread was implemented for file playing. The thread posts Windows messages to the UI to update file progress and audio level indicators. Measured & analyzed DirectSound latency and revised I/O bit output timing code for synchronicity.

Digital I/O Bit Controller & Monitor
May 2012 - Aug 2012 (0.60 m/m) Bit Set & Monitoring
Windows 7, VS 9.0, C++, WTL
This addition to an existing program was required to display the input and output states of digital I/O bits in real-time and to trigger software components when they change. Input bit monitoring was implemented using a worker thread to poll the I/O bit hardware driver. Developed a notification system to notify subscribers via event signal objects (for waiting worker thread targets) and Windows messages (for UI thread).


Download the 2006-2013 project list in .doc or .txt format

Page copyright © 2013 Nimajin Software Consulting, last revised 2013-05-24