Repository navigation
Expand file tree
/
Copy pathChangeLog
More file actions
executable file
·1992 lines (1734 loc) · 92.6 KB
/
Copy pathChangeLog
File metadata and controls
executable file
·1992 lines (1734 loc) · 92.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Change History
--------------
This file contains a list of all changes starting after the release of
sox-11gamma, followed by a list of prior authors and features.
SoX-16.2.1
----------
o `rate -E' no longer truncates the output, and no longer depends on the
size of the processing buffer to come out whole. While the extrapolated
head is being discarded the effect could return having taken no input and
emitted none, with both available: the output buffer was filled from the
resampler's own queue, which leaves the flow no reason to read input, and
the whole of that output then fell inside the count of samples to drop.
The effects chain reads such a standstill as the end of the input and
retires the source in mid-stream. A ten second 48 kHz to 44.1 kHz
conversion under `--vulkan-precise --buffer 8192' wrote 4410 samples, a
tenth of a second, and stopped; under `--vulkan-fast' it wrote none at
all. The flow now runs until something has moved. It is bounded: a
turn goes round again only when it produced output that was dropped
whole, and what is left to drop is then smaller by exactly that much.
o `rate -E' also lost the output room it had been given once it finished
flushing the extrapolated head, and handed the step after it a buffer it
believed to be full.
o The effects chain no longer retires a source whose buffer is full. Asked
to read into no room at all, a source returns zero samples, which is also
how it reports the end of its input; the chain took the one for the other
and stopped reading the file in the middle. It now leaves such a source
alone and goes on to the effects that empty the buffer. Any effect that
came to a standstill with a full buffer behind it could trip this, not
only `rate -E', and the outcome was a truncated file with no diagnostic.
o A chain that really has stopped moving now says so and fails, where the
symptom before was a file that ended early and an exit status saying all
was well. The two are told apart by whether the full buffer ever changes.
o The buffer floor that 16.1.1 added for `rate -E' is gone: it was sized
after the wrong quantity, and none is needed now. `rate -E' runs at any
`--buffer', down to 4096, and its output is identical at every size.
o `rate -E' no longer leaves a start-up transient behind on long filters.
The leading extension was one second of input whatever the response, so
a filter whose half-length outran it read the rest as the silence before
the file. On the Vulkan path, which compensates the filter's delay by
discarding output rather than by priming its input, that left a transient
lasting the uncovered part of the half-length: at a 0 dB band-width of
99.95% it raised the band next to Nyquist by 30 dB, eating the stop-band
the filter was designed for, while the CPU path stayed clean. The
extension now covers the plan's own pre-ring. Below that threshold
nothing changes: at the shipped band-widths the output is unchanged to
the bit.
o `rate -E' no longer writes an empty file when the input is shorter than
the extrapolation and the buffer is small. The drain ran one turn and
returned, so a turn whose whole output fell inside the count of samples
to drop reported nothing produced, which is how an effect says it has
finished. A 3287 sample input under `--vulkan-reference --buffer 4096'
wrote a header and no audio. This is the drain's half of the flow defect
above, and it is bounded the same way.
o `rate' band-width is capped where the filters stay tractable: `-b' at
99.9% and the hidden `-B' at 99.88%, which are the same point on the two
scales. Beyond roughly 1.3 million taps the run time leaves the curve it
had been following -- ten seconds of audio took over a minute at a 0 dB
band-width of 99.99%, against four seconds just below it -- and the cap
keeps the exposed options clear of that by a wide margin. The cap is on
the filter length, not on anything audible: 99.9% is 85157 taps at
96 kHz to 44.1 kHz.
o `rate -a' with a 0 dB band-width given no longer aborts on an assertion.
Aliasing hands the anti-aliasing point the 3 dB band-width, which the
design requires to be at least 85%, and the 74% floor that guarded it was
a constant: the same bound evaluated at about 126 dB of rejection, while
the conversion between the two scales is a parabola with its minimum near
234 dB. A rejection far to either side of that left the floor too low and
reached the assertion instead of the message meant for it -- `-m' and
`-h' below it, `-z' above. The floor now follows the rejection in force,
so `-z -a -B 74' reports a minimum of 81.5%, and `-v -a -B 73.5', which
the constant refused and the design accepts, runs.
SoX-16.2.0
----------
The DSD modulator is now two effects, and the Vulkan rate backends keep their
working buffers in device memory.
o New effect `sdm-vulkan': the fixed MASH-2/FSM modulator that runs on the
Vulkan device. It requires one of `--vulkan-fast', `--vulkan-precise' or
`--vulkan-reference' and fails with a message when none is given, or when
the build has no Vulkan support.
o `sdm' now always runs the CPU modulator. In 16.1.1 it silently became the
device modulator under a `--vulkan-*' option, which made the two
modulators indistinguishable on the command line and left no way to ask
for `rate' on the device with `sdm' on the host. That chain is now
written out: the effect names pick the backend, the global option only
picks the precision.
o The CPU modulator loops were rewritten in a feedforward form:
s_n = A s_(n-1) + e0 (x_n - y_(n-1)), v_n = (1 + a0) x_n + w . s_(n-1)
- a0 y_(n-1) with w = A' a. The dot product reads the previous state, so
only one multiply-add and the sign test remain waiting on the previous
output. This is 1.2 to 1.3 times faster at orders 4 to 8, packed output
included. In exact arithmetic the two forms agree; in floating point the
roundings differ, so the bit stream is not identical to 16.1.1 while the
in-band SNR is unchanged.
o The Vulkan polyphase, cubic and fused DSD rate backends allocate their
input, output and coefficient buffers in device-local memory and move data
through host-visible staging buffers with a DMA copy, instead of having
the shader reach across the bus for every sample. On a discrete card this
is the difference between the rate stage costing 12.83 s and 0.75 s; on
unified memory it is neutral.
o Host-visible allocations now prefer a cached memory type over an uncached
one. A discrete card offers host-visible system memory twice, uncached
first, and every one of these buffers is read back by the host, so taking
the first match landed on write-combining memory.
o The Vulkan polyphase block size follows `--buffer' instead of being fixed
at 16384 frames, with 65536 as its floor and 4194304 as its ceiling. The
block decides how often the host and the device synchronise, and the
submit count, not the kernels, was the cost. At the default buffer
nothing changes.
o Two adjacent Vulkan polyphase stages now hand the intermediate signal over
in device memory rather than through a host FIFO, as the FFT stage and the
polyphase stage after it already did.
o `--diagnostics' now reports the seconds spent in each fence wait and in
the host de-interleave, next to the counts that were already there. The
counts say how often the host stops, the seconds say how long for.
o Setting SOX_VULKAN_CAPTURE in the environment enables the graphics queue
and the frame-boundary extension that a GPU profiler needs to recognise a
compute-only program. Both cost something on every run, so they stay off
unless asked for.
o build_static_libs.sh takes `--keep-build', which keeps the downloaded
sources, static libraries and build trees so a rebuild is incremental.
The Windows script spells the same option -KeepBuild.
o The README documents the global options, the three Vulkan profiles, which
effect runs where under each of them, and what the profiles cost and buy,
with measurements from an M5 Pro and an RTX 3080.
SoX-16.1.1
----------
o `rate -E' now raises the processing buffer automatically when the input
rate and channel count require more lookahead than the configured size.
This prevents premature end-of-file handling without changing the
extrapolation algorithm or requiring a manual `--buffer' option.
SoX-16.1.0
----------
The rate effect can now extrapolate PCM signal boundaries.
o `rate -E' predicts the signal before its first sample and after its last
instead of presenting silence to the resampling filter. This suppresses
boundary transients without changing the output length.
o The predictor runs in 64-bit floating point on the CPU, uses Burg
autoregression with an order selected by held-out validation, and falls
back to a bounded gradual continuation when prediction is not reliable.
o CPU and Vulkan rate backends share the same extrapolated boundaries.
Packed DSD input is excluded because it has no PCM samples to model.
Without `-E', rate retains its previous behaviour.
SoX-16.0.0
----------
The sample pipeline is now 64-bit floating point.
o sox_sample_t is a double normalised to [-1, +1) where it was a 32-bit
integer. This is an ABI break, and SOVERSION goes from 3 to 4: the type
appears in the signature of sox_read, sox_write, the packed-DSD entry
points and every effect handler's flow and drain. An int32_t* is not a
double* under any cast, so every consumer of libsox must be recompiled.
There is no compatibility path and none is planned.
o A sample is no longer requantised between effects. A chain of ten neutral
effects used to accumulate ten roundings to the 32-bit grid and is now the
exact identity. The internal resolution goes from 32 bits to 53.
o 64-bit float input survives the pipeline. Reading an -e float -b 64 file
and writing it back used to lose 22 bits; it is now exact.
o Two public macros are gone. SOX_SAMPLE_NEG was the sign bit of the integer
a sample used to be, and flipping it now negates a sample instead of
shifting its range by half; the offset it stood for is written as an offset
in SOX_UNSIGNED_TO_SAMPLE and SOX_SAMPLE_TO_UNSIGNED. SOX_ROUND_CLIP_COUNT
rounded a double to that integer and clipped on the way, and there is
nothing left for it to round to. Third-party effects that called it should
assign the value.
Observable changes in behaviour:
o Fewer clips are reported. Clipping happens only where a sample leaves for
a file, not at every link, so material that sat at or a little over 0 dBFS
inside the chain no longer counts a clip at each effect.
o The Windows audio driver builds again. `waveaudio' expands 32-bit device
samples through a macro that stopped being a plain cast when the sample
type changed, and one of its three cases was missing the temporaries the
macro now needs; nothing outside Windows compiles that file, so no other
platform could see it.
o `vol', `compand', `mcompand' and `stretch' no longer clip their own output.
An effect that clips destroys headroom a later one might have given back,
so a chain like `compand ... vol 0.5' now keeps what the compander pushed
past full scale instead of squaring it off in the middle: on a noise test
the old build wrote 134 samples pinned to exactly half scale and the new
one writes none, the worst of them recovering from 0.500 to 0.698. With
nothing after the effect the written file does not change, because the
writer clips what the effect no longer does. The limiter branches of
`vol -l' and `dcshift -l' still clip, which is what the option asks for.
o `stat' prints "Scaled by: 1.0" where it printed "2147483647.0", and the
sample values `stat -s' emits are on the normalised scale.
o The temporary file `reverse' writes is twice the size it was, as are the
chain's own buffers. Nothing else about memory use changed.
Compatibility note, for files SoX itself wrote:
o CAF, W64 and MAT files written at -b 32 by SoX 15.x and earlier contain
integer sample magnitudes inside a 32-bit float subtype. They are wrong,
and no other program reads them correctly; SoX read them back "correctly"
only because it made the matching mistake in the other direction. This
release writes and reads them properly, which means such a file written by
an older SoX now reads at its true, very loud, value. Rewrite the affected
files with the older SoX to a lossless integer format first.
$ox-14.4.2 2015-02-22
----------
Previously deprecated features that have been removed in this release:
Deprec- Feature [O(ption)]
ated in [F(ormat)] [E(ffect)] Replacement
------- ---------------------- ----------------------
14.3.0 O -1/-2/-3/-4/-8 -b
14.3.0 O -s/-u/-f -e
14.3.0 O -A/-U/-o/-i/-a/-g -e
14.4.0 E swap with parameters remix
14.4.0 E mixer remix
14.4.1 OpenMP < 3.0 OpenMP >= 3.0
14.4.1 F ffmpeg ffmpeg/avconv via pipe
File formats:
o Add optional support for reading Ogg Opus files. (John Stumpo)
o Fix for max size text chunks in aiff files. (cbagwell)
o Add reading support for RF64 WAV files. (Dave Lambley)
o Work around for libsndfile created RF64 files with invalid
sizes. (Dave Lambley)
o Detect MS ADPCM WAV files with invalid blocks. (cbagwell)
o Detect Sphere files with invalid header sizes. (cbagwell)
Effects:
o 'Deemph' can now also be used at 48kHz sample rate. (robs)
o 'Rate' now much faster in many cases. (robs)
o Allow sending spectrograms to stdout. (Ulrich Klauer)
o Allow use of Dolph window with spectrograms. (robs)
o Allow mixing time and sample-count arguments for the delay
effect, and for spectrogram -S and -d. (Ulrich Klauer)
o Support multi-channel LADSPA plugins. (Eric Wong)
o Support infinite repetition with repeat. (Ulrich Klauer)
o Improved pink noise frequency response in synth. (robs)
o Extended syntax for specifying audio positions to several
effects. (Ulrich Klauer)
o Fix integer overflow in mcompand. [3590093] (Guido Aulisi)
o Add optional latency compenstation for LADSPA plugins. (Eric Wong)
Other new features:
o New -p option for soxi to display sample precision. (Ulrich Klauer)
o New libsox example6: give explicit output attributes. (robs)
Internal improvements:
o Speed optimization for effects that operate on channels
independently. (Ulrich Klauer)
o Fix memory leaks. (Ulrich Klauer)
o Most internal symbols (lsx_*) are no longer exported. (Ulrich Klauer)
sox-14.4.1 2013-02-01
----------
Newly deprecated features (to be removed in future):
Deprec- Feature [O(ption)] Removal
ated in [F(ormat)] [E(ffect)] Replacement due after
------- ---------------------- ---------------------- -------
14.4.1 OpenMP < 3.0 OpenMP >= 3.0 14.4.1
14.4.1 F ffmpeg ffmpeg/avconf via pipe 14.4.1
File formats:
o Fix pipe file-type detection regression. (robs)
o MAUD write fixes. [3507927] (Carl Eric Codere and Ulrich Klauer)
o Fix crash when seeking within a FLAC file. [3476843] (Eric Wong)
o Fix Ogg Vorbis files with certain numbers of channels being
truncated. (Ulrich Klauer)
o Fix reading 64-bit float WAVs. [3481510] (nu774 and Ulrich Klauer)
o Fix potential buffer overrun when writing FLAC files directly via
sox_write(). [3474924] (Eric Wong)
Audio device drivers:
o Check whether pulseaudio is available before choosing it as
default. (robs)
Effects:
o Restore 8 seconds default for spectrogram, if the input length is
not known. (Ulrich Klauer)
o Set output length for splice to unknown instead of 0. (Ulrich Klauer)
o Increase maximum width for spectrograms. (Ulrich Klauer)
o Fix memory leaks in LADSPA effect. (Eric Wong)
o Fix hang in several effects (rate, tempo, and those based on
dft_filter) when processing long files. [3592482, 3594822] (MrMod)
o Prevent (m)compand from tampering with their arguments. (Ulrich Klauer)
Other bug fixes:
o Fix input length calculation for combine methods other than
concatenate. (Ulrich Klauer)
o Fix to configure.ac to work with Autoconf 2.69. [3600293] (cbagwell)
o Use binary mode for pipes on all Windows compilers, rather than
MSVC only. [3602130] (Ulrich Klauer)
sox-14.4.0 2012-03-04
----------
Previously deprecated features that have been removed in this release:
Deprec- Feature [O(ption)]
ated in [F(ormat)] [E(ffect)] Replacement
------- ---------------------- ----------------------
14.3.0 O --interactive --no-clobber
14.3.0 E filter ~= sinc
14.3.0 E norm -b, norm -i gain -B, gain -en
14.3.0 PLAY_RATE_ARG SOX_OPTS
14.2.0 E key alias pitch
14.2.0 E pan ~= remix
14.1.0 E resample alias rate
14.1.0 E polyphase alias rate
14.1.0 E rabbit alias rate
14.3.1 F sndfile: sndfile 1.0.11 sndfile > 1.0.11
14.3.0 F flac: libFLAC < 1.1.3 libFLAC >= 1.1.3
14.3.1 F mp3: lame 3.97 lame > 3.97
Newly deprecated features (to be removed in future):
Deprec- Feature [O(ption)] Removal
ated in [F(ormat)] [E(ffect)] Replacement due after
------- ---------------------- ---------------------- -------
14.4.0 E mixer remix 14.4.0 + 1 year
14.4.0 E swap with parameters remix 14.4.0
Previously deprecated features (to be removed in future):
Deprec- Feature [O(ption)] Removal
ated in [F(ormat)] [E(ffect)] Replacement due after
------- ---------------------- ---------------------- -------
14.3.0 O -1/-2/-3/-4/-8 -b 14.4.0
14.3.0 O -s/-u/-f -e 14.4.0
14.3.0 O -A/-U/-o/-i/-a/-g -e 14.4.0
File formats:
o Mention in man pages that WAV files support floating point encodings.
o Add support for floating point encodings in AIFF-C files. (Ulrich Klauer)
o Pad WAV data chunk to an even number of bytes (as required by the
specification). [3203418] (Ulrich Klauer)
o Add optional MP2 write support with twolame library. (Paul Kelly)
Audio device drivers:
o Give pulseaudio driver higher priority than alsa or oss now that
its proven stable and gives user more features; such as per app
volume control. (cbagwell)
o Fix bug when specifying OSX coreaudio device name. Would only
search for first 3 devices. (cbagwell)
o Fix sox hangups are exit when using coreaudio. (cbagwell)
o Improve buffering in coreaudio driver (Michael Chen)
o Support enabling play/rec mode when user invokes sox as either
play or play.exe on windows. (cbagwell)
o Fix compile of sunaudio driver on OpenBSD (cbagwell)
Effects:
o Improvements to man pages for tempo effect. Really made in 14.3.2.
(Jim Harkins).
o New upsample effect. (robs)
o Fix to effects pipeline to let fade effect specify time from end of
file again. (cbagwell and Thor Andreassen)
o Fix man page default error for splice effect. (Ulrich Klauer)
o Enable support for --plot option on biquad and fir effects. (Ulrich Klauer)
o Effects chain can now be unlimited in length. (Ulrich Klauer)
o Fix newfile/restart effects when merging or mixing files. (Ulrich Klauer)
o Fix crashes in compand and mcompand effects. [3420893] (Ulrich Klauer)
o Let the delay effect gracefully handle the special case that a delay can
be more than the input length. [3055399] (Ulrich Klauer)
o New hilbert and downsample effects. (Ulrich Klauer)
o Fix problem where fade would sometimes fail if specifying a fade-out
immediately after a fade-in. (robs)
o Stricter syntax checking for several effects (might reveal bugs hidden
in existing scripts). (Ulrich Klauer)
o Calculate output audio length for most effects. (Ulrich Klauer)
o Fix problems with several effects when the buffer size was not evenly
divisible by the number of channels. [3420899] (Ulrich Klauer)
o Complete rewrite of the trim effect with extended syntax (backwards
compatible) and capabilities. [FR 2941349] (Ulrich Klauer)
o Fix trim optimization unexpectedly seeking backwards. (Ulrich Klauer)
o Prevent samples from getting lost at effects chain transitions in
multiple effects chain/multiple output modes. (Ulrich Klauer)
Misc:
o Minor improvements to the man page. (Ulrich Klauer)
o When using pipes (-p) on Windows, set file mode to binary. (cbagwell)
o Updated .dat format description in soxformat. (Jan Stary)
o Doxygen documentation for libSoX. (Doug Cook)
Other bug fixes:
o Fix several memory leaks. [3309913] (Jin-Myung Won and Ulrich Klauer)
o Fixed crashes in apps that call sox_format_init/quit() multiple times.
(cbagwell)
Internal improvements:
o Added use_threads variable to sox_globals. This should be used to enable
or disable use of parallel effects processing instead of directly calling
omp_set_num_threads. (Doug Cook)
o Fix compiler warnings. (Cristian Morales Vega [P. 3072301], Doug Cook)
o Improve large file support by using 64-bit numbers to count
samples. (Doug Cook, Thor Andreassen, Ulrich Klauer)
sox-14.3.2 2011-02-27
----------
File formats:
o Add seek support to mp3 handler for speed improvements. (Pavel Karneliuk)
o Fix bug were WavPack header was not updated correctly when closing
file. Fixed libsox memory leak when closing WavPack files.
(David Bryant)
o Fix RIFF chunk length error when writing 24-bit files. (David Bryant)
o 24-bit WAV files were leaving channel maps unassigned. Change to use
common channel mappings based on channel count. This allows to
work more seemlessly with other apps such as WavPack and Foobar2000.
(David Bryant)
o Fix ffmpeg playback bug caused by alignment requirements on some platforms.
Closes bug #3017690. (Reuben Thomas).
o Fix memory leak in ffmpeg. (Doug Cook)
o Handle 0 length chunks in WAV files gracefully. (Beat Jorg)
o When skipping over chunks, account for word alignment. Helps
with some Logic Pro generated files. (D Lambley)
o Fix incorrect MP3 file length determination with VBR & .5s initial
silence. (robs)
Audio device drivers:
o Fix immediate segfault on OSX while attempting to record. (Adam Fritzler)
o Fix segfault on OSX playback for some HW that gives smaller then
requested buffers. (cbagwell)
o Clean up system resource in coreaudio on close. Allows running
back-to-back open()/close()'s without exiting app first. (cbagwell)
o Add support for 32-bit samples to OSS driver. (Eric Lammerts)
o Add support for 24 and 32-bit samples to waveaudio (Win32) driver.
(Doug Cook)
o Support specifying audio device other than default on OSX (cbagwell)
Effects:
o F.R. [3051700] spectrogram -r for `raw' spectrogram, no legend. (robs)
o Fix -w option on stats effect. (Ronald Sprouse)
o Fix segfault with some ladspa plugins (Thor Andreassen)
o Optionally look for png.h in libpng directory to support OpenBSD
packaging. Helps enable spectrograph effect. (cbagwell)
o libpng15 requires application to include zlib.h header file. (cbagwell)
Add this to spectrograph effect. [3184238]
o Enable LADSPA effects on all platforms without any external
dependencies. Mainly useful for Linux, Windows and OS X which have
binaries readily available. (cbagwell)
o Support specifying an absolute end location for trim effect instead
only an offset from trim begin location. (Ulrich Klauer)
o Fix regression where MP3 handler required libmad headers to be installed.
(Samuli Suominen)
o Allow dynamic loading of lame to be enabled even if lame header files
are not installed. (Doug Cook)
Other new features:
o Soxi now reports duration of AMR files. (robs)
o Document the "multiple" combine option in man pages and in
usage output (Ulrich Klauer).
Internal improvements:
o Distribute msvc9 project files that had been in CVS only. (cbagwell)
o Add msvc10 project files (also compatible with the Windows SDK 7.1).
(Doug Cook)
o cmake now compiles waveaudio driver under windows environment. (cbagwell)
[3072672]
sox-14.3.1 2010-04-11
----------
Newly deprecated features (to be removed in future):
Deprec- Feature [O(ption)] Removal
ated in [F(ormat)] [E(ffect)] Replacement due after
------- ---------------------- ---------------------- -------
14.3.1 F mp3: lame 3.97 lame > 3.97 2011-04-11
14.3.1 F sndfile: sndfile 1.0.11 sndfile > 1.0.11 14.3.1
Previously deprecated features (to be removed in future):
Deprec- Feature [O(ption)] Removal
ated in [F(ormat)] [E(ffect)] Replacement due after
------- ---------------------- ---------------------- -------
14.2.0 E key alias pitch 14.3.1
14.2.0 E pan ~= mixer/remix 14.3.1
14.3.0 F flac: libFLAC 1.1.2,3 libFLAC > 1.1.3 14.3.1
14.3.0 PLAY_RATE_ARG SOX_OPTS 14.3.1
14.3.0 E norm -b, norm -i gain -B, gain -en 2010-06-14
14.3.0 E filter ~=sinc 2010-06-14
14.1.0 E resample alias rate 2010-06-14
14.1.0 E polyphase alias rate 2010-06-14
14.1.0 E rabbit alias rate 2010-06-14
LibSoX interface changes:
o Added new variants of sox_open to allow read/write from/to memory
buffers (in POSIX 2008 environment); see example5.c. (robs)
File formats:
o New Grandstream ring-tone (gsrt) format. (robs)
o CVSD encode/decode speed-ups. (Kimberly Rockwell, P. Chaintreuil)
o Add ability to select MP3 compression parameters. (Jim Harkins)
o Now writes out ID3-tags in MP3 files with lame supports it. (Doug Cook)
o Also can write VBR Tag ("XING Header") in MP3 files. (Jim Hark /
Doug Cook)
o Increase percision of MP3 encoders to use 24-bits instead of
16-bits. (Doug Cook)
o Fix failed writing 24-bit PAF files (and possibly other libsndfile
based formats). (cbagwell)
o Allow libsndfile to be dlopen()'ed at runtime if --enable-dl-sndfile
is used. (Doug Cook)
o Allow amr-nb/amr-wb to be dlopen()'ed at runtime if
--enable-dl-amrwb or --enable-dl-amrnb is used. (Doug Cook)
o amrnb and amrwb formats can optionally use opencore-amr libraries.
(cbagwell)
Audio device drivers:
o Add native windows audio driver. (Pavel Karneliuk, Doug Cook)
o Add 32-bit support to ALSA driver. (Pavel Hofman)
o Make OpenBSD sndio audio driver default over older sunau driver.
(cbagwell)
Effects:
o Fix [2254919] silence doesn't trim digital silence correctly. (robs)
o Fix [2859842] stats effect crashes on 64-bit arch. (Ulrich Klauer)
Other new features:
o Added libSoX example #4: concatenating audio files. (robs)
o Show soxi version & usage information when no args given. (robs)
Other bug fixes:
o Fix build so that grouped files (e.g. play -r 6k "*.vox" plays all
at 6k) works. (robs)
o Fix build to support auto file type detection with pipes on FreeBSD
and elsewhere. (Dan Nelson)
o Fix simultaneous play & rec not working. (robs)
o Fix multi-threading problems on multi-core Windows OS; also, change
default to single-threaded.
o Fix mistaken file size with pipe input on Windows. (Doug Cook)
o Fix missing documentation for -R (repeatable), and pulseaudio driver.
o Fix memory leak of format private data. (Slawomir Testowy)
Internal improvements:
o Move bit-rot detection support files to sub-directory (could
previously cause build problems). (robs)
o [2859244] Fixes to improve compatibility with MSVC. (Doug Cook)
o Added utilities to help any format handler dlopen() external
libraries at run time instead of link time. (Doug Cook)
o Compiling with mingw now has feature parity with cygwin. (Doug Cook
and cbagwell)
sox-14.3.0 2009-06-14
----------
Previously deprecated features that have been removed in this release:
Deprec- Feature [O(ption)]
ated in [F(ormat)] [E(ffect)] Replacement
------- ---------------------- ----------------------
14.1.0 E resample * ~= rate
14.1.0 E polyphase * ~= rate
14.1.0 E rabbit * ~= rate
14.2.0 E dither: RPDF,scaled dither (TPDF only)
14.1.0 F flac: libFLAC 1.1.1 libFLAC > 1.1.1
* But interface retained as an alias for `rate'.
LibSoX interface changes:
o sox_format_init() has been supeseded by sox_init().
o Removed obsolete error codes (SOX_E...); new sox_strerror()
function to convert error codes to text.
o Use of sox_effect_options() is now mandatory when initialising an
effect (see example0.c for an example of this).
o sox_flow_effects() has a new (3rd) parameter: a void pointer
`client_data' that is passed as a new (2nd) parameter to the flow
callback function. client_data may be NULL.
File formats:
o Slight improvement to A-law/u-law conversion accuracy: round LSB
instead of truncating. (robs)
o Fix length in wav header with multi-channel output to pipe. (robs)
o Fix [2028181] w64 float format incompatibility. (Tim Munro)
o Fix reading AIFF files with pad bytes in COMT chunks. (Joe Holt)
o Fix AIFF file length bug to stop reading trash data on files that
have extra chunks at end of file. (Joe Holt)
o Fix file length being 4 bytes short for AIFF sowt CD tracks. (Joe Holt)
o Fix [2404566] segfault when converting from MS ADPCM wav file. (robs)
o Fix slight FLAC seek inaccuracy e.g. when using `trim' effect. (robs)
o Fix mp3 decode sometimes being up to a block short. (robs)
o Fix not outputing GSM-in-wav when input is GSM-in-wav. (robs)
Audio device drivers:
o New native OpenBSD audio handler for play/recording. (Alexandre Ratchov)
o 24-bit support for ALSA handler. (robs)
o Warn if ALSA under/overrun. (robs)
Effects:
o New `stats' effect; multichannel audio statistics. (robs)
o New `sinc' FFT filter effect; replacement for `filter'. (robs)
o New `fir' filter effect using external coefficients/file. (robs)
o New `biquad' filter effect using external coefficients. (robs)
o New `overdrive' effect. (robs)
o New `vad' Voice Activity Detector effect. (robs)
o `synth' enhancements: can now set common parameters for multiple
channels, new `pluck' and `tpdf' types, `scientific' note
notation, [2778142] just intonation. (robs)
o New multi-channel support and revised sizing options for `spectrogram'.
N.B. revised options are not directly backwards compatible -- see the
man page for details of the new syntax. (robs)
o Richer gain/normalise options. (robs)
o [2704442] Slight change to `riaa' gain: now norm'd to 0dB @ 1k
(previously 19.9dB @ DC). (Glenn Davis)
o Fix [2487589] `dither' clipping detection & handling. (robs)
o Fix `repeat' sometimes stopping repeating too soon. (robs)
o Fix `repeat' sometimes repeating wrong audio segments. (robs)
o Fix [2332343] 'silence' segfault with certain lengths. (cbagwell)
o Fix `silence' empty output file with A-law input. (robs)
o Fix temporary file problems in Windows (cygwin) with normalise and
other effects. (robs)
o Fix [2779041] spectrogram PNG file is invalid on Windows. (robs)
o Fix [2787587] `trim x 0' should produce zero length audio. (robs)
o Parallel effects channel processing on some hyper-threading/mult-core
architectures. New `--single-threaded' option to disable this. (robs)
Other new features:
o Added ability to create shared DLL's on cygwin (cbagwell)
o New `--guard' & `--norm' options; use temporary files to guard against
clipping for many, but not currently all, effects. (robs)
o New `--ignore-length' option to ignore length in input file header (for
simple encodings & for mp3); instead, read to end of file. (robs)
o New `--temp DIRECTORY' option. (robs)
o New `--play-rate-arg ARG' option. (robs)
o New SOX_OPTS environment variable; can be used to provide default
values for above and other options. (robs)
o Grouped files, e.g. play -r 6k "*.vox" plays all at 6k. (robs)
o Automatically `dither'; new `--no-dither' option to disable this. (robs)
o Can now use `v' & `V' keys to adjust volume whilst playing audio (on some
systems). (robs)
o New bitrate, time in seconds, & total options for soxi; bitrate
and file-size display for sox. (robs)
o `Magic' (libmagic) file type detection now selected using `--magic'
option (where supported).
o [2003121] In many cases, no longer need to specify -t when inputing
audio from a `pipe'. (robs)
o Support more Shoutcast URL variants. (robs)
o Added libSoX example #3: playing audio. (robs)
Other bug fixes:
o Fix [2262177] SoX build could fail with parse /etc/issue error. (robs)
o Fix "no handler for detected file type `application/octet-stream;
charset=binary'" with raw files when using libmagic. (robs)
Internal improvements:
o Rationalise use of and make repeatable across different platforms
pseudo random number generators. (robs)
o Rationalise effects' options interface (getopt compatible). (robs)
o Added stub headers to allow test compilation of all sources on
linux. (robs)
sox-14.2.0 2008-11-09
----------
Previously deprecated features that have been removed in this release:
Deprec- Feature [O(ption)]
ated in [F(ormat)] [E(ffect)] Replacement
------- ---------------------- ----------------------
14.0.0 E pitch new pitch = old key
File formats:
o New `.cvu' unfiltered CVSD; supports any bit-rate. (robs)
o New `.sox' native format intended for intermediate files. (robs)
o Fix WAV write on 64-bit arch. (robs)
o Fix writing PRC ADPCM files. (Silas Brown)
o Fix problems reading short mp3 files. (robs)
Effects:
o N.B. Reduced default bandwidth setting for `rate' effect from 99%
to 95%; use `rate -s' to be compatible with SoX v14.1.0. (robs)
o New options for `rate' effect to configure phase response,
band-width and aliasing. (robs)
o New options for 'dither' effect: RPDF, TPDF, noise-shaping. (robs)
o New `riaa' effect: RIAA vinyl playback EQ. (robs)
o New `loudness' effect: gain control with ISO 226 loudness
compensation. (robs)
o New `bend' effect; pitch bending. (robs)
o New -b option for the norm effect; can be used to fix stereo
imbalance. (robs)
o Wider tempo range for `tempo' effect. (robs)
o New --effects-file option to read effects and arguments from
a file instead of command line. (cbagwell)
o `filter' effect now supports --plot. (robs)
o Improved documentation for the `stat' effect. (robs)
o Fix broken audio pass-through with noiseprof effect. (robs)
o Fix graph legend display when using --plot octave. (robs)
o Fix rare crash with `rate' effect. (robs)
o Fix [2190767] `norm' under-amplifying in some cases. (George Yohng)
o Fix [2007062] Earwax effect can overflow; should clip. (robs)
o Fix [2223251] mcompand should use linkwitz-riley. (robs)
o Fix `phaser' clicks and overflows. (robs)
o Trim will now skip past 2G point correctly. (cbagwell)
o Improved handling of speed changes in the effects chain. (robs)
Other new features:
o New psuedo-effects "newfile" and ":" to allow running
multiple effect chains on a single file. newfile will
create a new output file when an effect chain terminates.
Of most use with trim and silence effects. (cbagwell)
o Can now use multiple pipes as inputs to the combiner;
see `Special Filenames' in sox(1). (robs)
o Display SoX build/run environment information with -V -V. (robs)
o Display (with -V) the detected file-type if it differs from the
file extension. (robs)
o New -t option for soxi; to display the detected file type. (robs)
o New -b/--bits, -e/--encoding alternative options for specifying
audio encoding parameters. (robs)
o [FR 1958680] Support more than 32 input files. (robs)
o New native Mac OSX audio handler for playing/recording. (cbagwell)
Other bug fixes:
o Bump library version because it was not binary compatible with
SoX 14.0.1 (Pascal Giard)
o Turn off versioning of special libsox_fmt* libraries since thats
not really needed. (kwizart)
o Fixed crash when running play with no arguments. (Dan Nelson)
o Allow libpng to be found with -static option. (cbagwell)
o Allow libsamplerate to be found if pkg-config is installed but
no samplerate.pc exists. (cbagwell)
o [2038855] external lpc10 lib patch. (Oden Eriksson, Mandriva)
o Fix memory leaks in effects chain when restarting effects. (cbagwell)
o Fixed pkg-config CFLAGS. (evilynux)
o Fix sndfile inclusion in build in some circumstances. (robs)
o Fix [2026912] Fails on URL-like filenames. (robs)
o Always add _LARGEFILE_SUPPORT when off_t is 64bits to work around
buggy platforms. Fixes not able to read WAV files. (cbagwell)
Internal improvements:
o Fixed all compiler warnings (with gcc 4.3.1, 64-bit arch.). (robs)
o Updates to internal effects chain API. (cbagwell)
o Retire old FFT routines (speeds up `noisered' effect). (robs)
o Allow effects to use getopt. (robs)
o Use libmagic for mp3. (robs)
o Change sox_seek() offset to 64-bit to work with > 2G files (cbagwell)
o Merged libsfx back into libsox to align with sox.h API. (cbagwell)
sox-14.1.0 2008-7-29
----------
Previously deprecated features that have been removed in this release:
Deprec- Feature [O(ption)]
ated in [F(ormat)] [E(ffect)] Replacement
------- ---------------------- ----------------------
13.0.0 O -e -n
13.0.0 O -b/-w/-l/-d -1/-2/-4/-8
13.0.0 E avg, pick mixer
13.0.0 E highp, lowp highpass -1, lowpass -1
13.0.0 E mask dither
13.0.0 E vibro ~= tremolo
13.0.0 F auto Becomes internal only
File formats:
o New option --help-format shows info about supported format(s). (robs)
o New WavPack format (includes lossless audio compression, but not
guaranteed lossless file compression). (robs)
o New htk format. (robs)
o Add .f4 & .f8 raw file extensions. (robs)
o Writing aiff, aifc & dvms now repeatable with -R. (robs)
o Writing hcom no longer fails with unsupported rate--chooses
best match. (robs)
o Au/snd: added support for 32-bit integer and 64-bit float PCM
encoding/decoding; display name of unsupported encoding. (robs)
o Can now write .amb (.wav variant) files [FR 1902232]. (robs)
o Can now read 2,3(2.6),4 bit ADPCM .voc files [FR 1714991]. (robs)
o Can now read some MP3 ID3 tags. (robs)
o Can now write Sounder files. (robs)
o Can now write DEC-variant au files (with -x). (robs)
o Comments support for SoundTool files. (robs)
o Fix [1864216] comments mangled when writing ogg-vorbis. (robs)
o Fix short noise at end of alsa playback. (Morita Sho/Tim Munro/robs)
o Fix wve seek accuracy. (robs)
o Fix lpc10 not working. (robs)
o Fix [1187257] wav MS-ADPCM block-align size incorrect. (robs)
o For wav & au, fix [548256] size in header wrong when piping out. (robs)
o Fix IRCAM SF header processing; support all (modern) variants. (robs)
o Fix 24-bit read/write on big-endian systems. (robs)
o Fix crash trying to open non-existent play-list. (robs)
o Fix FLAC read from stdin with libFLAC >= 8. (Patrick Taylor Ramsey/robs)
o Fix [1997637] Trim effect loses samples (with wav). (robs)
Effects:
o New `splice' effect; splice together audio sections. (robs)
o New `remix' effect; mixes any number of channels. (robs)
o New `norm' (normalise) effect. (robs)
o New `delay' effect; delay one or more channels. (robs)
o New `contrast' enhancement effect [FR 708923]. (robs)
o Improved `rate' resampling effect; resample, polyphase, & rabbit
now deprecated. (robs)
o New `spectrogram' effect; creates a PNG (if built with PNG lib). (robs)
o `synth' can now sweep linearly and squarely (as well as
exponentially). (robs)
o Can now `fade' out to EOF without giving file-length (if it can
be determined from the input file header). (robs)
o Fix synth max. level setting for some output encodings. (robs)
o Fix crash on 64-bit arch. with tempo & key effects. (Sami Liedes)
o `gain' alias for the vol effect. (robs)
Other new features:
o Now possible to control play-back resampling quality (and hence
cpu-load) via the PLAY_RATE_ARG environment variable. (robs)
o Command line support for multiple file comments. (robs)
o New --combine=mix-power option to mix combine using 1/sqrt(n) scaling
instead of 1/n [FR 2012856]. (robs)
o New --input-buffer option to specify (only) input buffer size. (robs)
o New `soxi' utility to extract/display file header fields. (robs)
o Pkg-config support. (Pascal Giard)
o Simple VU meter. (robs)
o Heuristic to detect when playing an album and set
the default replay-gain mode to `album'. (robs)
o Better auto-choice of output file format parameters when
type is different to that of input file. (robs)
o SoX now treats (and displays) encoding size & signal precision
separately. (robs)
o Default audio devices (sox), and allow environment variables to
be used to override the default audio device driver (rec/play)
and default audio device (all). (robs)
o Simpler file info display for `play'. (robs)
o For some file-types, warn if file size seems too short. (robs)
o Added auto-detect for caf, sndr, txw & sf files. (robs)
o Added example0: simpler example of how to develop applications that
use the libSoX effects chain. (robs)
o Added example2: simple example of how to develop applications that
use libSoX to read an audio file. (robs)
o Moved contents of soxexam man page into soxeffect man page. (robs)
Other bug fixes:
o Fix [1890983] rec shortcut should apply bit depth (8-bit,
16-bit, etc.) to input handler. (robs)
o Fix ungraceful handling of out of disc space and other write
errors (bug was introduced in 14.0.0). (robs)
o Fix endian selection (-B, -L, -x) in some circumstances. (robs)
o Fix auto-detect of hcom files. (robs)
Internal improvements:
o Use FORTIFY_SOURCE with gcc. (robs)
o Fixed all compiler warnings (with gcc 4.2.3, 32-bit arch). (robs)
o Reimplement (separately) SoundTool & Sounder format handlers. (robs)
o Allow formats & effects to have any size of private data. (robs)
sox-14.0.1 2008-01-29
----------
File formats:
o Added support for non-standard, non-WAVE_FORMAT_EXTENSIBLE
(esp. 24-bit) PCM wav (see wavpcm in soxformat.7 for details). (robs)
Effects:
o Reimplemented reverb to be similar to freeverb. (robs)
Bug fixes:
o Fix Sndtool read error causing noise at start. (Reynir Stefánsson)
o Fix mixer with >4 numbers, and mixer -3 behaving as mixer -4. (robs)
o Fix [1748909] sox does not report remaining playtime of mp3s. (robs)
o Fix failure to read AIFF files with empty MARK chunk. (robs)
o Fix spurious 'Premature EOF' message in some circumstances. (robs)
o Switched to 16-bit for libao driver since not all its plugins
support it (such as oss, nas, and pulse audio) (Morita Sho)
o Stop crash when "rec" is run with no arguments (Morita Sho).
o Fix -V (without argument) on non-gnu systems. (robs)
o Fix reported (with -V) output audio length in some cases. (robs)
o Fix actual FLAC output file audio length in some cases. (robs)
o Fix poor 24-bit FLAC compression & support newer versions of
libFLAC (1.2.x). (robs)
o Fix loss of 1 decoded FLAC block when using "trim 0 ...". (robs)
o Fix trim when first effect with IMA-ADPCM input wav file. (robs)
Internal improvements:
o Let "make distcheck" run some automated test scripts.
o Distribute missing cmake files.
o Fix ogg vorbis compile error on some platforms.
o Remove unused libltdl that could cause header mismatch with
installed libltdl.
o Fix AMR detection with --disable-shared. (robs)
o Updated configure to support linking to static libraries
on mingw for flac, ogg, and libsamplerate libraries.
o Added example1: simple example of how to develop applications that
use the libSoX effects chain. (robs)
sox-14.0.0 2007-09-11
----------
File formats:
o Added ffmpeg support. (Reuben Thomas)
o FLAC: added seekable decoding; added seek-table generation. (robs)
o Added M3U & PLS playlist formats [FR# 1667341] (Note: SHOUTcast PLS
is only partially supported). (robs)
o Made format readers and writers into individual modules for easier
distribution of differently-licensed code. (Reuben Thomas)
o Added libao support. (Reuben Thomas)
o Added support for ADPCM-encoded PRC files, based on Danny Smith's
rec2wav and sndcmp. (Reuben Thomas)
o Added AMR-NB [FR# 728875] & AMR-WB formats (with external libs). (robs)
o Added LPC-10 support. (Reuben Thomas)
Effects:
o Use LADSPA effects (one input, one output). (Reuben Thomas)
o --octave option changed to --plot; can now also use gnuplot to
plot effect transfer function. (robs)
o Added soft-knee companding. (robs)
o Show (with --plot) compand transfer function. (robs)
o Allow e.g. "vol 6dB" (as well as "vol 6 dB"). (robs)
o Changed deemph filter from 1st order to 2nd order for
slightly better accuracy. (robs)