Libraryless. Click here for Pure Java version (4524L/29K).
// TODO: copy buffers less (have multiple listeners keep buffers without copying) sclass AudioInputDispatcher { new Flag stopFlag; short[] convertedBuf; L<VF1<short[]>> audioListeners; SimpleLiveValue<Float> lvVolume; bool cloneDataOnce; bool verbose; O currentListener; // who is holding up audio processing *(int bufSize) { convertedBuf = new short[bufSize/2]; } void handleData(byte[] data) { handleData(data, l(data)); } void handleData(byte[] data, int n) { if (verbose) printWithMilliseconds("Handling audio data (" + nBytes(n) + ", first: " + first(data) + ")"); pcall { bytesToShorts_littleEndian(data, convertedBuf, n); short[] convertedData = subShortArray(convertedBuf, 0, n/2); if (lvVolume != null) { float vol = shortSamplesToPercentVolume(convertedData); if (verbose) { printStruct(subShortArray(convertedData, 0, 5)); //print("Volume: " + vol); } lvSet(lvVolume, vol); } if (cloneDataOnce) convertedData = cloneShortArray(convertedData); for i over audioListeners: { // synchro-safe, garbage-free iteration VF1<short[]> l = syncGet(audioListeners, i); continue if l == null; try { currentListener = l; pcallF(l, convertedData); } finally { currentListener = null; } } } if (verbose) printWithMilliseconds("Done handling audio data"); } }
Began life as a copy of #1018247
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
Snippet ID: | #1027052 |
Snippet name: | AudioInputDispatcher |
Eternal ID of this version: | #1027052/9 |
Text MD5: | 8068a1ea870f0122843c88c8d4f441fa |
Transpilation MD5: | e6deaaeae69d7da2903f16e00df48d46 |
Author: | stefan |
Category: | javax / audio |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2020-02-15 14:03:46 |
Source code size: | 1544 bytes / 50 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 343 / 675 |
Version history: | 8 change(s) |
Referenced in: | #1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674) |