!7 lib 1400149 // java-lame import net.sourceforge.lame.lowlevel.*; // TODO: doesn't honor sample rate static void wavToMP3_128k(File wav, File mp3) ctex { temp WAVDecoder decoder = new(newFileInputStream(wav)); byte[] pcm = byteArrayFromShorts_littleEndian(decodeWAVToMonoSamples(decoder, wav)); LameEncoder encoder = new(javaSound_pcmSignedLittleEndianMono(decoder.sampleRate)); temp FileOutputStream out = new(mp3); byte[] buffer = new byte[encoder.getPCMBufferSize()]; int bytesToTransfer = min(l(buffer), l(pcm)), bytesWritten; int currentPcmPosition = 0; while (0 < (bytesWritten = encoder.encodeBuffer(pcm, currentPcmPosition, bytesToTransfer, buffer))) { currentPcmPosition += bytesToTransfer; bytesToTransfer = min(l(buffer), l(pcm) - currentPcmPosition); out.write(buffer, 0, bytesWritten); } encoder.close(); } // reacts to new recording or file path on clipboard module WitAILastRecording > DynSCP { start { dm_onNewRecordingOrWAVOnClipboard(voidfunc(File f) { print("Analyzing " + f.getName()); fS text = witAI_recognizeWAV(f); flatInfoBox(text); swing { S info = "wit.ai english"; if (empty(text)) katze_userSaid(info, "?"); else { temp dm_generalMap_tempPut('topInputInfo, info); dm_setAIBarTextAndFire(text); } } }); } }