Bu şekilde sinüs sinyalimizi ürettikten sonra, bu ses sinyalini dijital olarak dosyaya kaydedebiliriz. MATLAB bu veriyi doğrudan belli formatlarda (mesela wav, mp3 gibi) kaydedilmesine izin verse de, bence en iyi yol, ses verisini diske RAW olarak kaydetmek. Yani dosyada sadece ses örnekleri olacak, herhangi bir metadata veya başka ilave bilgi olmayacak. Bir kere elde RAW dosya varsa, Linux veya diğer işletim sistemlerinde bulunan çok daha gelişmiş programlar kullanılarak istenen formatta dosya elde edilebilir. MATLAB'in asıl işi ses üretmek olmadığı için, değişik formatlarda ses dosyası üretme konusunda sunacağı seçenekler, tamamen bu konuda uzmanlaşmış olan başka programlar kadar iyi olmayacaktır.
Benzer şey örneğin fotoğrafçılıkta da vardır. Profesyonel fotoğraf makinalarının ürettiği görüntü dosyası RAW formattadır ve görüntü sensörünün sağlayabildiği en üst seviyede çözünürlük ve kalite ile piksel değerlerini içerir. Sonradan fotoğrafçı, uygulama alanına göre bu RAW dosyayı işler ve JPG, GIF, veya PNG gibi diğer formatlarda görüntü dosyaları elde eder.
Aşağıda bir tabloda bulunan dijital ses örneklerini RAW olarak
audio.raw
isimli dosyaya yazan bir MATLAB fonksiyonu var:
Kod:
function create_audio_raw(dirname, data, channels, bitspersample, endianness)
if bitspersample == 8
scale = 2^7 - 1;
prec = 'bit8';
elseif bitspersample == 16
scale = 2^15 - 1;
prec = 'bit16';
elseif bitspersample == 24
scale = 2^23 - 1;
prec = 'bit24';
else
return
end
data = data * scale;
mkdir(dirname);
prevdir = cd(dirname);
fid = fopen('audio.raw', 'w+');
fwrite(fid, data, prec, endianness);
fclose(fid);
cd(prevdir)
Bu fonksiyon, verilen argümanlara göre
audio.raw
diye bir dosya üretecektir. Sırasıyla şu argümanları veriyoruz:
dirname: RAW ses dosyasının yazılacağı dizinin adı.
data: ses örneklerini içeren tablo. Mesela yukarıda sinüsü üretip
w
tablosuna yazmıştık.
channels: Kanal sayısı. Mono için 1, stereo için 2, daha fazla kanal varsa artık kanal sayısı neyse onu belirteceğiz.
bitspersample: Her ses örneği kaç bitten oluşuyor? Ses kalitesine göre bu 8, 16, ve 24 bittir. Yaygın kullanılmasa da 32 bit de olabilir.
endianness: Bu ses dosyasının çalınacağı işlemcinin byte sırasını ifade eder. Little endian için
l
big endian için de
b
olabilir.