Web Audio API 건드리다가 멘탈이 터졌을때 만났던 용어들이다..ㅎㅎ
웹 개발을 할때, binary data(이진 데이터)들은 우리가 파일들을 다루는 과정(create, upload, download)에서 만나게 된다.
이를 이용하는 이유는 높은 성능을 보여주기 때문이다.
하지만 사용함에 있어 꽤 혼동하게 되는데 ... 너무 많은 종류가 있다. 다 뭐라는건지;; ㅎㅎ
ArrayBuffer
, Uint8Array
, DataView
, Blob
, File
, etc.우리는 이 중에서 가장 기본적인 이진 객체를 먼저 만나보도록 하자.
let buffer = new ArrayBuffer(16); // 길이가 16인 buffer를 생성
console.log(buffer.byteLength); // 16
위의 buffer는 16바이트의 0으로 이루어진 메모리 영역을 할당하게 된다.
ArrayBuffer는 배열이 아니다.
why?
- 고정 길이를 가진다. 우리는 이 길이를 마음대로 줄이거나 늘리지 못한다.
- 메모리에서 정확하게 할당된 공간을 차지한다.
- 각각의 바이트들에 접근하기 위해서는, 또 다른 "view" 객체가 필요하다.
buffer[index]
이거 절대 안됨 ㅎㅎ;;
ArrayBuffer
는 메모리 영역이다. 그 안에는 bytes raw sequence가 저장되어 있다.
이를 조작하기 위해서는 view
객체를 사용해야 하는데, view
객체는 자체적으로 아무것도 저장하지 않는다. 그냥 ArrayBuffer
에 저장된 bytes를 해석해 보여주는 장치다.
예를 들면,
TypedArray는 Uint8Array, Uint32Array, Float64Array 등과 같은 view를 부르는 용어이다.
따라서 new TypedArray 와 같은 명령어는 쓸수 없다. 저 TypedArray 대신에 Uint8Array, Uint32Array, Float64Array 등과 같은 친구들을 써주면 된다.
그리고 new TypedArray() 에 들어갈 수 있는 인자로는 다섯가지가 있다.
new TypedArray(buffer, [byteOffset], [length]);
new TypedArray(object);
new TypedArray(typedArray);
new TypedArray(length);
new TypedArray();
TypedArray 의 종류
int8Array
,Uint16Array
,Uint32Array
Uint8ClampedArray
Int8Array
,Int16Array
,Int32Array
Float32Array
,Float64Array
좀 더 Deep 하게 파고 싶다면 이 링크를 타고 들어가 봐도 좋다. Audio 다루기 너무 싫고 어렵다 ㅎㅎ