destiny && choice

the shortest answer is doing

04 January
0Comments

Intelligent English Input Assistant

Title

Triivi is an English typing assistant software, which I programmed 3 years ago. I had stopped the support for this freeware, but you can still access www.Triivi.com. And you can download and comment it here now.

  • Auto-completing words and phrases.
  • Sorting suggestions by frequency instead of alphabet.
  • Automatically learning new words.
  • Error Checking according to spelling and pronunciation.
  • Built in vocabulary with more than 500,000 words and phrases (without professional dictionaries).
  • A great deal of professional dictionaries are present.
  • Local language translation dictionaries are supplied for non English native speaking countries.

Triivi Screenshot

download link: (more than 59,000 downloads on www.Triivi.com)
Triivi professional 2.0 (4.83MB)
Source Code (6.74MB)
Dictionary Maker (210KB)
Translation Dict Maker (169KB)

29 December
1Comment

MIDI Synthesizer Console!

To own a MIDI synthesizer is one of my childhood dreams. Although the hardware synthesizers are not so important for music composing with the development of personal computer and software synthesizers, the MIDI synthesizer is still a temptation to me.

In the year 1995~2000, when the storage space of computer was not so abundant, music in MIDI format was very popular. Different with MP3 format, MIDI format just records the notes to play and instruments to use, instead of wave form. This idea enabled MIDI file recording music within only 1.5 kilo bytes per minute — less than 1/1000 of the space that MP3 format took. However, the disadvantage of MIDI format was also obvious: you need a good synthesizer to playback. Unfortunately, most of computers in that time were equipped with low-cost FM synthesizer chip, which made MIDI music like children’s bauble piano.

To upgrade embedded midi synthesizer, people invented midi daughter cards to enhance MIDI performance. A MIDI daughter card contained 128 to 1024 instruments, and it could playback scores naturally and factually. Before the software based synthesizer dominated the market, there were 20 to 30 kinds of midi daughter cards. YAMAHA DB60XG was one of the best cards among them. Once upon a time, DB60XG was sold with a very high price, but now you can get it easily on ebay or Taobao with less than 5 dollars.

I designed this MIDI Synthesizer Console to resuscitate DB60XG. My device can consider as the parameter controller and instrument selecter of DB60XG. It receives MIDI signal from computers, MIDI pianos, and other MIDI source. And it produces audio and music. It’s great!

Reference:

http://www.frontiernet.net/~rlsnuffy/db50xg/index.html

http://atari.nvg.org/db50xg/

17 December
0Comments

Digital Electric Timer

IMG_1044IMG_1046

This timer was designed to save power. I noticed that our electric water dispenser was powered on all day, however, we didn’t need the water be heated when people absent. In our office, we worked about 8-10 hours a day, but the water dispenser powered on 24 hours a day! This Digital Electric Timer was designed to solve this problem: it can manage the power source on and off periodicitily. It was mainly based on an Atmel Mega 8 micro controller unit and a DS1302 real time clock chip.One of the challenges was how to eliminate the interference from power line and the relay unit.

16 December
0Comments

Electronic Dictionary

I designed this electronic dictionary about six months ago. It was made of Yahoo Email Box. I removed all of the components and installed my own, including Atmel Mega 32 CPU, VS1053 mp3 decoder, SD card reader, and LCD module. I took advantage of the keyboard of Yahoo Email Box, and repacked it as my keyboard module.

Since the CPU  I used, ATMega32 was not powerful enough to process fat16/fat32 file system with a high speed, I had to take a simple but effective file system to store dictionary files and configure files. The file system is defined as follows:

//////////////////////////////////////////
// fs.h
//////////////////////////////////////////
typedef struct{
	BYTE FileName[16];
	UINT32 FileStartSector;
	UINT32 FileLength;
	BYTE Reserved[8];
}DIR_ENTRY;	
 
// every DIR_ENTRY takes up 32 Bytes, every SD block (=512Bytes) can contain 16 DIR_ENTRYs
typedef struct{
	DIR_ENTRY DirEntry[16];
} DIR_SECTOR;
 
// every file can be simply defined as a start sector number and a current position pointer.
typedef struct{
	UINT32 startSector;
	UINT32 pos;
} FILE;

I used a UART port to debug my program, it also served as LCD interface. The keyboard module was a little hard to design, because it included shift key process. The dictionary file processing was the kernel task of this device. To make it flexible and portable, I designed the dictionary maker program based on JAVA. I would emphasis it in my next post. And here you can download part of the source code.

Dictionary32 (eclipse)

12 December
0Comments

Small Programs on Android

I made several small programs on Android OS to learn basic programming skills of this new cell phone OS. Here are two examples of them:

1. RPCalculator

RP is an interesting internet language of China, and the most approximative word in English is luck. And the software RPCalculator is used to calculate how lucky you are today. No doubt that this software is groundless, but funny, and that’s enough.

2. IDVerifier

This software is kind of useful. Every Chinese resident has an unique identification number. And the ID consists of the hometown and birthday information of this resident. The last digit of the ID number is check bit, that we can inspect it for verification. This software can provide the detail information contained in a specific ID number — which is overtly, and verify the authenticity.

android

you can down load the source codes of these two Android software for learning.

IDE: eclipse 3.4.2

SDK: Android SDK 1.5 & Ophone SDK (optional)

07 December
0Comments

Wedding Present for My Friends

This present is my handicraft work for my friends’ wedding ceremony. It was simply a avr based LED flasher. Something interesting is that the LEDs were controlled by infrared sensor: when you put your hand on the left of the panel, the right LEDs will be turned on, and when hand was put on the right, the left LEDs will be turned on. This design means the interaction and assistance of two hearts. It emphasizes trust, love and zeal. My friends were deeply touched. May their love forever!

30 November
0Comments

AncientLight 15W*2 mini power amplifier module

The AncientLight power amplifier was specially designed for ModernCave speakers. I used a TI TPA3122 stereo digital audio power amplifier chip for the kernel. It took me only about 12 hours to buy chips, design and weld circuit, manufacture the case, and assemble them together! The sound was great!

30 November
0Comments

support vector machine and machine learning

I studied the support vector machine method during my first postgraduate period in Zhejiang university. My diploma work was “Identification and Control of Nonlinear Systems with Hysteresis Characteristics Based on Support Vector Machine”. Here the abstract follows:

Support vector machine (SVM) is a brand-new machine learning technique based on statistical learning theory. It is an ideal facility for modeling of various nonlinear systems. It is an implementation of structure risk minimization principle in the statistical learning theory. Its basic idea is mapping the input data into a high dimensional feature space in which an optimal separating hyper plane or function regression is done. It has been proved that SVM presents a lot of advantages in dealing with the small samples, nonlinear and high dimensional pattern recognition, as well as other machine-learning problems such as function regression.

Hysteresis phenomena are common in actuators and sensors, such as gears and saturation, which would undermine the stability of system and the accuracy of control badly. A support vector machine based modeling approach and a support vector machine based controlling approach are presented to analyze and control nonlinear systems with hysteresis.

Several hysteresis modeling methods are presented, and a hysteresis model based on Preisach model is developed. In this paper, a support vector machine based approach for modeling of systems with hysteresis is proposed, and an improved version is developed. The developed identification approaches are numerically implemented in Matlab simulation program, and the improved version is proved to be effective and more accurate than BP neural networks when being used for modeling  of systems with hysteresis.

Then, an inverse modeling controller is presented for nonlinear systems preceded by unknown hysteresis nonlinearity. The inverse modeling of hysteresis system is accomplished by a new development of support vector machine. A control impression comparison between classical PID controller and support vector machine inverse modeling controller is provided, and the effectiveness of the new approach is illustrated through Matlab simulation.

Keywords: hysteresis, support vector machine, modeling, inverse modeling control, PID controller, Preisach model

download the thesis (Chinese): 1Master’s thesis

30 November
0Comments

“Smart Voice” Chinese Text-To-Speech Engine

In the year 2002, I led a team programming a Chinese TTS synthesizer in Zhejiang University. I was in charge of speech synthesis kernel and team building. My TTS system could easily be integrated into other programs, such as web explorer and text editor.

The Smart Voice synthesizer system consisted of three logical parts: preprocessor, phoneme synthesizer, and postprocessor. The preprocessor was used for parsing text and analysing sentence structure. It seperated raw sentences into words to help the phoneme synthesizer determine pause length and accentuation position. The phoneme synthesizer was used to translate text into voice, which contained all of the voice units that needed in Chinese language architecture. And the postprocessor, generally a series of DSP modules, consisted of tuner, reverber, chorus, equalizer, and AGC. The postprocessor was used to simulate different voice at different age and gender. And one of my team members integrated Smart Voice with IE, which enabled web pages read out the content with some customerized hyper text marker.

This software was completely an extracurricular project, without any financial aid or adviser. However, this work achieved many awards in college. It helped me get a Third-class Prize of National Undergraduate Academic Research Contest. And my team earned a Third-class Prize of Business Plan Competition of Zhejiang University.

smartvoice

26 November
0Comments

ModernCave Bookshelf Speakers

I made this bookshelf speakers for my friend last Labor Day. I designed this speakers as a combination of modern technology and prehistoric civilization. Besides, I designed a digital power amplifier for these speakers, which was named AncientLight.