Skip to content

Repository files navigation

lamets

Fast MP3 encoder written in TypeScript. Encode PCM audio to MP3 in the browser or Node.js — no native dependencies, no WebAssembly, just pure TypeScript.

lamets is an AI-assisted TypeScript port of jump3r (Java Unofficial MP3 EncodeR) by Ken Handel, which is a Java port of libmp3lame. Inspired by zhuker's lamejs.

  • Works in browsers and Node.js
  • ES modules and CommonJS
  • TypeScript types included
  • Mono and stereo encoding
  • CBR encoding at 32-320 kbps
  • Real-time encoding from microphone via Web Audio API
  • Client-side WAV to MP3 conversion

Packages

PackageDescription
lametsCore MP3 encoder
lamets-recorderRecord MP3 from the microphone in the browser

Installation

npm install lamets

Quick Start

import{Mp3Encoder}from'lamets';constencoder=newMp3Encoder(1,44100,128);// mono, 44.1khz, 128kbpsconstsamples=newInt16Array(44100);// your PCM samples hereconstmp3Data=[];for(leti=0;i<samples.length;i+=1152){constchunk=samples.subarray(i,i+1152);constmp3buf=encoder.encodeBuffer(chunk);if(mp3buf.length>0)mp3Data.push(mp3buf);}constend=encoder.flush();if(end.length>0)mp3Data.push(end);constblob=newBlob(mp3Data,{type: 'audio/mp3'});

Record from Microphone

npm install lamets-recorder
import{Recorder}from'lamets-recorder';constrecorder=newRecorder({kbps: 128});awaitrecorder.start();// ... user clicks stop ...constmp3Blob=recorder.stop();// returns a Blob

With level meter and timer callbacks:

constrecorder=newRecorder({kbps: 128,onLevel(rms){/* 0-1 RMS level, fires on each audio frame */},onTime(seconds){/* elapsed time, fires every second */},});

Stereo

constencoder=newMp3Encoder(2,44100,128);constleft=newInt16Array(44100);constright=newInt16Array(44100);for(leti=0;i<left.length;i+=1152){constmp3buf=encoder.encodeBuffer(left.subarray(i,i+1152),right.subarray(i,i+1152),);if(mp3buf.length>0)mp3Data.push(mp3buf);}

License

LGPL-2.1-or-later

About

Fast MP3 encoder in TypeScript

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages