BackgroundMusic/CONTRIBUTING.md
Kyle Neideck c617d98f9d
BGMDevice: Only enable volume/mute if the output device also has them.
BGMApp now disables BGMDevice's volume and/or mute controls if the
output device selected in BGMApp doesn't have matching controls. This
prevents the controls from being presented to the user when they don't
do anything.

In BGMPlayThrough, wait much longer for our IOProcs to stop themselves
before assuming something's gone wrong. In testing, rapidly changing
between output devices with and without controls while playing audio
would occasionally cause one of the IOProcs to take too long to stop
itself.

Also adds some basic scriptability, mainly so UI tests can use
AppleScript to check BGMApp's state that would be complicated to check
otherwise. (In this case, to check which output device is selected.)

Fixes #101.
2017-05-30 23:22:48 +10:00

54 lines
2.9 KiB
Markdown

<!-- vim: set tw=120: -->
# Contributing
Firstly, thanks for reading this. Pull requests, bug reports, feature requests, questions, etc. are all very welcome --
including ones from non-developers.
## Issues
You'll probably want to update to the latest version of the code before creating an issue. The easiest way is to just
run the installation command from [README.md](/README.md#install) again. (But `git pull && ./build_and_install.sh` is
faster.)
For bug reports about `build_and_install.sh`, please include your `build_and_install.log`. It should be saved in the
directory `build_and_install.sh` is in.
It might also be helpful to include logs in bug reports about Background Music itself. Those logs go to syslog by
default, so you can use Console.app to read them. (It might help to search for "BGM" or "Background Music".)
You also might not get any log messages at all. Normally (i.e. in release builds) Background Music only logs errors and
warnings. We're still working on adding optional debug-level logging to release builds.
If you feel like being really helpful, you could reproduce your bug with a debug build and include the debug logs, which
are much more detailed. But don't feel obligated to. To install a debug build, use `./build_and_install.sh -d`.
If you make an issue and you're interested in implementing/fixing it yourself, mention that in the issue so we can
confirm you're on the right track, assign the issue to you and so on.
## Code
The code is mostly C++ and Objective-C. But don't worry if you don't know those languages--I don't either. Or Core
Audio, for that matter. Also don't worry if you're not sure your code is right.
No dependencies so far. (Though you're welcome to add some.)
The best place to start is probably [DEVELOPING.md](/DEVELOPING.md), which has an overview of the project and
instructions for building, debugging, etc. It's kind of long, though, and not very interesting, so you might prefer to
go straight into the code. In that case, you'll probably want to start with
[BGMAppDelegate.mm](/BGMApp/BGMApp/BGMAppDelegate.mm).
If you get stuck or have questions about the project, feel free to open an issue. You could also [email
me](mailto:kyle@bearisdriving.com) or try [#backgroundmusic on
Freenode](https://webchat.freenode.net/?channels=backgroundmusic).
If you have questions related to Core Audio, the [Core Audio mailing
list](https://lists.apple.com/archives/coreaudio-api) is very useful. There's also the [Core Audio
Overview](https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html)
and the [Core Audio
Glossary](https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CoreAudioGlossary/Glossary/core_audio_glossary.html).
If you remember to, add a copyright notice with your name to any source files you change substantially. Let us know in
the PR if you've intentionally not added one so we know not to add one for you.