-
Notifications
You must be signed in to change notification settings - Fork 121
Sphinx documentation #74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
64f62dc
naive Sphinx documentation
bastibe c48c48a
fix ReST conversion error
bastibe a02aab4
converted docstrings to numpy style ReST format
bastibe c32de91
added documentation for class members
bastibe f0e8ad3
removed incorrect information from README
bastibe 4c1b28d
a few small changes suggested by mgeier
bastibe 38dc864
Move module docstring to the top of the file
mgeier c75d39a
Move documentation to doc/ subdirectory
mgeier 8c19b5b
Remove superfluous toctree directive
mgeier 2050c27
Change to automodule and use source order
mgeier 705f058
Move property documentation from __init__() to the properties
mgeier cf11d27
Change display of return type
mgeier e20c471
Shorter summary of endian-ness
mgeier 2e717a9
Remove names of return values from docs
mgeier 9b52339
Kill open()
mgeier 39f6d87
Re-order functions
mgeier 47a6085
Re-order methods within SoundFile
mgeier 861606c
Use the __init__() docstring as class documentation
mgeier b557e0a
Add requirements file for Sphinx
mgeier a89b0b9
Add mock modules to avoid full installation for Sphinx
mgeier 87bed95
Add current and parent path to Sphinx search path
mgeier e17a018
Remove duplicate parameter documentation
mgeier 9c91a19
Use short form of function/method/class links
mgeier 53aae5a
Change argument order
mgeier d1c1555
Create docstrings for underscore-prefixed functions
mgeier 0214fb8
Changes to most of the docstrings
mgeier 9f646e1
Use README.rst as long_description in setup.py
mgeier 82596e6
Remove module index and search page
mgeier 855d6cb
Add AIFF to available_formats() example
mgeier File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| PySoundFile | ||
| =========== | ||
|
|
||
| PySoundFile is an audio library based on libsndfile, CFFI and Numpy | ||
|
|
||
| PySoundFile can read and write sound files. File reading/writing is | ||
| supported through `libsndfile <http://www.mega-nerd.com/libsndfile/>`__, | ||
| which is a free, cross-platform, open-source library for reading and | ||
| writing many different sampled sound file formats that runs on many | ||
| platforms including Windows, OS X, and Unix. It is accessed through | ||
| `CFFI <http://cffi.readthedocs.org/>`__, which is a foreign function | ||
| interface for Python calling C code. CFFI is supported for CPython 2.6+, | ||
| 3.x and PyPy 2.0+. PySoundFile represents audio data as NumPy arrays. | ||
|
|
||
| | PySoundFile is BSD licensed. | ||
| | (c) 2013, Bastian Bechtold | ||
|
|
||
| Installation | ||
| ------------ | ||
|
|
||
| On the Python side, you need to have CFFI and Numpy in order to use | ||
| PySoundFile. Additionally, You need the library libsndfile installed on | ||
| your computer. On Unix, use your package manager to install libsndfile. | ||
| Then just install PySoundFile using pip or ``python setup.py install``. | ||
|
|
||
| If you are running Windows, I recommend using | ||
| `WinPython <https://code.google.com/p/winpython/>`__ or some similar | ||
| distribution. This should set you up with Numpy. However, you also need | ||
| CFFI and it's dependency, PyCParser. A good place to get these are the | ||
| `Unofficial Windows Binaries for | ||
| Python <http://www.lfd.uci.edu/~gohlke/pythonlibs/>`__. Having installed | ||
| those, you can download the Windows installers for PySoundFile: | ||
|
|
||
| | `PySoundFile-0.5.0.win-amd64-py2.7 <https://github.com/bastibe/PySoundFile/releases/download/0.5.0/PySoundFile-0.5.0.win-amd64-py2.7.exe>`__ | ||
| | `PySoundFile-0.5.0.win-amd64-py3.3 <https://github.com/bastibe/PySoundFile/releases/download/0.5.0/PySoundFile-0.5.0.win-amd64-py3.3.exe>`__ | ||
| | `PySoundFile-0.5.0.win32-py2.7 <https://github.com/bastibe/PySoundFile/releases/download/0.5.0/PySoundFile-0.5.0.win32-py2.7.exe>`__ | ||
| | `PySoundFile-0.5.0.win32-py3.3 <https://github.com/bastibe/PySoundFile/releases/download/0.5.0/PySoundFile-0.5.0.win32-py3.3.exe>`__ | ||
|
|
||
| Usage | ||
| ----- | ||
|
|
||
| Each SoundFile can either open a sound file on the disk, or a file-like | ||
| object (using ``libsndfile``'s `virtual file | ||
| interface <http://www.mega-nerd.com/libsndfile/api.html#open_virtual>`__). | ||
| Every sound file has a specific samplerate, data format and a set number | ||
| of channels. | ||
|
|
||
| You can read and write any file that | ||
| `libsndfile <http://www.mega-nerd.com/libsndfile/#Features>`__ can | ||
| open. This includes Microsoft WAV, OGG, FLAC and Matlab MAT files. | ||
|
|
||
| If a file on disk is opened, it is kept open for as long as the | ||
| SoundFile object exists and closes automatically when it goes out of | ||
| scope. Alternatively, the SoundFile object can be used as a context | ||
| manager, which closes the file when it exits. | ||
|
|
||
| All data access uses frames as index. A frame is one discrete time-step | ||
| in the sound file. Every frame contains as many samples as there are | ||
| channels in the file. | ||
|
|
||
| Read/Write Functions | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Data can be written to the file using ``write()``, or read from the | ||
| file using ``read()``. | ||
|
|
||
| Here is an example for a program that reads a wave file and copies it | ||
| into an ogg-vorbis file: | ||
|
|
||
| .. code:: python | ||
|
|
||
| import pysoundfile as sf | ||
|
|
||
| data, samplerate = sf.read('existing_file.wav') | ||
| sf.write(data, 'new_file.ogg', samplerate=samplerate) | ||
|
|
||
| Virtual IO | ||
| ~~~~~~~~~~ | ||
|
|
||
| If you have an open file-like object, you can use something similar to | ||
| this to decode it: | ||
|
|
||
| .. code:: python | ||
|
|
||
| from pysoundfile import SoundFile | ||
| with SoundFile('filename.flac', 'rb') as fObj: | ||
| data, samplerate = sf.read(fObj) | ||
|
|
||
| Here is an example using an HTTP request: | ||
|
|
||
| .. code:: python | ||
|
|
||
| from io import BytesIO | ||
| import pysoundfile as sf | ||
| import requests | ||
|
|
||
| fObj = BytesIO() | ||
| response = requests.get('http://www.example.com/my.flac', stream=True) | ||
| for data in response.iter_content(4096): | ||
| if data: | ||
| fObj.write(data) | ||
| fObj.seek(0) | ||
| data, samplerate = sf.read(fObj) | ||
|
|
||
| Accessing Text Data | ||
| ~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| In addition to audio data, there are a number of text fields in every | ||
| sound file. In particular, you can set a title, a copyright notice, a | ||
| software description, the artist name, a comment, a date, the album | ||
| name, a license, a tracknumber and a genre. Note however, that not all | ||
| of these fields are supported for every file format. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this should be
import pysoundfile as sf