Konvertování samplů na C64V čase, který jsem věnoval problematice konvertování samplů na C64 se mi neustále a neodvratně ve vzpomínkách vynořovala polovina devadesátých let, doba největší slávy C64 a také doba mé velké touhy po sampleru. Zašlo to až tak daleko, že jsem vyhrabal doma dobové katalogy firem jako AYYA a "firem" jako Ardan a Trsek, abych znovu na vlastní oči spatřil ty bombastické nabídky hardwaru. Cena 1490 za nejprostší a jediný běžně dostupný C64 sampler do userportu pro mne tehdy jako studenta byla nedostupná, tak jsem jen valil oči (teda spíš uši) na kamarádovu L'amigu, který k ní sampler vlastnil. O tom, jak samply převést, nebo jak sampler z Amigy připojit do C64, jsem tehdy nic nevěděl, tak mi nezbývalo než experimentovat s již existujícímy samply. Časem se mi podařilo si vlastní sampler sbastlit, samozřejmě za výrazně nižší cenu (zdravím Tomáše Přibyla, z jehož výrobku jsem schéma obšlehnul) a mohl se tak dodatečně vyblbnout. Od té doby uplynul nějaký pátek, C64 sice zůstal pořád stejný, ale PC je dnes možné použít jako velký zdroj rozličných dat a při troše šikovnosti některé z nich jdou převést na C64. Předem upozorňuji, že člověk sběhlý v audio technice může následující řádky pokládat za nepřípustně zlehčující, v problematice samplů na C64 bude ovšem tato úroveň dostačující. V samplerech připojených do C64 se používal klasický audio A/D převodník, mono 4bit nebo 8bit. Samply na C64 jsou standartně 4bitové (existovala i technika, jak na C64 pustit 8bitový sampl, ale je to o něco složitější problematika), ale 8bitové A/D převodníky byly dostupnější (pokud někdo vlastnil 8bitový mono sampler na Amigu, ideálně bez taktovacího signálu, bylo možné ho použít na C64 jen za pomoci konektorové redukce). Samply se na C64 běžně pouští tak, že se v rychlém a pravidelném intervalu data zapisují do čtyřech nižších bitů registru SIDu $D418. Z 8bitových samplů se čtyřbitové dělaly běžně tak, že se spodní 4 bity prostě umazaly a pustily se jen 4 horní. Pokud se na celou věc podíváme blíže, zjistíme, že data, která získáváme ze sampleru jsou vlastně digitalizovaná nekomprimovaná audio data o nějaké určité frekvenci. A to samé lze říci o datech uložených v souboru wav, z čehož plyne, že wave správně překonvertovaný a zbavený hlavičky jde pustit jako sampl na C64. Jak sampl správně překonvertovat? Hudebních konvertorů a editorů na PC je mnoho a já v nich mám minimální přehled, proto zde popíši jeden z možných způsobů s důrazem na popis parametrů. Nalezl jsem lehce zběsilou utilitku Audio Convertor Plus (link), která je ovšem schopna dát požadovaný výstup. Po otevření wav nebo mp3 zvýším volume ze 100 na 300% - to je maximum, které tento program umožňuje a samply na C64 jsou o poznání hlasitější. Výstupní formát nastavím na RAW, což jsou data bez hlavičky (řídících bytů) a typ komprese na PCM - nekomprimovaná a neupravaná audio data (stejné struktury jako v souborech wav). Počet kanálů samozřejmě MONO, frekvence 6 kHz (nejnižší běžně dostupná frekvence v audio konvertorech) a bitovou hloubku na 8bit a v tomto formátu data uložím. Ten vůbec nejpoužívanější způsob pouštění samplů na C64 se provádí přes IRQ (nebo NMI) řízené časovačem obvodu CIA, hodnota jeho counteru je na adresách $DC04 + $DC05 (nebo $DD04 + $DD05). Pokud se do tohoto čítače zadá hodnota menší než $0080, začíná mít C64 problémy s rychlostí a obsluhou přerušení. Proto nepsaný standart je, že nejkvalitnější sampl je při hodnotě $0080, středně kvalitní $00B0 a málo kvalitní $00F0 (toto měřítko může být relativní). Pokud budeme chtít, aby jeden cyklus counteru trval přesně jeden rastertim C64, musí mít hodnotu $4CC7 (decimálně 19655). A jeden C64 rastertime je 1/50 vteřiny. Z toho vychází následující vzorec: 19655 / (6000 / 50) = 163 (hexadecimálně $A3) Což znamená, že pokud máme sampl, který má frekvenci 6 kHz, na C64 časovači to vychází na hodnotu $A3, což je lehce nadprůměrně kvalitní sampl. Pro frekvenci 8 kHz (což je druhá nejnižší bězně dostupná hodnota) by to byla hodnota $7A a pro frekvenci 11025 Hz hodnota $59. To jsou hodnoty, jak již bylo zmíněno, s kterými by časovač měl problémy, nicméně i takovýto sampl by šel obsloužit - bez užití přerušení a časování by probíhalo přesnou čekací smyčkou v hlavním programu.
Při takovémto konvertování samozřejmě velmi lehce dostaneme sampl překračující kapacitu ram C64. Majitelé IDE64 s novou generací firmwaru (kterákoli verze od Sociho) si takovýto sampl mohou pustit pomocí pluginu SAM (link). Plugin na pouštění samplů spolu s utilitou na ukládání dlouhého samplu pořízeného pomocí klasického sampleru existuje už od ranné verze IDE64, já jsem si dovolil tento plugin znovu nakódovat (hodnotu časovače CIA má pevně nastavenou na zmíněných $A3). Plugin se musí v IDE64 nakonfigurovat tak, jako ostatní pluginy. Můžete do basicovského programu, který vytváří konfiguraci pluginů připsat něco jako toto: 235 A$="SAM":GOSUB 970:REM SAM nebo můžete použít moji konfiguraci pluginů přibalenou u pluginu (soubor MAN,USR; nezapomeňte nahrát plugin do ROOT:\PLUGINS, změna se ale projeví až po vypnutí a zapnutí počítače). Plugin používá doublebuffering, ale rychlost plnění bufferů nebyl zdaleka takový problém, jako režie, kterou potřebuje IDE64 při čtení dat a na samotné přerušení se v tom okamžiku dostává méně času. Zkoušel jsem přehrávat samply z harddisku i z cdrom s firmwarem vydaným začátkem roku 2007 a z obou zařízení běží s mým pluginem plynule. LHS /PADUA |
|
PHP / MySQL code by PCH/Unreal |