Commit graph

237 commits

Author SHA1 Message Date
Zach Pomerantz
954e4979f8 expose Audio.devices.input/output 2017-05-31 20:14:58 -04:00
Ken Cooke
0fe404adbb Merge branch 'master' of https://github.com/highfidelity/hifi into audio-noisegate-new 2017-05-23 17:31:03 -07:00
Ken Cooke
8608695695 Remove old noise gate 2017-05-23 12:52:29 -07:00
Ken Cooke
175d1be7ca Implement state-machine to detect gate opening/closing. Fixes bugs with mute. 2017-05-23 12:32:41 -07:00
Ken Cooke
71de3d5ca1 Instantiate new gate with the correct number of channels 2017-05-23 08:40:15 -07:00
Zach Pomerantz
c5a0a1af2f Merge pull request #10429 from zzmp/audio/close-device
Close audio device when switching outputs
2017-05-18 17:18:53 -04:00
Vladyslav Stelmakhovskyi
045e93fb95 Code style fixes #2 2017-05-11 21:49:07 +02:00
Vladyslav Stelmakhovskyi
2328da3c48 Merge branch 'master' into audio-source-sync 2017-05-10 21:22:40 +02:00
Vladyslav Stelmakhovskyi
2d46f9d30e Move most of the logic to C++ model, speed up initialization. Reduce number of AudioClient blocking calls to minimum 2017-05-10 21:21:39 +02:00
Zach Pomerantz
5a11911e1d close audio device when switching 2017-05-09 19:38:52 -04:00
Zach Pomerantz
219062b76a Merge branch 'master' of github.com:highfidelity/hifi into fix/audio-underrun 2017-05-09 17:32:24 -04:00
Zach Pomerantz
c478f1a752 synchronously fill injector buffer on underrun 2017-05-09 16:34:42 -04:00
Zach Pomerantz
defc3c1c4f Merge branch 'master' of github.com:highfidelity/hifi into fix/audio-bg-join 2017-05-08 19:55:10 -04:00
Vladyslav Stelmakhovskyi
d0111ac0bb Merge branch 'master' into audio-source-sync 2017-05-08 20:09:34 +02:00
Zach Pomerantz
e882e7b648 rm extra lock in audio read 2017-05-05 15:37:01 -04:00
Vladyslav Stelmakhovskyi
d18ac6dd49 Reimplemented Tablet Audio screen using C++ model 2017-04-28 23:02:28 +02:00
Zach Pomerantz
4a26785eda cleanup Audio bg threads in cleanupBeforeQuit 2017-04-24 18:21:27 -04:00
Zach Pomerantz
cd2665fc55 standardize Audio bg thread joins 2017-04-24 18:10:50 -04:00
Zach Pomerantz
b6d111369f Merge pull request #9935 from zzmp/fix/audio-initialization
Fix data race in audio output initialization
2017-03-21 00:23:28 -04:00
Zach Pomerantz
a68146e7d9 mv audio output init to output thread 2017-03-17 15:31:00 -04:00
Zach Pomerantz
789bb7c855 rename audio(Mic)OutboundPPS 2017-03-15 13:30:39 -04:00
Zach Pomerantz
2d0e11e2d1 add AudioNoiseGate to recording 2017-03-15 13:30:39 -04:00
Zach Pomerantz
b1e5e43faa mv AudioNoiseGate to audio 2017-03-15 00:15:33 +00:00
Zach Pomerantz
0abcda86a8 mv AudioNoiseGate to audio 2017-03-15 00:14:55 +00:00
Brad Hefta-Gaub
a38965d628 add more audio stats 2017-03-11 09:50:30 -08:00
Brad Hefta-Gaub
eaea718de1 add various scriping interfaces for managing the audio scope and detecting noise gate transitions 2017-03-10 17:08:19 -08:00
Chris Collins
de84e07281 Merge pull request #9714 from thoys/fix-recorder-js-playback
Fix recorder.js playback in interface
2017-02-23 09:59:37 -08:00
Thijs Wenker
5033e7be11 CR fixes 2017-02-23 18:22:36 +01:00
Thijs Wenker
72eb797910 remove unused encoder (was for testing) 2017-02-21 20:22:29 +01:00
Thijs Wenker
13b2b6086f Fix recorder.js playback in interface 2017-02-21 19:47:26 +01:00
Anthony J. Thibault
856a38af0c Fix for audio, toolbar and tablet on macos. 2017-02-17 17:08:23 -08:00
Zach Pomerantz
061668cba4 use lock-free pipe for local audio in device callback 2017-01-22 00:25:08 -05:00
Zach Pomerantz
df051ff8df maintain network audio in int16_t 2017-01-20 18:37:46 -05:00
Zach Pomerantz
bb247fe8a3 rename AudioMixRingBuffer 2017-01-20 14:48:54 -05:00
Zach Pomerantz
5927c089ac use AudioRingMixBuffer as LocalInjectorsStream 2017-01-20 12:29:44 -05:00
Zach Pomerantz
4f7f3c2a60 mv localInjectorsBuffer to float-based localInjectorsStream
The localInjectorsBuffer is based on
AudioRingBuffer, which only accounts for int16_t.
Local injectors are mixed, and so they can exceed
std::numeric_limits<int16_t> before limiting.
This will allow them to remain as float until
limiting (in the device callback) - once the new
stream is implemented.
2017-01-20 12:29:44 -05:00
Zach Pomerantz
4c7c7ee3cc mv audio injector preparation to own thread 2017-01-20 12:29:44 -05:00
Zach Pomerantz
969d776e1f queue injector audio after device callbacks
Conflicts:
	libraries/audio-client/src/AudioClient.cpp
2017-01-20 12:29:44 -05:00
Zach Pomerantz
dee5f63037 rename audio mix/scratch buffers
Conflicts:
	libraries/audio-client/src/AudioClient.cpp
	libraries/audio-client/src/AudioClient.h
2017-01-20 12:29:44 -05:00
Zach Pomerantz
3a0d874bb5 add injector ring buffer to audio client 2017-01-20 12:29:44 -05:00
Zach Pomerantz
a7ecf41a42 add audio limiting to device callback 2017-01-20 12:29:44 -05:00
Zach Fox
7030c7b0a6 Space bubble improvements (#9142)
* The space bubble around a player's avatar is now visualized. When another avatar enters a player's bubble, The bubble visualization will appear, a soft tone will play, and the "Bubble" HUD button will flash.
* The space bubble radius setting has been removed. Space bubble size now scales based on avatar scale.
* Space bubble collision detection is now more accurate and reliable.
* CTRL + N toggles the bubble.
* The "Bubble" HUD button has been moved to the proper location.
2016-12-12 14:22:54 -08:00
Ken Cooke
e93e1a7c4f Preliminary support for Ambisonic audio injectors.
Supports 4-channel WAV files, presumed to be B-format (FuMa) first-order Ambisonic.
Supports WAV with arbitrary sample rate (needs optimization).
Supports soundfield volume and orientation set via script.
Supports localOnly client-side injection using simple (non-spatialized) test renderer.
2016-12-02 18:20:57 -08:00
Seth Alves
3903a51062 fix a couple of crash-on-exits 2016-10-25 13:58:48 -07:00
Clément Brisset
b63eb6ba9f Merge pull request #8665 from zzmp/feat/audio-stats
move audio stats to QML/JS, with graphs
2016-10-20 16:43:49 -07:00
Clément Brisset
02991bffab Merge pull request #8687 from zzmp/feat/injector-loopback
loopback local injectors on server echo
2016-09-30 11:21:10 -07:00
Zach Pomerantz
768354e49f loopback local injectors on server echo 2016-09-29 15:25:17 -07:00
Ken Cooke
858297241b Even lower audio latency 2016-09-29 12:48:21 -07:00
Zach Pomerantz
b9c4018b8e expose AudioStats to qml/js 2016-09-26 15:35:29 -07:00
Zach Pomerantz
e2ff738fc3 strip unused audio settings
- remove parameters on the jitter buffer algorithm, these are now static
- remove parameters on the output starve detection algorithm, now static
- move interface audio settings to the Developer menu
2016-09-21 17:35:27 -07:00
Ken Cooke
b14f43b11e Merge pull request #8610 from zzmp/test/audio-jitter
add audio jitter simulator testing tool
2016-09-21 16:43:36 -07:00
Zach Pomerantz
177466e4c7 calculate unplayed ms on all streams/buffers as max 2016-09-15 17:54:41 -07:00
Zach Pomerantz
53f5899a69 add audio jitter simulator 2016-09-15 14:51:39 -07:00
Ken Cooke
25920732ec Remove unused buffer 2016-09-14 08:23:53 -07:00
Ken Cooke
f1455ab157 Remove unneeded buffers 2016-09-13 20:06:44 -07:00
Ken Cooke
724df38df0 Optimize the audio pipeline. Use float mixBuffer and apply reverb at 24khz 2016-09-13 16:11:06 -07:00
Zach Pomerantz
e785c0cdf8 add test for audio jitter 2016-09-08 17:50:11 -07:00
Ken Cooke
28a99a7a03 Merge branch 'master' of https://github.com/highfidelity/hifi into low-latency-audio 2016-08-29 12:38:17 -07:00
Ken Cooke
4b2778f02d Re-implement the continuous detection of device changes for all platforms, using a background thread. This prevents the glitches caused by calling checkDevices() on the audio processing thread. 2016-08-20 12:22:47 -07:00
Ken Cooke
3583bdecbb Fix for calculateDeviceToNetworkInputRatio() which was completely broken.
Running the audio back-end at 44.1k now works correctly.
2016-08-18 16:56:26 -07:00
Seth Alves
87dbfa7e47 add -Wsuggest-override to compile flags and deal with fallout 2016-08-18 09:51:41 -07:00
Brad Hefta-Gaub
ca3a194454 implment coded renegotiation in client if for some reason unexpected audio codecs come in to inbound stream 2016-08-02 15:30:03 -07:00
David Kelly
3df373252f Several minor things
We could only partially fill the _scratchBuffer - .wav files may not
be exactly N frames long.  Doh.

While at it, I needed to call finishLocalInjection() after local
injectors are done, and the access to the injector vector needs to
be locked, given that we do a QtDirectConnection with the networking
and thus the outputLocalInjectors is on a different thread.

The clicking was just 0-ing out the _scratchBuffer.
2016-07-18 14:00:41 -07:00
Ken Cooke
2674df6095 Fix the distance-attenuation model (for injectors only)
The original attenuation model seems wrong, under-attenuating at close distance but completely muting after 45m.

This uses a physics-based model of -6dB per doubling of distance in free space, for the injectors. The AudioMixer model and domain settings still need to be reworked in a future PR.
2016-07-14 18:34:07 -07:00
David Kelly
dde4d16759 Merge branch 'master' of github.com:highfidelity/hifi into dk/firstLameAttempt 2016-07-13 15:15:35 -07:00
David Kelly
3955e03aa2 Fix for build error
doh!
2016-07-12 12:15:12 -07:00
David Kelly
80d33ee251 Working now as frame-at-a-time
So localOnly sounds get HRTF'd, one network frame at a time.  Less
processing (upsampling, limiting, etc...) than doing this at the
end of the pipeline (in the AudioOutputIODevice::readData call).
2016-07-11 09:11:23 -07:00
Brad Hefta-Gaub
ba6bb24595 rework plugins to allow different decoder/encoder instances per streams 2016-07-10 16:49:03 -07:00
David Kelly
600348bf10 Initial cut of htrf for mono localOnly injectors
Probably need to clean up a bit, but wanted to get this out there
for comment on more general issues, etc...

To test, I added a localOnly: true to the cow in the tutorial.
2016-07-07 16:07:41 -07:00
Brad Hefta-Gaub
9333c7dcca Merge branch 'master' of https://github.com/highfidelity/hifi into codecPlugins 2016-07-06 13:26:19 -07:00
Brad Hefta-Gaub
7a4b11ee97 more work on codecs 2016-06-27 13:06:19 -07:00
Brad Hefta-Gaub
d7bffc3eab first cut at negotiating codecs 2016-06-23 17:14:41 -07:00
Brad Hefta-Gaub
c0be9aec6a cleanup the callers of the resamplers for mic to net and net to speaker, remove loopback resampler 2016-06-23 10:28:29 -07:00
Brad Davis
97e96f7b67 PR comments 2016-03-31 13:19:26 -07:00
howard-stearns
adb33e7dca Up default initial buffer frame size to the value from before. 2016-02-18 16:32:18 -08:00
howard-stearns
d328b82c3c Default output buffer size is 1 frame, and automatic updates don't persist
changes (just in-memory).
2016-02-16 12:09:44 -08:00
Howard Stearns
4255b1f9aa Change output buffer size on correct thread, and turn on automatic resizing on all platforms instead of just mac. 2016-02-16 11:22:01 -08:00
Stephen Birarda
445662f5ae clean sweep of old now unused audio files 2016-02-08 15:38:12 -08:00
Ryan Huffman
89c412c324 Merge branch 'master' of https://github.com/highfidelity/hifi into proto-received-message 2015-12-04 11:38:28 -08:00
Ryan Huffman
07d21514c5 Merge branch 'master' of https://github.com/highfidelity/hifi into proto-received-message 2015-11-19 10:47:37 -08:00
Ken Cooke
998f6e099f Merge branch 'master' of https://github.com/highfidelity/hifi into audio-reverb 2015-11-19 08:39:55 -08:00
Ken Cooke
2489eaa30e Changed the audio pipeline to allow stereo reverberation, using separate source (loopback audio) and listener (received audio) reverbs. 2015-11-19 08:32:13 -08:00
Ryan Huffman
2a416ebc61 Merge branch 'master' of https://github.com/highfidelity/hifi into received-message 2015-11-18 16:52:23 -08:00
Brad Davis
5b8047ded4 Make recording and playback work in interface, playback in agent 2015-11-18 14:04:45 -08:00
Ken Cooke
1a7f06dc95 Removed the commented-out Gverb code 2015-11-18 10:26:06 -08:00
Ken Cooke
c61dad108c Replace Gverb with new reverb 2015-11-18 09:16:18 -08:00
Brad Davis
900f425f35 Recording fixes 2015-11-17 15:18:31 -08:00
Brad Davis
d099f61170 Updating audio record/playback mechanism to more closely match actual audio input 2015-11-16 14:57:24 -08:00
Ryan Huffman
7682ab00e3 Add ReceivedMessage and receive progress 2015-10-15 14:09:53 -07:00
Atlante45
0f18db886c Remove 4 Application static methods
- Replace by lambda
- Cleaned up global scope
2015-10-06 13:56:19 -07:00
Ken Cooke
c4bc5233b1 In AudioClient, replace all SOXR with AudioSRC. Used for input-to-network, network-to-output, and loopback resampling. 2015-09-22 23:10:03 -07:00
Brad Davis
380b0cb23c Removing tabs from our javascript and C++ 2015-08-24 15:26:46 -07:00
Howard Stearns
8f616c04fb Fix https://app.asana.com/0/32622044445063/43589567731045 2015-08-02 21:46:39 -07:00
Stephen Birarda
7d60b86f52 kill the PacketLister (AKA Huffman 1 : PacketListener 0) 2015-07-17 09:07:39 -07:00
Stephen Birarda
1f4ac0f17c emit mutedByMixer signal for a noisy mute 2015-07-14 14:30:46 -07:00
Stephen Birarda
fbd287472d make NodeData parseData take only packet 2015-07-14 14:09:00 -07:00
Stephen Birarda
0637f589b5 add PacketListener to help unregister for packets 2015-07-14 13:52:38 -07:00
Stephen Birarda
ede39515d8 update parseData for new network API 2015-07-13 14:26:10 -07:00
Ryan Huffman
28a1059232 Update AudioClient to use QSharedPointer<NLPacket> 2015-07-10 08:45:39 -07:00
Ryan Huffman
5e65f422fa Move mute environment handling to Application 2015-07-09 15:30:25 -07:00
Ryan Huffman
dd9dea7a97 Merge remote-tracking branch 'birarda/protocol' into receive_packets
Conflicts:
	interface/src/DatagramProcessor.cpp
	interface/src/octree/OctreePacketProcessor.cpp
	libraries/entities/src/EntityEditPacketSender.cpp
	libraries/networking/src/LimitedNodeList.h
	libraries/networking/src/NLPacket.h
2015-07-09 14:08:35 -07:00
Ryan Huffman
bb132e354b Update AudioClient to use packet callbacks 2015-07-09 09:24:07 -07:00
Atlante45
fef51682d5 Jurisdiction map uses new packet API 2015-07-08 11:19:57 -07:00
Stephen Birarda
edf7a96b58 update audio client packet send to NLPacket 2015-07-07 10:53:55 -07:00
Seth Alves
b258aeaa3d merge from master 2015-06-18 10:04:14 -07:00
Howard Stearns
b4dfaba55e Incorporate ctrlaltdavid's changes. 2015-06-17 11:59:15 -07:00
Seth Alves
508ae276c6 enable -Wdouble-promotion 2015-06-16 18:23:10 -07:00
Howard Stearns
27f40ea881 Signal Audio.disconnected, and use new hello/goodbye sounds in resources. 2015-06-11 20:33:30 -07:00
Stephen Birarda
666830c04d add a sound once first AM packet received 2015-06-08 11:30:12 -07:00
Atlante45
1dcc2f7988 Fix local injector modifying system volume 2015-05-04 15:53:58 +02:00
David Rowe
9576ad19a7 Move "Stereo Audio" option into developerMenu.js
And rename it "Stereo Input" to better relect what it does.
2015-04-28 14:14:10 -07:00
Atlante45
8f8e4d8dc6 Add generated audio methods to audio interface 2015-04-15 15:49:11 +02:00
Andrew Meadows
94b3c4a3a8 simpler less draconian workaround 2015-02-20 11:57:37 -08:00
Andrew Meadows
aa667464c0 merge upstream/master into andrew/thermonuclear 2015-02-20 08:26:51 -08:00
Andrew Meadows
599ef68df8 fix for scratchy audio on windows 2015-02-20 08:26:11 -08:00
Philip Rosedale
f6f54809d0 Merge pull request #4291 from Atlante45/reverb_smoothing
Reverb smoothing
2015-02-18 15:34:14 -08:00
Andrew Meadows
53855c89e9 Merge pull request #4289 from birarda/dependencies
add gverb and glm as cmake external projects
2015-02-17 10:00:29 -08:00
Atlante45
f279030283 Remove _gverbLocal 2015-02-16 16:15:03 +01:00
Atlante45
b59aaf8a0f Merge branch 'master' of https://github.com/highfidelity/hifi into reverb_smoothing
Conflicts:
	libraries/audio-client/src/AudioClient.cpp
	libraries/audio-client/src/AudioClient.h
2015-02-16 16:14:49 +01:00
Stephen Birarda
4300836810 make gverb a cmake external project 2015-02-13 15:47:35 -08:00
Atlante45
5a81b8a590 Do all the reverb at the input level 2015-02-13 10:17:08 +01:00
Stephen Birarda
ff6f8ea4a1 cleaner cleanup of AudioClient from RenderingClient 2015-02-12 13:14:30 -08:00
Atlante45
438978b855 Fix reverb memory leak 2015-02-10 19:25:12 +01:00
Atlante45
e79e1a547f Merge branch 'master' of https://github.com/highfidelity/hifi into reverb_smoothing
Conflicts:
	libraries/audio-client/src/AudioClient.cpp
	libraries/audio-client/src/AudioClient.h
2015-02-10 16:08:34 +01:00
Stephen Birarda
30afadc7b7 fixes for new settings API 2015-02-04 10:53:05 -08:00
Stephen Birarda
11f3161029 resolve conflicts on merge with upstream/master 2015-02-04 10:38:05 -08:00
Atlante45
4ef87b9919 Merge branch 'master' of https://github.com/highfidelity/hifi into android
Conflicts:
	interface/src/Application.cpp
	interface/src/Application.h
	interface/src/DatagramProcessor.cpp
	interface/src/Menu.cpp
	interface/src/ui/PreferencesDialog.cpp
	interface/src/ui/Stats.cpp
	libraries/audio-client/src/AudioClient.cpp
	libraries/audio-client/src/AudioClient.h
2015-01-28 13:13:32 -08:00
Stephen Birarda
871d688db9 handle input to output resampling 2015-01-23 09:23:46 -08:00
Stephen Birarda
8544fccd84 use soxr resampling for loopback and output 2015-01-22 16:50:42 -08:00
Stephen Birarda
0440576dc2 use libsoxr for input to network resampling 2015-01-22 16:04:57 -08:00
Stephen Birarda
a3529e745b fix warning and compile with Multimedia 2015-01-21 13:28:18 -08:00
Stephen Birarda
343b09c855 remove AudioClient dependency on Recorder 2015-01-21 13:21:37 -08:00
Stephen Birarda
1a87fa93f4 output signals from AudioClient for I/O bytes 2015-01-21 12:33:20 -08:00
Stephen Birarda
707973f1e5 solve collision in PositionGetter with AddressManager 2015-01-21 12:05:12 -08:00
Stephen Birarda
d2af9a2911 have Application pass audio pos/orientation to AudioClient 2015-01-21 12:03:11 -08:00
Stephen Birarda
e28ca27ccd add a position and orientation getter for AudioClient 2015-01-21 11:55:12 -08:00
Stephen Birarda
0eced09f1d intial removal of Audio to audio-client 2015-01-21 11:49:06 -08:00
Renamed from interface/src/Audio.h (Browse further)