forked from jstrait/wavefile
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
85 lines (75 loc) · 4.02 KB
/
CHANGELOG
File metadata and controls
85 lines (75 loc) · 4.02 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
0.5.0
===============================================================================
* Added support for reading and writing Wave files containing 32 and 64-bit
floating point sample data.
* Added support for buffers that contain floating point data (i.e., samples
between -1.0 and 1.0), including the ability to convert to and from
PCM buffers.
* Added a new Duration object which can be used to calculate the playback
time given a sample rate and number of sample frames.
* New attributes: Reader.current_sample_frame, Reader.total_sample_frames,
and Writer.total_sample_frames.
* Ability to get these attributes as a Duration object as well:
Reader.total_duration, Writer.total_duration.
* The 2nd argument to Format.new now indicates the sample format, not the
bits per sample. For example, :pcm_16 or :float_32 instead of 8 or 16.
For backwards compatibility, 8, 16, and 32 can still be given and will be
interpreted as :pcm_8, :pcm_16, and :pcm_32, but this support might be
removed in the future.
* Bug fix: Wave files are no longer corrupted when an unhandled exception
occurs inside a Writer block. (Thanks to James Tunnell
(https://github.com/jamestunnell) for reporting and fixing this).
* Bug fix: Writer.file_name now returns the file name, instead of always
returning nil (Thanks to James Tunnell (https://github.com/jamestunnell)
for reporting this).
* Info.duration now returns a Duration object, instead of a hash.
* Info.sample_count has been renamed sample_frame_count.
0.4.0
===============================================================================
* A brand new API, based on streaming. (The old API has been removed).
Improvements due to the new API include:
** Reduced memory consumption, due to not having to load the entire file
into memory. In practice, this allows the gem to read/write files that
previously would have been prohibitively large.
** Better performance for large files, for the same reason as above.
** Ability to progressively append data to the end of a file, instead of
writing the entire file at once.
** Ability to easily read and write data in an arbitrary format, regardless of
the file's native format. For example, you can transparently read data out
of a 16-bit stereo file as 8-bit mono.
** Automatic file management, similar to how IO.open() works.
* Ability to query format metadata of files without opening them, even for
formats that this gem can't read or write.
* Support for reading and writing 32-bit PCM files.
* No longer supported: Reading PCM data as floating point and writing floating
point as PCM.
0.3.0
===============================================================================
* New method bits_per_sample=(). Allows converting a file from 8-bit to 16-bit
and vice-versa.
* New method num_channels=(). Allows converting a mono file to stereo, and
vice-versa.
* New method sample_rate=(). Allows changing the sample rate of a file.
* New method duration(). Returns a hash listing the playback time of the file.
* New method inspect(). Returns a pretty-printed string listing metadata
about the file.
* More descriptive error messages are displayed when a file with an invalid
format can't be opened.
* Files that have more than just a format and data chunk can now be opened.
0.2.1
===============================================================================
* Fixed bug which prevented stereo files from being opened, due to refactoring
gone bad.
0.2.0
===============================================================================
* Added support for properly reading and writing stereo files. Files with more
than 2 channels (such as surround sound) are supported as well.
* Added convenience methods mono?() and stereo?().
* Can now pass :mono and :stereo into the num_channels argument of the
constructor, to allow for more readable code.
* Added method reverse().
* Conversion of raw samples to normalized samples, and vice versa, is more
accurate.
0.1.0
===============================================================================
* Initial version.