TSongDb 類別 參考文件

#include <SongDb.h>

全部成員列表

公開方法(Public Methods)

 TSongDb ()
 ~TSongDb ()
void SetOption (int, char *language=NULL, int method=METHOD_LSDTW)
bool Read (TInputStream *, TInputStream *, bool _expand=true)
 從index檔和db檔讀取資料庫,如果已經讀取過了,則會附加在後面
bool Write (TOutputStream *, TOutputStream *)
 將所有歌曲資料寫入index檔和db檔
bool Write (TOutputStream *, TOutputStream *, int, int)
 將某些歌曲資料寫入index檔和db檔
int AddSong (TSongItem *)
 增加一首歌曲,只新增一個指標連結,並不會將歌曲複製一份
void DeleteSong (int)
 刪除一首歌曲
void DeleteSong (TSongItem *)
 刪除一首歌曲
TSongItemGetSong (int)
 傳回某一首歌
int GetSongNumber (void)
 傳回資料庫中的歌曲數目
void Compare (int *, int)
 比對所有歌曲
void Compare (int *, int, int, int)
 比對所部份歌曲
int Compare (char *, char *, bool, bool *)
 找出某個欄位符合某個值的歌曲
int Compare (char *, int, int, bool *)
 找出某個欄位值符合某個長度的歌曲,若值當中有雙位元的字,會當成一個字
TSongItemGetTopSong (int)
 傳回某一個名次的歌曲
int GetTopSongIndex (int)
 傳回某一個名次的歌曲索引
void StopCompare (void)
 停止比對
int GetCompareProgress (void)
 傳回比對進度,範圍從0到100

保護方法(Protected Methods)

void AllNoteToMid (void)
 將每首歌轉換成中介格式
void SortByScore (int, int)
 依分數排序歌曲

保護屬性

int resampleRate
int compareMethod
int compareFrom
char compareLanguage [20]
TSongItem ** Song
 資料庫中的所有歌曲
int songNumber
 歌曲數目
int compareNum1
 比對的歌曲數目之一
int compareNum2
 比對的歌曲數目之二
int compareProgress1
int compareProgress2
bool expand
bool stopCompare
 比對是否被中斷
int * topSongIndex
 將歌曲依名次排序後的index


詳細描述

TSongDb代表的是歌曲的資料庫

定義在 SongDb.h 檔案之第 14 行.


建構子與解構子說明文件

TSongDb::TSongDb (  ) 

定義在 SongDb.cpp 檔案之第 135 行.

參考 COMPARE_FROM_ANYWHERE, compareProgress1, compareProgress2, resampleRate, SetOption(), Song, songNumber, 及 topSongIndex.

TSongDb::~TSongDb (  ) 

定義在 SongDb.cpp 檔案之第 148 行.

參考 Song, songNumber, 及 topSongIndex.


函式成員說明文件

int TSongDb::AddSong ( TSongItem SongItem  ) 

增加一首歌曲,只新增一個指標連結,並不會將歌曲複製一份

參數:
SongItem 為新增的歌
傳回值:
新增歌曲的索引

定義在 SongDb.cpp 檔案之第 290 行.

參考 Song, songNumber, 及 topSongIndex.

void TSongDb::AllNoteToMid ( void   )  [protected]

將每首歌轉換成中介格式

int TSongDb::Compare ( char *  fieldName,
int  size,
int  operate,
bool *  result 
)

找出某個欄位值符合某個長度的歌曲,若值當中有雙位元的字,會當成一個字

參數:
fieldName 為某一欄位的名稱
size 為期望值
operate 為-1, 0 或 1,代表小於、等於或大於
result 為傳出結果,true代表符合,false代表不符合
傳回值:
符合的歌曲數目

定義在 SongDb.cpp 檔案之第 808 行.

參考 Song, 及 songNumber.

int TSongDb::Compare ( char *  fieldName,
char *  value,
bool  exactMatch,
bool *  result 
)

找出某個欄位符合某個值的歌曲

參數:
fieldName 為某一欄位的名稱
value 為期望值
exactMatch 為字串是否要完全符合或部份符合
result 為傳出結果,true代表符合,false代表不符合
傳回值:
符合的歌曲數目

定義在 SongDb.cpp 檔案之第 756 行.

參考 TSongItem::Fields, Song, songNumber, strequal(), strnequal(), 及 TMyStringList::Values().

void TSongDb::Compare ( int *  waveMid,
int  waveSize,
int  fromIndex,
int  toIndex 
)

比對所部份歌曲

第一階段用 linear scaling 的方法,第二階段用 dynamic time warping 的方法 根據method的設定不同而做不同的比對

參數:
waveMid 為唱進來的中介格式
waveSize 為waveMid的長度
fromIndex 為比對的起始範圍
toIndex 為比對的結束範圍

定義在 SongDb.cpp 檔案之第 409 行.

參考 TSongItem::bestSegment, COMPARE_FROM_HEAD, COMPARE_FROM_REFRAIN, compareFrom, compareLanguage, compareMethod, compareNum1, compareNum2, compareProgress1, compareProgress2, CONSTA, CONSTB, dtw(), expand, TSongItem::Fields, TSongItem::FreeMid(), INFINITE_INT, insertArray(), INTEGER_SCALE, METHOD_DTW, METHOD_LINEAR_SCALING, METHOD_LSDTW, METHOD_NOTEBEGIN_DTW, TSongItem::mid, TSongItem::midRefrainIndex, TSongItem::midSize, min(), MIN_WARP_RATE, TSongItem::noteIndex, TSongItem::noteIndexSize, TSongItem::NoteToMid(), TSongItem::refrainIndexSize, resampleRate, TSongItem::score, shiftMid(), shiftMidToMeanZero(), Song, songNumber, SortByScore(), stopCompare, topSongIndex, TMyStringList::Values(), 及 WARP_NUM.

void TSongDb::Compare ( int *  waveMid,
int  waveSize 
)

比對所有歌曲

參數:
waveMid 為唱進來的中介格式
waveSize 為waveMid的長度

定義在 SongDb.cpp 檔案之第 386 行.

參考 songNumber.

被參考於 main().

void TSongDb::DeleteSong ( TSongItem SongItem  ) 

刪除一首歌曲

參數:
SongItem 為刪除的歌

定義在 SongDb.cpp 檔案之第 336 行.

參考 DeleteSong(), Song, 及 songNumber.

void TSongDb::DeleteSong ( int  index  ) 

刪除一首歌曲

參數:
index 為刪除的歌的索引

定義在 SongDb.cpp 檔案之第 314 行.

參考 Song, songNumber, 及 topSongIndex.

被參考於 DeleteSong().

int TSongDb::GetCompareProgress ( void   ) 

傳回比對進度,範圍從0到100

傳回值:
比對進度

定義在 SongDb.cpp 檔案之第 916 行.

參考 compareNum1, compareNum2, compareProgress1, 及 compareProgress2.

TSongItem * TSongDb::GetSong ( int  index  ) 

傳回某一首歌

參數:
index 為指定的歌曲索引
傳回值:
第index首歌

定義在 SongDb.cpp 檔案之第 358 行.

參考 Song, 及 songNumber.

int TSongDb::GetSongNumber ( void   ) 

傳回資料庫中的歌曲數目

傳回值:
資料庫中的歌曲數目

定義在 SongDb.cpp 檔案之第 371 行.

參考 songNumber.

TSongItem * TSongDb::GetTopSong ( int  rank  ) 

傳回某一個名次的歌曲

參數:
rank 為名次,範圍從0到比對的歌曲數-1,否則會傳回無法預期的topSongIndex
傳回值:
第rank名的歌曲

定義在 SongDb.cpp 檔案之第 878 行.

參考 Song, 及 topSongIndex.

被參考於 main().

int TSongDb::GetTopSongIndex ( int  rank  ) 

傳回某一個名次的歌曲索引

參數:
rank 為名次,範圍從0到比對的歌曲數-1,否則會傳回無法預期的topSongIndex
傳回值:
第rank名的歌曲索引

定義在 SongDb.cpp 檔案之第 893 行.

參考 topSongIndex.

bool TSongDb::Read ( TInputStream IndexStream,
TInputStream DbStream,
bool  _expand = true 
)

從index檔和db檔讀取資料庫,如果已經讀取過了,則會附加在後面

cbmrmain.cpp呼叫時_expand是設false.

參數:
IndexStream 為index檔
DbStream 為db檔
_expand 設定note是否展開成mid
傳回值:
是否成功

定義在 SongDb.cpp 檔案之第 185 行.

參考 TMyList::Add(), TMyList::count, expand, INTEGER_SCALE, TMyList::Items(), TSongItem::Read(), TDataInputStream::ReadLine(), resampleRate, TSongItem::SetProperty(), Song, songNumber, 及 topSongIndex.

被參考於 main().

void TSongDb::SetOption ( int  ,
char *  language = NULL,
int  method = METHOD_LSDTW 
)

定義在 SongDb.cpp 檔案之第 158 行.

參考 compareFrom, compareLanguage, 及 compareMethod.

被參考於 main(), 及 TSongDb().

void TSongDb::SortByScore ( int  sortNum,
int  topNum 
) [protected]

依分數排序歌曲

參數:
sortNum 為要排序的歌曲數目
topNum 為只排序出前topNum名即可

定義在 SongDb.cpp 檔案之第 839 行.

參考 Song, 及 topSongIndex.

被參考於 Compare().

void TSongDb::StopCompare ( void   ) 

停止比對

定義在 SongDb.cpp 檔案之第 903 行.

參考 stopCompare.

bool TSongDb::Write ( TOutputStream IndexStream,
TOutputStream DbStream,
int  fromIndex,
int  toIndex 
)

將某些歌曲資料寫入index檔和db檔

參數:
IndexStream 為index檔
DbStream 為db檔
fromIndex 代表從哪一首歌開始
toIndex 代表到哪一首歌為止
傳回值:
是否成功

定義在 SongDb.cpp 檔案之第 265 行.

參考 Song, songNumber, 及 Write().

bool TSongDb::Write ( TOutputStream IndexStream,
TOutputStream DbStream 
)

將所有歌曲資料寫入index檔和db檔

參數:
IndexStream 為index檔
DbStream 為db檔
傳回值:
是否成功

定義在 SongDb.cpp 檔案之第 244 行.

參考 songNumber.

被參考於 Write().


資料成員說明文件

int TSongDb::compareFrom [protected]

定義在 SongDb.h 檔案之第 17 行.

被參考於 Compare(), 及 SetOption().

char TSongDb::compareLanguage[20] [protected]

定義在 SongDb.h 檔案之第 18 行.

被參考於 Compare(), 及 SetOption().

int TSongDb::compareMethod [protected]

定義在 SongDb.h 檔案之第 17 行.

被參考於 Compare(), 及 SetOption().

int TSongDb::compareNum1 [protected]

比對的歌曲數目之一

定義在 SongDb.h 檔案之第 21 行.

被參考於 Compare(), 及 GetCompareProgress().

int TSongDb::compareNum2 [protected]

比對的歌曲數目之二

定義在 SongDb.h 檔案之第 22 行.

被參考於 Compare(), 及 GetCompareProgress().

int TSongDb::compareProgress1 [protected]

定義在 SongDb.h 檔案之第 23 行.

被參考於 Compare(), GetCompareProgress(), 及 TSongDb().

int TSongDb::compareProgress2 [protected]

定義在 SongDb.h 檔案之第 24 行.

被參考於 Compare(), GetCompareProgress(), 及 TSongDb().

bool TSongDb::expand [protected]

定義在 SongDb.h 檔案之第 25 行.

被參考於 Compare(), 及 Read().

int TSongDb::resampleRate [protected]

定義在 SongDb.h 檔案之第 17 行.

被參考於 Compare(), Read(), 及 TSongDb().

TSongItem** TSongDb::Song [protected]

資料庫中的所有歌曲

定義在 SongDb.h 檔案之第 19 行.

被參考於 AddSong(), Compare(), DeleteSong(), GetSong(), GetTopSong(), Read(), SortByScore(), TSongDb(), Write(), 及 ~TSongDb().

int TSongDb::songNumber [protected]

歌曲數目

定義在 SongDb.h 檔案之第 20 行.

被參考於 AddSong(), Compare(), DeleteSong(), GetSong(), GetSongNumber(), Read(), TSongDb(), Write(), 及 ~TSongDb().

bool TSongDb::stopCompare [protected]

比對是否被中斷

定義在 SongDb.h 檔案之第 25 行.

被參考於 Compare(), 及 StopCompare().

int* TSongDb::topSongIndex [protected]

將歌曲依名次排序後的index

定義在 SongDb.h 檔案之第 26 行.

被參考於 AddSong(), Compare(), DeleteSong(), GetTopSong(), GetTopSongIndex(), Read(), SortByScore(), TSongDb(), 及 ~TSongDb().


此類別(class) 文件是由下列檔案中產生:
產生日期:Tue Jul 11 11:52:19 2006, 專案:cbmr, 產生器:  doxygen 1.4.7