Sound identification system special report (reproduced)

xiaoxiao2021-03-06  72

First, guidance professor and the author

Professor guidance: Tour Guizhong teacher

Tour Guizhong Teacher is currently serving as the special teacher of the Truth University.

Perform a national sector plan. After graduating from the doctoral degree from the Central University,

Zhang Zhiyong, director of the capital department, hired Truth. Teacher once said

Over: "The expertise of this study is basically, that is what the meeting, everyone

The same is true, but the foreign language is really good, it is very important,

Nowadays, Taiwan has a great ability to win others.

The field of tourism learned is an image.

Processing, graphical identification, wireless network

aspect.

Author group: The capital department four A Peng Wenyu - I am a transfer student, it is ahead of entering the university.

The students of the five special works, reading the electronics, the direction of learning is relatively biased toward hardware and practice operations. Enter

After the university, it is only comparable to the theory and software applications due to the understanding of the understanding and electronics.

So, so there is no pressure to learn.

资 系 系 四 b 系 系 系 系 系 系 系 系 系 系 系

资 系 系 系 系 系 系 系 系 系 系 系 系 系 系 系 系

Second, the author's order:

At first we study the feasibility of adding floating watermarks in MIDI, found that MIDI header can be hooded

The space is too small, so it will be taken to the speech (WAV) identification.

In humans

Sound identification, due to people

There are many voices, sometimes even the same person's

sound

The ears are not necessarily distinguished, and although people can distinguish from different people.

Sound, but the computer is calculated

Analyze the characteristic value, then you can distinguish

Sound, so naturally not a human ear in terms of identification ability.

greasy.

Enter one

When we can use some mathematical operations

Sound

Process, then

Basic base in the library

Voice value comparison, control

Whether the sound is better than others

The sound is closer

this

Sound, then identify if it is the same person

sound.

in

The sound identification is not easy, because the tone is slow, and the frequency is constant, the energy is constant;

From this to identify

The possibility of sound. Finally found

A person with a particular sound feature,

Sound identification

High. Future school brothers can test different microphone tests

Sound difference, or seek more accurate identification

Method, make more complete

Sound identification system.

Third, the card history

Peng Wenyu: The topic of the three semester is finally ended, and many out of these three semes.

What is expected from me, during the period, experience the special teacher, replace the group, and replace the size event.

At first, I was working with Chen Yumei and a few classmates who were in the same class.

There is no big problem at the beginning, I put my mind in the learning database SQL and new program language.

On Java, in order to understand the database SQL, refer to some relevant books, it has been reported to the end of the semester.

At the time, I found that the classmates in the topic concept is not too consistent, so I chose the group.

I didn't think I would like to replace the question of the special teacher, but I thought that I can

What kind of topic is done alone? This seems to be difficult. Then and several more than a few talks exchanged each other.

After the experience, I decided to join them and their same group, change new group, new topic, new teacher, new

Departure.

In the new field, there are many new knowledge that I have never been touched, such as the so-called float.

Watermark,

Sound files, etc., these are waiting for me to learn. We will focus on the topic

Voice analysis,

So learning

The format and data type of the sound is my first homework, the second homework is to use the program.

Read

Sound file, learning

In the process of sound mapping, it is not so smooth, exchange us on the opinion

Slowly there have a bad communication, this problem also caused my learning to be interrupted, but fortunately

Wipe, or after the semester.

In the third semester, our group members have some more, but the topic still continues the topic of the last semester.

No more. When the semester started, I really had a little stunned for this topic. I don't know how to continue doing.

Go down, later, and Tour Guizhong talked about our ideas to set the work of this semester.

The progress of the overall topic does not have a fast, so I feel that I feel on the content and other groups.

Less less, but we are still very hard to do the topic, I hope this semester will end smoothly.

Chen Yunqu: Before the participation of the topic, the heart is really a bit fear. In the first semester, it is

The study of floating watermarks, in the process of studying the floating water print Paper, as if it is back to me

At the beginning of the first high-vocational hospital, many English words must be checked by the dictionary, and finally, the only translation, but the only one

Different parts are, there are many computer-specific nouns, making it difficult to understand, these are the first semester.

Things. In the second semester, we changed the topic, the title turned "

Sound write system, and Huiqi

Look at Paper, learn together

Matlab and use the Goldwave this soft body record

Sound, learning

On MATLAB, in addition to the application teacher, there are some functions and conversions to go back.

Book test; the most fun is to recording, many students have been recorded by us to Huiqi, after recording,

Listen to the sound of your own record, and read these

The sound file uses our previous

Matlab is formalization (in all people,

The sound array is the longest length, taking the number, to make a complement 0

Action), then make Fourier conversion, write automation, showing wave type. The third semester, continuation

The content of the second semester is mainly using Java's system, except for the use of last semester.

MATLAB technology

Outside (after Fourier conversion, the result is a TXT file), and 2, 3 Java small rules will be written.

The data of the TXT file is operational, first of all the two or two of each person

The sound is plus, and there is a value, then

These values ​​are the operation between distances, and the results discover their own and their own values, the distance is relatively close,

This will reach the results we want, although the content you have made is less than other groups, but always

I feel that I have improved more than one progress, this is a place I feel very happy; but do the topic, it is really very

Hard work, it is also a very pressure, I hope this semester will end smoothly.

Chen Huiqi: Honestly

The problem of sound is very awkward, after all, unlike images, you can see

Also touched,

If the sound passes, it is gone, how to study it is really a big question. Then three semesters,

After some storms, I also walked to this point, it is really moving. Everyone is very serious

A topic, it is also because of the topic, our feelings are also very good. Finally, some results come out

I am very happy, after all, I want to identify who is

The sound is not easy, but it is very glad to help the teacher.

I have a little clue. In addition, we have a lot of difficulties in the program, after all, the program is not strong in the topic.

It's very hard, but fortunately, it's more. The SQL database can be more complete and provided.

The user's more humane function, and the functions of Java and SQL are very powerful, which can be described as future trends.

It is, it is necessary to rely on learning brothers to improve the identification ability of this system.

Fourth, background motivation

Explore the addition of digital floating watermarks - because the piracy is rampant, how to use the floating watermark,

To protect the effect of smart property rights. This is the case of Taiwanese music, the big subsidy, there should be an impedance role;

Simple replication is to copy the original file with bit-to-bit, simple and cost-to-life;

The low-cost distribution of online networks, samples, and information will have new problems. Digital floating watermarks have been applied to music

On the CD, the user can't transcribes to the computer, although the copyright controls some music, but consumers are not

Often dissatisfied with money, I bought the CD but I can't easily listen to songs, and Audio Data should let file users can depend

I am used to using it.

Therefore, how to join, how to add a plurality of floating watermarks is the technology that is not stunned.

Leave in the whole environment will lose control, and there are some IPRs (Intellectual property Rights wisdom

Property rights) Protection, like well-known floating watermark technology, put the IPR's related information in the archive.

discuss

Sound identification system - At present, Taiwan's social soup is uneasy, and there are several social news, and no trouble.

Everyone is worried about whether the home is safe, and the home is not a safe place?

Set

The sound can enter the voice identification system in the house, and it is necessary to protect the lives and property of the people.

There is a great helpful, and Mr. Police does not have to tired of running the prisoner. Study the visual accepted access control system, prevent

The warming of crime and other crimes can ensure the safety of life and property of everyone.

In addition, there are many home appliances on the market, and also tried to use voice control to increase the use.

Convenience.

It can be seen that the speech identification is bound to be future trends.

V. System function

Use Goldwave software and microphone record

sound.

On the one hand

Matlab will

Sound (WAV) does the test, Fourier conversion test,

There is a database in the database.

On the other hand, use Java

Sound read, do Fourier conversion, then put this

Sound and database

The archive comparison of the file is identified is the same person.

sound.

※ Value conversion: Four Fourier Data file that stores a string format into a digital format.

※ Energy conversion analysis: make the characteristic value of the information after the Fourier conversion, to push

Calculate

Sound feature points.

※ Feature selection:

Sound characteristics: a series of dynamic signals that change over time. ※ Four Fourier

Transform (FFT) conversion: convert the time function into a frequency function. By

Matlab can see

Sound file (WAV file) performs Fourier conversion, its waveform energy

Divide the naked eye, therefore simply studying the method of taking the characteristic value of the characteristic value, that is, the program can be taken out.

personal

The characteristics of sound, then and existing in the database

The sound value is comparable, and finally can identify the same

A person's

Sound? Still another person

sound?

Six, system environment

MATLAB interface:

Screen of the database:

Database Structure:

Seven, hard body architecture

"A computer microphone that can be used normally

Eight, soft architecture

(1)

MATLAB 6.0: It is easy to use, can be used flexibly,

Strong, but also has ductility.

MATLAB features: 1. Value of functional numerical operations

2. Advanced data visualization

3. High-order but simple programming

4. Open and extendable architecture

(2) Visual C

(3) Goldwave Version 4.25Mssql 7.0TextPad

(7) Fast Fourier Transfer FunctionMICROFT Access 2000 (9) Microsoft Windows

2000 Professional

Nine, system architecture

(1) Recording part: First use the recording system (microphone) will "open the door" in different 10 people

sound

Recorded, everyone said 20 "opens", a total of 200 times, once a time, once, then this

200 times "open door", intercepting the same length

Sound file (regularization - blank part] increased

Degree 80000), establish a database, then follow these

Sound conversion, with PR to become the same mode.

(2) Site part: start from JMF,

The Coding part of the voice is written in J ava.

1. Complete the database to establish

2. Fourier conversion frequency

3. Compare different

Sound frequency characteristics

◎ use

MATLAB reads the WAV file, after the Fourier conversion, then calculates the result value into text

Arrival, compare before and after operation

The difference in sound and the analysis results in the database.

◎ The purpose of the database is to make DATA search, let

The sound ratio is better than the efficiency.

Database section:

JDBC-ODBC Bridge:

Ten, function block diagram

XI, installation and implementation

MATLAB's actual:

※ It can be performed in the manner of J ava.

Twelve, human distribution analysis

[Three]

Chen Yunqu (Research on Floating Watermarking Technology): Seeking to add floating watermark more perfect methods.

Chen Huiqi (Floating Water Printing Technology): Calculated Formula, Utilization

MATLAB tests its feasibility.

Cai Gen Road (Sub-watermarking technology): Add floating watermark, take out the floating watermark action test.

[Three]

Chen Yunqu:

Matlab reads WAV files, test

Sound, show the sound pattern, will

The sound file is converted to a value

Primary analysis, use Fourier conversion to find features, to store the analysis results into text file, compare Fourier turn

Change the difference between the front and rear wave, and design the automated program to read the WAV file.

Chen Huiqi: Automation Read

Sound, get basic

The sound is recorded into a database, and the data library captures the information.

Peng Wenyu: Read Java

Sound (WAV), it is judged whether the read file is WAV file, showing WAVE file

Format, then make Fourier conversion.

Cai Zhengdao: The comparison of information is compared and the frequency is calculated.

[Four] (Java Practical)

Chen Yunqu: will turn into a value

Sound modification analysis: Reading

Sound file, will

Sound file

Numerical adoption of Chen Huiqi: Connection Database, Building a Database System

Thirteen, system development map

Fourteen, outcome picture display

※ Utilization

Matlab look

Sound frequency waveform change

Original waveform (MIX)

10 original waveforms (MIX)

Original file 0.7 (MIX)

Original file -0.7 (MIX)

Original file * 2 (MIX) Original file / 2 (MIX) original waveform (1D) original waveform (two-dimensional): read header

Code code

Read the archive information code to establish a new file

Merged audio file program test numerical change program code implantation of floating water printing

Value conversion 1:

Import java.util.StringTokenizer;

Fourier

Import java.io. *;

Public Class Trans2

{

Public static void main (string [] args) throws exception {

Int size;

File filename = new file ("02.txt");

FileInputStream filein = new fileinputstream (filename);

DataOutputStream Fileout = New DataOutputStream (New

FileOutputStream ("Fourier2.fft");

SIZE = filein.available ();

BYTE [] data = new byte [size];

System.out.println ("Total Position:" (size = filein.availe

()));

Filein.read (DATA);

Value conversion 2:

String Temp = New String (data);

StringTokenizer ST = New StringTokenizer (TEMP, "/ N");

// String [] DataS = new string [st.countToKens ()];

// float [] Fourier = new float [st.countToKens ()];

Double [] fourier = new double [st.countToKens ()];

For (int i = 0; i

{

// fourier [i] = float.parsefloat (st.nextToken ());

Fourier [i] = double.parsedouble (st.nextToken ());

Fourier [i] = float.parsefloat (Fourier [i]);

System.out.println ("Partial (i 1) " Group: " Fourier [i]);

Fileout.writeDouble (Fourier [i]);

}

Filein.close ();

Fileout.close ();

}

}

Energy Conversion Analysis 1:

Import java.io. *;

Public class country

{

Public static void main (string [] args) throws oException

{

Java.io.bufferedreader keyin;

Keyin = new java.io.bufferedreader (New

Java.io.InputStreamReader (System.in));

System.out.print ("Enter Dynamic:");

String filename = keyin.readline ();

DataInputStream filein = new DataInputStream (New

FileInputStream (FileName));

Float [] count = new float [80];

For (int i = 0; i <80000; i )

Energy Conversion Analysis 2:

{

INT j = math.Round (I / 1000);

FLOAT K = filein.readfloat ();

Count [j] = count [j] ((k *k) / 1000);

IF ((i% 1000) == 999)

{

System.out.print ("Count [" J "] ="

Count [J]);

IF ((j 1)% 5 == 0)

System.out.println ("");

Else

System.out.print ("");

}

}

Filein.close ();

}

}

The sampling number must be two times.

Cheng (1): will read

The program and Fourier conversion program of the sound file merged. Information after Fourier conversion

Cutting with fixed intervals, and the total calculation is calculated.

Sound adds array, and another

Sound plus total array

Make a comparison operation. The value will be added to the fixed interval, and the plus amount of each interval (1 ~ 10000) is deposited.

Among the arrays.

Comparison analysis: subtract the numerical value in the two arrays, square, accumulate, and do the action of the open root number;

of

The sound is operational, and the alignment is made with the value in the database.

Sound identification system final result:

Explanation: 3 group members (Mioko ANNN MELODY)

The sound is compared. When a new one

mikeko

Sound and existing

Comparison of sound data, found Mioko and Mioko

The sound error is the smallest,

Judging to judge - this is MiOko

sound.

Fifteen, program

Process flow chart

Connect the database process:

Load JDBC driver

Class.Forname ("Sun.jdbc.odbc.jdbcodbcdriver");

2. Connect to the database

String Url = "JDBC: ODBC: Voice";

Connection Con = DriverManager.getConnection (URL, "Account", "Password");

3. Send SQL Statement to the database statement stmt = con.createstatement ();

ResultSet RS = Stmt.executeQuery ("SELECT NAME, ROW01 from Voice, TBID

WHERE ID = name_id and name like 'mikeko%' "); 4. Read the result of the repository backup

While (rs.next ()) {}

XVI, manual and operation manual

Sound (WAV file) When the Fourier conversion is performed, the more data samples, the more of the conversion frequency band

The fine, the more you can show the original

Sound waveform.

This voice identification system requires human input between data acquisition, which is to be improved.

SQL Database Construct Information can be more complete, providing users more user-friendly features. Java and SQL

The function is powerful, which can be described as a future trend.

If the error is slightly larger, it cannot be determined to be the same person.

Sound, but as long as

Sound feature

Obvious people,

The sound recognition will be higher.

※ "Study of floating watermarks":

Type of floating watermark:

Hidden floating watermark

2. Demonstrative floating watermark

Features of floating watermarks:

Restability

2. Defense

3. Application of Open Digital Floating Watermark:

1. Smart property protection: IPR (Intellectual Property Rights) 2. Information

Tamper detection

3. Secret communication

◎ Floating water is not easy to be changed, recognizable; and floating water prints with transparency

(Strong), Security, Capacity (Capacity).

(2) WAVE music format:

※ Commonly used

MATLAB directive:

ANS% preset calculation result of variable name

DIR OR LS% Show all files

Plot% show the waveform of the file

Figure% open another new graphics window

CLEAR% Clear variable CLC% Clear screen

EXIT% leaving the window

※ Standard Musical Instrument Digital Interface File Type Dustin Caldwell (Record)

1 Overview

MIDI's full name is Muscial Instrument Digital Interface, which is the world of musical instruments.

Language.

There are basically 2 things in the MIDI (Digital Interface) file, Header Chunks

And track chunks. The second large section of this paper interprets the header block, and the third large section is interpreted

Orbital part. The "only" one header block is used to describe this archive (MIDI file) in the midi file.

Information and other materials, and record all the number of magnetic track blocks. We can take a magnetic rail block to become a

There are many card belts of many magnetic tracks. We can use a magnetic track as a

Sound, a pronunciation, any one

Music or any imaginable instrument.

2. Header block

The header block as the name is the beginning of the file, which is divided into three parts to indicate the MIDI file.

Content. The format of the header file is fixed is:

4D 54 68 64 00 00 00 06 FF FF NN DD DD

The ASCII code fixed in the four bit groups (byte) is MTHD (that is, 4D 54 68)

64). The four bit groups after the MTHD indicate the size of the header. It fixes 00 00

00 06, because the actual length of the header will only have 6 position tunnels.

FF ff is the format of the file. There are 3 formats:

0-monorail

1-multi-rail, synchronous dial

2-multi-rail, asynchronous dial

The monk papers are only one magnetic track. And the synchronous multi-track means that all tracks will be synchronized, or

In other words, these magnetic tracks start at the same time, so different parts in a song can be expressed (theoretical

Some). As for asynchronous multi-track, it is not necessarily at the same time, and it may even be completely different.

NN NN pointed out how many magnets in the MIDI file.

DD DD is the number of pieces of each section in the score (Delta-Time). (This will be later

Description)

3. Magnetic Rails block

Some of the remaining parts behind the header block is the magnetic rail block. There is one on each track.

The magnetic rail header and can contain many MIDI commands. Each track header and gear

The head is very similar:

4D 54 72 6B XX XX XX XX

Its front four metades also have a similar ASCII code similar to the front four gauges of the archive header. But this is

MTRK. 4 positions after mtrk indicate the length of this magnetic track (not including this magnetic track

The length of the head).

Records after the magnetic rail header is MIDI event. These incidents have

Information is transmitted and received by MIDI from the mixer (these Events Are Identicial to the THE

Actual Data Send and received by Midi Ports on a synth with one address.). Event move

= 128).

These commands will be written in the table. Each command has different parameters and lengths, but the commands following the command

There are 0 (less than 128) of MSB. Exceptions is a transform event (Meta-Event), it

There may be 1 MSB. However, the transform event needs to be able to easily deactivate the confusing length parameters.

A subtle differential execution mode capable of causing confusion (One SubtleTlety Which Cause

Confusion is running mode). This is where the MIDI command is missing, and finally released

MIDI commands (by) taken. This represents the MIDI event consists of a beat and some parameters.

Midi Event:

Hexadecimal: 8X

Two bits: 1000xxxx

Information: NN VV

Narrative:

Note OFF (Key Is Released)

2. nn = Note Number

3. vv = velocity

4 Conclusion

If this explanation will be more confusing MIDI's release, then it is able to help clarify the hair in the schedule.

An example of cloth. In addition, there are 2 practical and one picture file included in this file:

Dec.exe It is convenient to convert binary files (like .mid) to an equivalent decree.

Rec.exe is the opposite of Dec.exe, is the additional form that converts the decimal file into binary-.midinote .ps indicates the standard digital record of the piano keyboard (※ Appendix 1).

MIDI cannot add floating watermark.

※Appendix I

MIDI event command

Each command bit component is divided into two parts. Left Nybble (4-bit) stores the actual command, and right

Nybble stores the MIDI channel number of the command to be executed. There are 16

MIDI channel, and 8 MIDI commands (command NYBBLE must have a MSB).

In the following table, X represents the MIDI channel number. Note that all the data bit yuan group will be less than 128

(MSB is set to 0).

The transformation events without MIDI channels are listed in the table below. Their formats are: FF XX NN DD

All transform events are stored by FF, then the length of the instruction (XX), the length of the data (NN),

There is also practical data (DD).

Sixteen-in-one binary data narrative

8X 1000XXXX NN VV Note Off (Key Is Released)

NN = Note Number

vv = velocity

9x 1001xxxx NN VV Note on (Key Is Pressed)

NN = Note Number

vv = velocity

AX 1010xxxx Nn VV Key After-Touch

NN = Note Number

vv = velocity

BX 1011xxxx CC VV Control Change

CC = Controller Number

vv = new value

CX 1100XXXX PP Program (Patch) Change

PP = New Program Number

DX 1101xxxx CC Channel After-Touch

CC = Channel Number

EX 1110xxxx BB TT Pitch Wheel Change (2000h is Normal or no change)

BB = Bottom (Least Sig) 7 BITS of Value

Tt = TOP (MOST SIG) 7 BITS OF VALUE

Sixteen-in-one binary data narrative

00 00000000 NN SSSS Sets The TRACK'S Sequence Number.

NN = 02 (Length of 2-Byte Sequence Number)

SSSS = SEQUENCE NUMBER

01 00000001 nn tt .. Text event- any text you want.

NN = Length in bytes of text

Tt = text characters

02 00000010 nn tt .. Same as text Event, But Used for

CopyRight Info.

NN TT = Same As Text Event

03 00000011 nn tt .. Sequence or TRAME

NN TT = Same As Text Event

04 00000100 nn tt .. TRACK INSTRUMENT NAME

NN TT = Same As Text Event

05 00000101 nn tt .. ilric

NN TT = Same As Text Event

06 00000110 nn tt .. Marker

NN TT = Same As Text Event

07 00000111 nn tt .. Cue Point

NN TT = Same As Text Event

2F 00101111 00 this EVENT MUST COME AT THE END OF Each

TRACK

51 01010001 03 TTTTTTTT TEMPOTTTTT = Microseconds / Quarter Note

58 01011000 04 NN DD

CCBB

Time Signature

NN = numerator of time sig.

DD = Denominator of Time Sig.

2 = quarter

3 = EIGHTH, ETC.

CC = Number of Ticks in MetronomE Click

BB = Number of 32nd Notes to the quarter Note

59 01011001 02 SF MI Key SIGNATURE

sf = sharps / flats (-7 = 7 flats, 0 = Key of C, 7 = 7

Sharps)

Mi = major / minor (0 = major, 1 = minor)

7f 01111111 xx dd .. Sequencer Specific Information

XX = Number of bytes to be SENT

DD = DATA

The following table lists the system messages of the control system, which has no channel number. (Usually they only

Will use musical instruments such as MIDI Keyboard.)

Sixteen-in-one binary data narrative

F8 11111000 Timing Clock Used When Synchronization is Required.

FA 11111010 Start Current Sequence

FB 11111011 Continue a stopped sequence where left off

FC 11111100 Stop a sequence

The numbers listed below are equivalent to logging instructions.

Octave Note Numbers

C C # D D # e f F # g # a a a # b

0 0 1 2 3 4 5 6 7 8 9 10 11

1 12 13 14 15 16 17 18 19 20 21 22 23 23

2 24 25 26 27 28 29 30 31 32 33 34 35

3 36 37 38 39 40 41 42 43 44 45 46 47

4 48 49 50 51 52 53 54 55 56 57 58 59

5 60 61 62 63 64 65 66 67 68 69 70 71

6 72 73 74 75 76 77 78 79 80 81 82 83

7 84 85 86 87 88 89 90 91 92 93 94 95

8 96 97 98 99 100 101 102 103 104 105 106 107

9 108 109 110 111 112 113 114 115 116 117 118 119

10 120 121 122 123 124 125 126 127

The evolution and brief history of MIDI specifications

In 1978, a musical instrument exhibition was held in Japan. At that time, a Japanese electronic musical instrument manufacturer

Roland, some feeling of electronic synthetic musical instruments is bound to be the style of future, if it is not consistent in advance

Soching specifications, then there will be great inconvenience to instrument manufacturers and consumers in the future. Therefore,

Roland actively invited several major manufacturers of Yamaha, Korg, and Europe, and discusses electricity together.

The performance of the child musical instrument, and the manufacturer hopes to make a university through this seminar.

One data transfer type, which makes the synthetic instruments manufactured by each manufacturer can communicate with each other.

West, 1981, Sequential Circuits's Dave Smith, Roland

I. Kakehashi, Tom Oberheim with Oberheim Electronics, in Namm (National

June Show's June SHOW, I want to set up a SynthesizerControl standard, so that Synthesizer produced by different companies can communicate with each other. Afterwards, DAVE

SMITH plans to have a related proposal called USI (Universal Synthesizer Interface), and

November 1981 is disclosed at the Audio Engineers Society meeting.

In January 1982, USI caused a wide range of interest in the NAMM venue, syquential

Circuits, Roland, Oberheim, Yamaha, Korg and Kawai these big factory representatives meeting discussion

Related House Friendship, because most of them have alone communication standards on their own products. These companies make

NAMM is more active to improve the original USI specification make it more perfect ...

The original USI specification objective is to allow each other to be controlled between synthesizers, can

There is a common language standard that makes each other's data can be properly interpreted and received by different labels.

The engineer of this Synthesizer engineer and Sequential Circuits hopes that USI will join it in the future.

It is like the Controller control standards such as Pitch Wheels, Foot Pedal, Modulation, Wheels ..., etc.

When these vendors re-meet again at the Namm Show meeting in June 1982, they strive to study

The result of the discussion has been released, and it is a skeleton of today's MID. At the same time, the name of USI is also canceled (because

For everyone, "Universal" is not very satisfied), the new name will be more refined to show this standard.

Righteousness and Target: Musical Instrument Digital Interface (MIDI).

With this standard, the manufacturers have added the necessary devices in their new Synthesizer.

Slightly

The processor allows yourself to communicate with other MIDI devices. By this end of 1982, MIDI

The specification is finally made, and the musical instrument of the MIDI specification is truly launched. It is 1983.

Things ...

Implementation of MIDI specifications

In 1983, several electronic musical instruments were almost simultaneously introducing musical instruments that complied with MIDI specifications.

Such as: Yamaha DX-7 / ROLAND JX-3P / Sequential Prophet-600 ... etc. January 1983

On Namm Show, SEQUENTIAL CIRCUITS Prophet 600 successful Roland JP-6 connection communication,

The representatives of the meeting cheered to celebrate, and the MIDI specifications finally successfully officially launched.

However, the MIDI specification produced at the beginning is not perfect, it hosted part of the definition.

There is no disclosed documentation, which makes these MIDI Synthesizer not all what they can do.

Can communicate with each other, causing a chaotic industry. In order to solve this problem, improved MIDI Format

1.0 is disclosed in August 1983 ...

On June 29, 1983 in Japan, Synthesizer established their own group.

Japanese MIDI Specifications, Japanese Midi Standard Committee, followed by Japan

After the United States also established an institution name IMUG (International MIDI)

Users' group), to help manufacturers and related music workers, very fast, this organization is booming

Later, and renamed the International MIDI Association, referred to as IMA (International Midiassociation).

Subsequent development of MIDI specifications

Of course, the MIDI specification does not allow everyone to be very satisfied, these unsatisfactory people try to join IMA

Go to change the MIDI specifications, and some manufacturers are not willing to produce their contents in accordance with the contents of MIDI specifications.

Products make MIDI have no effect. So in the fall of 1984, Yamaha's Jim

Smerdel has established MMA (Midi Manufacturers Association) to the representative of other manufacturers.

Protect the MIDI specification. They print a complete detailed MIDI specification, eliminate everyone in MIDI

Doubt. Now, MMA maintains MIDI specifications together with JMSC. Any member of them is willing to compromise with MIDI specifications, because they find that if Synthesizer is able to communicate with each other, then MIDI

It is not possible. Since 1984, MIDI is stable in the music industry. From then on MIDI

We can explain it this ...

1) MIDI is one of the important functions of computer music.

2) MIDI is a unified industrial standard.

3) MIDI is a interface device.

4) MIDI is a new but different from traditional musical instruments.

5) MIDI is a bit language.

Yamaha DX7 amazing sales makes the manufacturer that did not produce MIDI SYNTHESIZER

They have went to the MIDI camp, people gradually feel the convenience of MIDI, and also begins to require other related facilities.

Midi must be equipped with amplifier, or Signal Processor. Computer user is very obvious,

MIDI's digital message can be received by the computer without errors, so the software vendors have developed many applications.

Software to control Synthesizer, make the user's hands can do more imagination, and MIDI

It seems to be an object that the future computer development must be enrolled. In the future, it can be sure that there will be more

More than MIDI surrounding products were born.

What is MIDI?

MIDI's full name is Muscial Instrument Digital Interface, we can translate it to "music

Digital interface. "See" Interface "words, we can know that MIDI is not

One can be seen, can touch the obtained material, nor any software that can be performed on a computer, MIDI

It is a standard that allows Synthesizer manufacturers to make their musical instruments in accordance with this standard.

Synthesizer of different labels can communicate with each other by MIDI's standard specification.

For example, let's assume that I have encountered an alien on the road today, I speak Chinese, he said the alien

Language, I can't communicate, if the Dutch knows English, I also understand English, then we can use English

Tong, at this time, English is "interface" I communicated with aliens.

Let's take a look at these electronic musical instruments! Before there is a language that doesn't work in Midi, the armor is said.

The language that the gun instrument knows, and the language instrument said the language of Brass instruments, so that A and B two instruments are fundamentally

It is impossible to communicate, just like I have a Dutch, but if the arm is Midi, B is also MIDI, Name and B

The music instrument can be communicated by MIDI.

So, we can say this: MIDI is the world language of the instrument. Midi Device

Message of circulating China We call these MIDI Message for Cable We said

We are called MIDI Port for MIDI Cable. And connect MIDI CABLE.

What can be MIDI DEVICE?

As long as there is a micro

Processor, you can send MIDI Message,

Treatment reaction MIDI Message,

And in accordance with the MIDI specifications, we can call it Midi Device. It can be seen that MIDI Device

It is not necessarily referring to the keyboard shape, or a black-shaped BOX-shaped sound source machine, but as long as it is in it.

The appropriate device can

sound

We can regard the mechanism for transforming into MIDI Message

For MIDI Device; put on a guitar to convert a vibration of the string to MIDI Message

Pickup, this guitel is a MIDI Device.

In addition to the instrument, insert a MIDI interface card in your computer, make it

Handling MIDI News

Interest, at this time your computer is a MIDI Device. This more, if you have a lighting equipment with MIDI Port.

In response to the received MIDI Message, change the color of the light or light;

Processor's MIDI

The mixer (Mixer) can react MIDI Message to control the volume and produce special effects;

The west is not necessarily musical, but they can be Midi Device.

Midi Channel

Midi Channel is very like a TV program's Channel, the MIDI specification defines 16 MIDIs.

Channel, number of numbers from 1 - 16. When there is no MIDI CHANNEL, MIDI can let all MIDI

The device in System is simultaneously, but there is no way to do different things separately. All the Device in all system can only do the same thing. After Midi Channel, we can specify an item only for

N number Channel uses, other non-N-Channel Devices ignores this message, so MIDI

16 of the 16 Channel can specify MIDI Device simultaneously do 16 different things.

There are four types of MIDI CHANNEL reception mode:

Mode1: Omni ON / POLY

Mode2: Omni ON / MONO

Mode3: Omni Off / Poly

Mode4: Omni Off / Mono

Omni ON means that Midi Device will track all Channel and respond to all CHANNEL

Message, Omni Off only receives Channel Message specified by the specified Channel, and other it is not

tube.

Poly and Mono means what way to use when MIDI Device receives this message?

It, POLY is like synthesizer, which is averaged, it will play multiple NOTEs at the same time, unless received

This Note's end message is still stopped when the Synthesizer speaks.

Just opposite, it only Play a note, as long as you play a new note, the previous Play

Note will be interrupted.

Midi Message

Midi Message is considerable in MIDI, and they decide what kind of music events can

To circulate between MIDI Device, if you want to know MIDI, MIDI Message is known

Tao.

How does Midi Device send a message?

MIDI is a digit interface, so the information it receives is made up of 0 and 1, which is by MIDI.

Cable is sent between MIDI Device, which is a group of 1byTe (8bits), and the 2-in-one 8 digits

The word can express the number between 10 bits 0-255, so it can transmit 256 different messages.

MIDI is to transmit information in the way in Serial Data Transmission, that is, 1bit,

The 1 bit lost, although many of the way of transmitting Parallel Data Transmission compared, although it was slow,

However, it is possible to reduce the chance of errors in the process of interference during transmission, in normal state,

MIDI can transfer 31250 BITS information every second. (PS: Although we say a group of messages is 8 bits, but

MIDI will add 1 bit to 1 bit to judge the type of information, so it is correct,

The material should be 10 bits.)

MIDI Message

Midi Device usually uses 2 - 3 Byte to represent a MIDI Message, any MIDI

Message's first Byte called Status Byte, later known as data byte.status Byte is used

Note the type or role of this MIDI Message, it may indicate that this message is a Note On

Message or Pitch Bend Change Message ... et al. Data Byte is a value for a given STATUS.

For example, you can see this instructions later in the source manual:

Note ON:

Status Second Third

----- ------ -----

9nh kkh vvh

n = MIDI CHANNEL NUMBER: 0H-FH (0-15)

KK = Note Number: 00H-7FH (0-127)

VV = velocity: 01H-7FH (1-127)

Status Byte tells Midi Device This is a Note On Message because Mote on Message

Is a MIDI CHANNEL message, so we have to specify the Channel to it, n value is specified

Transfer Channel number.

The back followed by Second and Third is Data Byte, used to assume the value of Status Byte, KK means this

Note number, number of numbers by 0-127; VV represents this Note's strength, range from 1-127 (0 representative

Sound, belongs to Note Off.

To distinguish between Status Byte and Data Byte, MIDI uses 0-127 represents Data Byte, 128-255

STATUS BYTE.

Midi Message Type

Midi Message can be divided into two kinds of system message and channel message, CHANNEL

The Status Byte in Message contains the Channel number, specifying the message is received by a channel; system

Message is not, so every Channel can receive .System Message and Channel

The content of Message is as follows:

.System message

Comman Message

Zong Position Pointer

2.song select

3.Tune Request

4.eox (end of exclusive)

b. Real-time message

Ttiming Clock

2.start

3.stop

4.Continue

5.active sensing

6.System RESET

c. System Exclusive Message

Channel Message

a. Mode Message

1.Local Control

2.all notes off

3.omni mode OFF

4.omni mode on

5.Mono Mode ON

6.Poly Mode ON

b. Voice Message

1.note on

2.Note Off

3.Polyphonic KEY PRESSURE

4.Channel Pressure

5.Program Change

6.Control Change

7.PITCH BEND CHANGE

The list of Control Change Message in CHANNEL Message is as follows:

-------------------------------------------------- -

0 Undefined

1 MODULATION WHEEL OR LEVER

2 BREATH Controller

3 Undefined

4 Foot Controller

5 Poramento Time

6 Data Entry MSB

7 Main Volume

8 balance

9 Undefined

10 PAN

11 EXPRESSION CONTROLLER

12-15 undefined

16-19 General-Purpose Controllers (Number 1 To 4)

20-31 undefined

32-63 LSB for Values ​​0 to 31

64 DAMPER PEDAL (SUSTAIN)

65 Portamento

66 SOSTENUTO

67 Soft Pedal

68 undefined

69 Hold 2

70-79 undefined

80-83 General-Purpose Controllers (Numbered 5 to 8)

84-91 Undefined

92 Tremolo Depth

93 Chorus Depth

94 CELESTE (DETUNE) DEPTH

95 Phaser DePth

96 Data Increment

97 Data Decrement

98 Non-Registered Parameter Number LSB

99 Non-Registered Parameter Number MSB

100 Registered Parameter Number LSB

101 Registered Parameter Number MSB

102-121 undefind122 reserved for channel mode message.

Seventeenth, reference materials

Website:

http://spinserve.com/stairway/midim/midim.htm

Http://cslin.auto.fcu.edu.tw/scteach/scteach88/tidsp/index.html

http://cslin.auto.fcu.edu.tw/scteach/scteach88/pack/index4.htm

books:

◎ Java program constructed thinking - from getting started to advance

Author: Zhou Zheng Hong

Publishing House: Wenkuo Information Co., Ltd.

March 2002 2 brush

= 10)

{

Switch (x% 10)

= 10)

{

Switch (x% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: system.out.print ("b"); Break;

Case 2: System.out.print ("c"); Break;

Case 3: System.out.print ("D"); Break;

Case 4: System.out.print ("E"); Break;

Case 5: system.out.print ("f"); Break;

}

= 10)

{

Switch (Y% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: system.out.print ("b"); Break;

Case 2: System.out.print ("c"); Break;

Case 3: System.out.print ("D"); Break;

Case 4: System.out.print ("E"); Break;

Case 5: system.out.print ("f"); Break;

}

}

Else

{

IF (y! = 0) {system.out.print (y);

Else {IF (x! = 0) System.out.print (Y);

}

}

/ / -------------------------------------------------------------------------------------------- -----------------------------------

Public static void main (string [] args) throws oException

{

FileInputStream FileRead = New FileInputStream ("Mioko2.wav");

INT C, NUM = 1;

INT N [] = new int [4], j = 0; int V [] = new int [2];

/ / -------------------------------------------------------------------------------------------- ----------------------------------

System.out.println ("HEADER Site (0x0-0XB)");

System.out.print ("(0x0-0X3) 4 BYTES fixed to");

While ((c = fileread.read ())! = -1 && num <= 4)

{

N [J] = C; J ; Num ;

IF (Num == 5)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x4-0x7) 4 BYtes is Wave Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x8-0x11) 4 BYTES fixed to riff type");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1) && (Num <= 12))

{

N [J] = C; J ; Num ;

IF (NUM == 13)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i )

System.out.print ((char) n [i]);

System.out.print (")");

}

}

System.out.println ("/ N / NFORMAT part (0xc-0x23)");

System.out.print ("(0xC-0xF) 4 BYTES fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileRead.read ())! = -1 && num <= 16)

{

N [J] = C; J ; Num ;

IF (Num == 17)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i ) system.out.print ((char) n [i]);

System.out.print (")");

}

}

System.out.print ("/ n (0x10-0x13) 4 Bytes is Format Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num <= 20))

= 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x14-0x15) 2 BYtes is format type");

J = 0; V [J] = C; J ; NUM ;

While (((c = fileread.read ())! = -1) && (num stereo ");}

}

}

System.out.print ("/ n (0x16-0x17) 2 BYTES defined channel number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (NUM " V [1] V [0] " a Channel ");

}

}

System.out.print ("/ n (0x18-0x1b) 4 BYTES definition sampling rate: this WAVE file sampling frequency

0x ");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x1c-0x1f) 4 BYtes define the number of 0x per second");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x20-0x21) 2 BYtes define each sampling BYTES number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (Num <= 34))

{

V [J] = C; J ; Num ;

= 0; A -)

System.out.print (v [a] "");

}

}

System.out.print ("/ n (0x22-0x23) 2 BYTES defines the number of bits of each sample");

J = 0; V [j] = C; J ; Num ; while ((c = fileread.read ())! = -1) && (Num = 0; A -)

System.out.print (v [a] "");

}

}

System.out.println ("/ N / NDATA part (0x24 ~)");

System.out.print ("(0x24-0X27) 4 Bytes fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && num <= 40)

{

N [J] = C; J ; Num ;

IF (Num == 41)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x28-0x2b) 4 BYtes is Data Chunk Length 0x");

J = 0; N [J] = C; J ; Num ;

While (c = fileread.read ())! = -1 && (Num = 10)

{

Switch (x% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: system.out.print ("b"); Break;

Case 2: System.out.print ("c"); Break;

Case 3: System.out.print ("D"); Break;

Case 4: System.out.print ("E"); Break;

Case 5: system.out.print ("f"); Break;

= 10)

{

Switch (Y% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: system.out.print ("b"); Break;

Case 2: System.out.print ("c"); Break;

Case 3: System.out.print ("D"); Break;

Case 4: System.out.print ("E"); Break;

Case 5: system.out.print ("f"); Break;

}

}

Else

{

IF (y! = 0) {system.out.print (y);

Else {IF (x! = 0) System.out.print (Y);

}

}

// -------------- Fu Liye conversion -------------------------

Static Double [] swap (double data [], int a, int b) {double tempr = data [A];

Data [A] = DATA [B];

Data [B] = Tempr;

Return Data;

}

Static Double [] Four1 (Double Data [], INT NN, ISIGN

{

INT N, MMAX, M, J, ISTEP, I;

Double WTEMP, WR, WPR, WPI, Wi, Theta;

Double Tempr, TEMPI;

n = nn << 1;

J = 1;

For (i = 1; i) {

Data = swap (data, j, i);

Data = SWAP (Data, J 1, I 1);

}

mmax) {

Istep = mmax << 1;

Theta = isign * (6.28318530717959 / mmax);

WTEMP = Math.sin (0.5 * Theta);

WPR = -2.0 * wtemp * wtemp;

WPI = Math.sin (Theta);

WR = 1.0;

Wi = 0.0;

FOR (M = 1; M

FOR (i = m; i <= n; i = istep) {

J = i mmax;

TEMPR = WR * DATA [J] -wi * data [j 1];

Tempi = WR * DATA [J 1] Wi * Data [J];

Data [J] = DATA [I] -Tempr;

Data [J 1] = DATA [i 1] -Tempi;

DATA [I] = Tempr;

Data [i 1] = TEMPI;

}

WR = (wtemp = WR) * WPR-WI * WPI WR;

Wi = Wi * WPR WTEMP * WPI WI;

}

mmax = istep;

}

IF (isign == - 1)

FOR (m = 1; m )

{

Data [M] / = NN;

}

Return Data;

}

/ / -------------------------------------------------------------------------------------------- -------------------------------------------

Public static void main (string [] args) throws oException

{

FileInputStream FileRead = New FileInputStream ("08.wav");

INT C, NUM = 1;

INT N [] = new int [4], j = 0; int v [] = new int [2]; double data [] = new double [9];

// -------------------------------------- Header part ------ -------------------------------

System.out.println ("HEADER Site (0x0-0XB)");

System.out.print ("(0x0-0X3) 4 BYTES fixed to");

While ((c = fileread.read ())! = -1 && num <= 4)

{

N [J] = C; J ; Num ;

IF (Num == 5)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x4-0x7) 4 BYtes is Wave Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x8-0x11) 4 BYTES fixed to riff type");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1) && (Num <= 12))

{

N [J] = C; J ; Num ;

IF (NUM == 13)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i )

System.out.print ((char) n [i]);

System.out.print (")");

}

}

/ / ------------------------------------------------------------------------------------------- ---------------------------------

System.out.println ("/ N / NFORMAT part (0xc-0x23)");

System.out.print ("(0xC-0xF) 4 BYTES fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileRead.read ())! = -1 && num <= 16)

{

N [J] = C; J ; Num ;

IF (Num == 17)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = n [a] / 16; int y = n [a]% 16; DECIDE1 (X, Y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i )

System.out.print ((char) n [i]);

System.out.print (")");

}

}

System.out.print ("/ n (0x10-0x13) 4 Bytes is Format Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x14-0x15) 2 BYtes is format type");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (num mono ");}

STEREO ");

}

}

System.out.print ("/ n (0x16-0x17) 2 BYTES defined channel number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (NUM " V [1] V [0] " a Channel ");

}

}

System.out.print ("/ n (0x18-0x1b) 4 BYTES definition sampling rate: this WAVE file sampling frequency

0x ");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x1c-0x1f) 4 BYtes define the number of 0x per second");

J = 0; N [J] = C; J ; Num ;

While (c = fileread.read ())! = -1 && (Num <= 32)))

{

N [J] = C; J ; Num ;

= 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x20-0x21) 2 BYtes define each sampling BYTES number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (NUM = 0; a -) System.out.print (v [a] "");

}

}

System.out.print ("/ n (0x22-0x23) 2 BYTES defines the number of bits of each sample");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (Num = 0; A -)

System.out.print (v [a] "");

}

}

// ---------------------------------------------- ----------------------------

System.out.println ("/ N / NDATA part (0x24 ~)");

System.out.print ("(0x24-0X27) 4 Bytes fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && num <= 40)

{

N [J] = C; J ; Num ;

IF (Num == 41)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x28-0x2b) 4 BYtes is Data Chunk Length 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n"); int E = 0;

INT Q = 1;

While (c = fileread.read ())! = -1 && (Num <= 52 e))))

{

Data [0] = 0.0; DATA [q] = C;

Q ;

Num ;

}

System.out.print ("/ n conversion");

For (int u = 1; u <= 8; u )

System.out.print ("" Data [u] "/ t");

Four1 (DATA, 4, 1); System.out.println ("/ N Translation");

For (int P = 1; p <= 8; p )

System.out.println (" DATA [P]);

Four1 (DATA, 4, -1);

System.out.println ("/ N conversion back to the original information");

For (int P = 1; p <= 8; p )

System.out.println (" DATA [P]);

FileRead.Close ();

}

}

-------------------------------------------------------------------------------------------------------------------------------------------------- -

Import java.io. *;

Public Class Readline

{

Public static void main (string args []) THROWS EXCEPTION

{

Double B [] = new double [16];

INT i = 0;

Double F, A;

FileReader fr = new fileReader ("02.txt");

BufferedReader Br = New BufferedReader (FR);

String line = br.readline ();

For (int J = 0; j <16; j )

{

While (Line! = NULL && I <= 9999)

{

System.out.println ("Record" i ", / T" "value:" line);

a = double.parsedouble (line);

B [J] = A;

System.out.println ("Record" i ", / T" "value:" a);

Line = br.readline ();

i ;

}

i = 0;

}

For (int J = 0; j <16; j )

System.out.println ("SUM [" J "] =" B [J]);

br.close ();

Fr.close ();

}

}

------------------------------------------------------------------------------------------------------------------------ -------------

Import java.io. *;

Public Class Cal

{

Public static void main (string args []) THROWS EXCEPTION

{

Double

A [] = {- 12.94415288168802541991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 384.3178300

517009, 70.82904190851768, 58.939048922740255, 66.91218671296072, 67.72228973

"296078, 59.

Double

B [] = {- 18.054321451327972, 2.070862511619985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -106.547688

73349997, -32.56270462765004, -26.531717235440034, -14.147701522292923, -14.262758538992873998, -27.0223252765601, -95.0871843334993}

INT i = 0; Double C, D = 0.0, E = 0.0;

For (int J = 0; j <16; j )

{

C = a [j] -b [j];

C * = C;

D = C;

i ;

}

E = math.sqrt (d);

System.out.println ("calculation results:" E);

}

}

-------------------------------------------- -----

Import java.io. *;

Public Class Cala

{

Public static void main (string args []) THROWS EXCEPTION

{

Double F, G, H = 0.0, E = 992.4565135112156, R = 542.9029162631446

// Double Sum [] = new double [64]

// int T;

// for (int T = 0; t <64; t );

// {

H = E * 0.8;

f = e-h;

G = E H;

//}

IF (r = f)

{System.out.println ("Information is in line with!");

// system.out.println ("h =" h "f =" f "g =" g);

}

Else

{System.out.println ("Information is not in conformance!");

// system.out.println ("h =" h "f =" f "g =" g);

}

}

}

---------------------- JDBC connection Search information ----------------------- ---

Import javax.swing. *;

Import javax.swing.event. *;

Import java.awt. *;

Import java.awt.event. *;

Import javax.swing.table.tablemodel;

Import java.net. *;

Import java.sql. *;

Import java.lang. *;

Public Class JDBC7 Extends Jframe

{

Private JTable Table;

Private string [] [] DATA;

Public static void main (string [] args)

{

JDBC7 frame = new JDBC7 ();

Frame.setsize (300, 300);

Frame.PACK ();

Frame.setVisible (TRUE);

}

Public JDBC7 ()

{

String [] colornnames = {"name", "row1", "row2", "row3",

"ROW4", "Row5", "Row6", "Row7",

"ROW8", "Row9", "Row10", "Row11", "Row12", "Row13", "Row14", "Row15",

"ROW16"

}

Connection Connection;

Statement Statement;

ResultSet ResultSet;

IRECordnum = 0;

0)

{

Data = new string [irecordnum] []; // Data takes the second-dimensional capital in the database

material

ResultSet.BeforeFirst (); // Back to the first column

System.out.println ("IRecordnum =" IRecordnum);

For (int i = 0; i

{

ResultSet.next ();

Data [i] = new string [17]; // a few columns

For (int J = 0; j <17; j ) // line

{

Data [i] [j] = new string (resultset.getstring (j 1));

System.out.println ("DATA [" i "] [" J "] ="

Data [i] [j]);

}

0)

{

// CREATE TABLE

Table = new JTABLE (DATA, ColumnNames); // put the data and the number of rows

JTable

Table.SetPreferredscrollviewViewPortsize (New Dimension (300, 100));

// Text table size

Jscrollpane TablePane = New Jscrollpane (Table); // Scroll

Settitle ("Demo of Table"); // Label

Container content = getContentPane ();

Content.add (TablePane, BorderLayout.center);

// Close

AddWindowListener (New Windowadapter ()

{

Public void WINDOWCLOSIG (WindowEvent E)

{

System.exit (0);

}

});

// Single Selection ONLY

Table.setSelectionMode (ListSelectionModel.single_selection);

}

}

}

----------------------------------

Sound identification system completes -----------------------------------

Import java.io. *;

Public Class Test13

{

Static void Decide1 (int X, int y)

= 10)

{

Switch (x% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: system.out.print ("b"); Break;

Case 2: System.out.print ("c"); Break;

= 10)

{

Switch (Y% 10)

{

Case 0: System.out.print ("a"); Break;

Case 1: System.Out.print ("b"); Break; Case 2: System.out.print ("c"); break;

Case 3: System.out.print ("D"); Break;

Case 4: System.out.print ("E"); Break;

Case 5: system.out.print ("f"); Break;

}

}

Else

{

IF (y! = 0) {system.out.print (y);

Else {IF (x! = 0) System.out.print (Y);

}

}

// ------------------------------------ Fu Liye conversion -------- ------------------------------------

Static double [] swap (double data [], int A, int b) {

Double Tempr = Data [A];

Data [A] = DATA [B];

Data [B] = Tempr;

Return Data;

}

Static Double [] Four1 (Double Data [], INT NN, ISIGN

{

INT N, MMAX, M, J, ISTEP, I;

Double WTEMP, WR, WPR, WPI, Wi, Theta;

Double Tempr, TEMPI;

n = nn << 1;

J = 1;

For (i = 1; i mmax) {

Istep = mmax << 1;

Theta = isign * (6.28318530717959 / mmax);

WTEMP = Math.sin (0.5 * Theta);

WPR = -2.0 * wtemp * wtemp;

WPI = Math.sin (Theta);

WR = 1.0;

Wi = 0.0;

FOR (M = 1; M

FOR (i = m; i <= n; i = istep) {

J = i mmax;

TEMPR = WR * DATA [J] -wi * data [j 1];

Tempi = WR * DATA [J 1] Wi * Data [J];

Data [J] = DATA [I] -Tempr;

Data [J 1] = DATA [i 1] -Tempi;

DATA [I] = Tempr;

Data [i 1] = TEMPI;

}

WR = (wtemp = WR) * WPR-WI * WPI WR;

Wi = Wi * WPR WTEMP * WPI WI;

}

mmax = istep;

}

IF (isign == - 1)

FOR (m = 1; m )

{

Data [M] / = NN;

}

Return Data;

}

//-------------------------------------------Comparison--- --------------------------------------------

Static Double Sum (Double Sum [], Double AS [])

{

Double C, D = 0.0, E = 0.0;

INT i = 0, k = 0;

For (int J = 0; j <64; j )

{

C = SUM [J] -AS [J];

C * = C;

D = C;

}

E = math.sqrt (d);

Return E;

}

/ / -------------------------------------------------------------------------------------------- -------------------------------------------------- --Public static void main (String [] args) throws oException

{

FileInputStream FileRead = New FileInputStream ("Mioko1.wav"); //

new

Sound file

INT C, NUM = 1, J = 0, f = 0, DataSize = 1024, N [] = new int [4], v [] = new int =

Double Data [], sum [] = new double [64], as [] = new double [64], r, bs [] = new

Double [64], cs [] = new double [64];

Data = New Double [DataSize 1];

FileReader fr = new fileReader ("mikeko02.txt"); // read into the comparison

Sound 1

BufferedReader Br = New BufferedReader (FR);

String line = br.readline ();

While (Line! = NULL && F <64)

{

R = double.parsedouble (line);

AS [f] = R;

Line = br.readline ();

F ;

}

f = 0;

FileReader fr1 = new fileReader ("anny01.txt"); // read into the comparison

Sound 2

BufferedReader Br1 = New BufferedReader (FR1);

String line1 = br1.readline ();

While (Line1! = NULL && F <64)

{

R = double.parsedouble (line1);

BS [F] = R;

LINE1 = br1.readline ();

F ;

}

f = 0;

FileReader fr2 = new fileReader ("melody02.txt"); // read into the sound to be aligned

Sound 3

BufferedReader Br2 = New BufferedReader (FR2);

String line2 = br2.readline ();

While (Line2! = NULL && F <64)

{

R = double.parsedouble (line2);

CS [F] = R;

Line2 = br2.readline ();

F ;

}

// --------------------------------------- -----------------------------------

System.out.println ("HEADER Site (0x0-0XB)");

System.out.print ("(0x0-0X3) 4 BYTES fixed to");

While ((c = fileread.read ())! = -1 && num <= 4)

{

N [J] = C; J ; Num ;

IF (Num == 5)

{

System.out.print ("/"); for (int a = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x4-0x7) 4 BYtes is Wave Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x8-0x11) 4 BYTES fixed to riff type");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1) && (Num <= 12))

{

N [J] = C; J ; Num ;

IF (NUM == 13)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i )

System.out.print ((char) n [i]);

System.out.print (")");

}

}

// ----------------------------------- ---------- -------------------------------------

System.out.println ("/ N / NFORMAT part (0xc-0x23)");

System.out.print ("(0xC-0xF) 4 BYTES fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileRead.read ())! = -1 && num <= 16)

{

N [J] = C; J ; Num ;

IF (Num == 17)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = n [a] / 16; int y = n [a]% 16; DECIDE1 (X, Y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int i = 0; i <= 3; i )

System.out.print ((char) n [i]);

System.out.print (")");

}

}

System.out.print ("/ n (0x10-0x13) 4 Bytes is Format Chunk Size 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n (0x14-0x15) 2 BYtes is format type");

J = 0; V [J] = C; J ; NUM ;

While (((c = fileread.read ())! = -1) && (num stereo ");}

}

}

System.out.print ("/ n (0x16-0x17) 2 BYTES defined channel number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (num <= 24))

{

V [J] = C; J ; Num ;

IF (Num == 25)

{

" V [1] V [0] " Channel ");

}

}

System.out.print ("/ n (0x18-0x1b) 4 BYTES definition sampling rate: this WAVE file sampling frequency

0x ");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x1c-0x1f) 4 BYtes define the number of 0x per second");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

}

}

System.out.print ("/ n (0x20-0x21) 2 BYtes define each sampling BYTES number");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (NUM = 0; a -) System.out.print (v [a] "");

}

}

System.out.print ("/ n (0x22-0x23) 2 BYTES defines the number of bits of each sample");

J = 0; V [J] = C; J ; NUM ;

While ((c = fileread.read ())! = -1) && (Num = 0; A -)

System.out.print (v [a] "");

}

}

// ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------

System.out.println ("/ N / NDATA part (0x24 ~)");

System.out.print ("(0x24-0X27) 4 Bytes fixed to");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && num <= 40)

{

N [J] = C; J ; Num ;

IF (Num == 41)

{

System.out.print ("/");

For (int A = 0; a <= 3; A )

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide1 (x, y);

System.out.print ("");

}

System.out.print ("/" " " " " (");

For (int A = 0; a <= 3; A )

System.out.print (CHAR) N [A]);

System.out.print (")");

}

}

System.out.print ("/ n (0x28-0x2b) 4 BYtes is Data Chunk Length 0x");

J = 0; N [J] = C; J ; Num ;

While ((c = fileread.read ())! = -1 && (Num = 0; A -)

{

INT x = N [a] / 16; int y = n [a]% 16;

Decide2 (x, y);

}

System.out.print ("Bytes");

}

}

System.out.print ("/ n"); int E = 0, D = 0, g = 0; Double CC = 0.0;

DO

//do...While Recycling Time 324 is more than once, deposited in the SUM array

{

Data [0] = 0.0;

INT Q = 1; CC = (double) C / 256; DATA [q] = cc; q ; Num ;

G ;

While ((c = fileread.read ())! = -1 && (Num <= DATASIZE-1 45 E))

{

CC = (double) C / 256; DATA [q] = cc;

Q ;

Num ; g ;

}

E = E 1023;

Four1 (Data, DataSize / 2, 1); // ---------------- Call Fourier Conversion

-----------------------------------

For (int P = 1; P <= DataSize; P )

SUM [D] = DATA [P];

D ;

} while (c! = -1);

Double H = SUM (SUM, AS); // ------------------ Call Alignment ---

Sound 1 operation

--------------------

Double H1 = SUM (SUM, BS); // ------------------ Call Alignment ---

Sound 2

--------------------

Double H2 = SUM (SUM, CS); // ------------------ Call Alignment ---

Sound 3

--------------------

System.out.println ("/ N and Mikeko calculation results:" h);

System.out.println ("/ N and Anny calculation results poor:" H1);

System.out.println ("/ n and melody calculation results:" H2);

/ / -------------------------------------------------------------------------------------------- -------------------------------------------------- -

FileRead.Close ();

}

}

转载请注明原文地址:https://www.9cbs.com/read-110144.html

New Post(0)