百科解釋
目錄·一、設(shè)備同步·二、編程方面的同步 一、設(shè)備同步 當(dāng)兩個(gè)設(shè)備一起工作并對(duì)時(shí)間有精確要求的時(shí)候,就需要在它們之間進(jìn)行同步。同步是基于在兩個(gè)設(shè)備之間規(guī)定一個(gè)共同的時(shí)間參考。例如,你想將32軌的音頻信號(hào)錄制在兩臺(tái)16軌磁帶機(jī)上,則這兩個(gè)磁帶機(jī)的磁帶傳送軸就需要鎖定在一起,這個(gè)過程就稱為同步。如果這兩個(gè)設(shè)備沒有進(jìn)行同步,無論它們開始的時(shí)間多么一致,也會(huì)由于兩臺(tái)設(shè)備機(jī)械結(jié)構(gòu)的差異而產(chǎn)生時(shí)間漂移。 桌面型音樂制作系統(tǒng)經(jīng)常遇到的同步通常是在音序器(或音序軟件)與多軌錄音機(jī)之間進(jìn)行的,同步的目的主要是將不同MIDI音色的聲音錄到單獨(dú)的音軌上。即使你只使用一臺(tái)多任務(wù)型電腦(既是音序器,又是數(shù)字音頻錄音機(jī)),它本身也同樣存在同步問題。雖然以計(jì)算機(jī)為基礎(chǔ)的數(shù)字音頻設(shè)備比機(jī)械式磁帶錄音機(jī)要精確得多,但是如果缺少同步,也會(huì)出現(xiàn)一些問題。 當(dāng)兩臺(tái)(或多臺(tái))設(shè)備進(jìn)行同步的時(shí)候,其中一臺(tái)稱為主機(jī)(以其內(nèi)部發(fā)送的時(shí)間碼為準(zhǔn)),而其它的則稱為從機(jī)。在只有一臺(tái)從機(jī)的時(shí)候,同步信號(hào)可直接由主機(jī)發(fā)送給從機(jī),這時(shí),從機(jī)的時(shí)鐘方式要打到“外部時(shí)鐘方式”(External Clock Mode)。有多臺(tái)從機(jī)時(shí),則需一個(gè)專門產(chǎn)生同步信號(hào)的設(shè)備作為主機(jī),以便多臺(tái)從機(jī)進(jìn)行同步。 同步信號(hào)分為幾種類型,其用途也是不一樣的。MIDI時(shí)鐘是較為簡(jiǎn)單的同步信號(hào)之一。在MIDI規(guī)定中,定義了由主機(jī)通過MIDI線傳送的時(shí)鐘字節(jié)為24ppq(每四分音符的時(shí)鐘點(diǎn)),同時(shí)還規(guī)定了樂曲的開始、停止、繼續(xù)等命令。使用這些命令,兩臺(tái)音序器可以很容易地進(jìn)行同步。用戶可以通過一條MIDI線,將主機(jī)上的操作傳送到從機(jī)上,使從機(jī)能夠很好地和主機(jī)同步。(從理論上講應(yīng)該是這樣的,但實(shí)際操作時(shí)會(huì)遇到一些預(yù)想不到的問題。) 你也許已經(jīng)注意到,MIDI時(shí)鐘和樂曲的速度是有關(guān)系的。當(dāng)主機(jī)的樂曲速度加快后,每秒鐘內(nèi)所發(fā)送的MIDI時(shí)鐘點(diǎn)也會(huì)增加,這時(shí)從機(jī)的樂曲速度也會(huì)增加。另外一種同步信號(hào)是根據(jù)絕對(duì)時(shí)間編碼而成的——它包含了小時(shí)、分、秒等信息,最常用的這種時(shí)間碼被稱做SMPTE(即英文電影電視工程師協(xié)會(huì)——Society of Motion Picture and Television Engineers的縮寫)。SMPTE碼將時(shí)間分為小時(shí)、分、秒、幀和位。在使用SMPTE碼時(shí),幀頻率是經(jīng)常用到的一個(gè)選項(xiàng),經(jīng)常使用的幀頻率為24,25或30fps(每秒幀數(shù))。只有在主機(jī)和從機(jī)都選擇了相同的幀頻率時(shí),才能很好同步。 SMPTE碼是一種音頻信號(hào),很容易錄制在磁帶或硬盤上。由于MIDI電纜所傳送的MIDI信號(hào)為數(shù)字信號(hào),所以SMPTE碼不能通過MIDI線直接傳輸。但是MTC碼(即英文MIDI時(shí)間碼——MIDI Time Code的縮寫)則能將SMPTE碼編譯成MIDI格式,并能通過MIDI線進(jìn)行傳送。在這里需要注意的是SMPTE和MTC碼并不發(fā)送開始、結(jié)束等命令,并且也不會(huì)改變樂曲的速度。它們提供的是以分、秒來計(jì)算的絕對(duì)時(shí)間參考,而不是小節(jié)、拍的參考。所以如果在多軌機(jī)錄制了幾軌后,你又改變了音序器中樂曲的速度,那么再錄制時(shí),就會(huì)出現(xiàn)錯(cuò)位現(xiàn)象,即使多軌機(jī)已經(jīng)錄制了SMPTE同步信號(hào)并經(jīng)MTC與音序器很好地同步,也無濟(jì)于事。 對(duì)于數(shù)字音頻錄音來說,無論是MIDI信號(hào)還是SMPTE信號(hào)都不能提供足夠的精度。高精度的數(shù)字音頻錄音設(shè)備之間,往往需要使用被稱為字時(shí)鐘的同步信號(hào)來進(jìn)行同步鎖定。其精度是和一個(gè)采樣字頻率是一樣的——通常是每秒鐘出現(xiàn)44.1或48千次。如果要將數(shù)字音頻錄音機(jī)中的字時(shí)鐘同步信號(hào)轉(zhuǎn)換成SMPTE或其它時(shí)鐘碼時(shí),則需要一個(gè)專門的硬件設(shè)備來完成。 二、編程方面的同步 同步就是協(xié)同步調(diào),按預(yù)定的先后次序進(jìn)行運(yùn)行。如:你說完,我再說。 “同”字從字面上容易理解為一起動(dòng)作。 其實(shí)不是,“同”字應(yīng)是指協(xié)同、協(xié)助、互相配合。 如進(jìn)程、線程同步,可理解為進(jìn)程或線程A和B一塊配合,A執(zhí)行到一定程度時(shí)要依靠B的某個(gè)結(jié)果,于是停下來,示意B運(yùn)行;B依言執(zhí)行,再將結(jié)果給A;A再繼續(xù)操作。 所謂同步,就是在發(fā)出一個(gè)功能調(diào)用時(shí),在沒有得到結(jié)果之前,該調(diào)用就不返回,同時(shí)其它線程也不能調(diào)用這個(gè)方法。按照這個(gè)定義,其實(shí)絕大多數(shù)函數(shù)都是同步調(diào)用(例如sin, isdigit等)。但是一般而言,我們?cè)谡f同步、異步的時(shí)候,特指那些需要其他部件協(xié)作或者需要一定時(shí)間完成的任務(wù)。最常見的例子就是SendMessage。該函數(shù)發(fā)送一個(gè)消息給某個(gè)窗口,在對(duì)方處理完消息之前,這個(gè)函數(shù)不返回。當(dāng)對(duì)方處理完畢以后,該函數(shù)才把消息處理函數(shù)所返回的 LRESULT值返回給調(diào)用者。 在多線程編程里面,一些敏感數(shù)據(jù)不允許被多個(gè)線程同時(shí)訪問,此時(shí)就使用同步訪問技術(shù),保證數(shù)據(jù)在任何時(shí)刻,最多有一個(gè)線程訪問,以保證數(shù)據(jù)的完整性。在Java里面,通過synchornized 進(jìn)行同步的保證。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助