[Y]et [A]nother WA[SAPI] [N]ew [T]echnology [Out]put Plugin for Winamp (out_yasapi-nt) (out_yasapi-nt) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
out_yasapi-nt is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with out_yasapi-nt. If not, see <http://www.gnu.org/licenses/>.
[Y]et [A]nother WA[SAPI] [N]ew [T]echnology [Out]put Plugin for Winamp (out_yasapi-nt) utilizes the Windows Audio Session API (WASAPI). WASAPI's exclusive mode for rendering audio is a native way on Windows to render audio undisturbed, similar to Steinberg's Audio Stream Input/Output (ASIO). YASAPI/NT Output may serve as a replacement for any other Winamp Output.
In order to understand the difference between YASAPI/NT and it's hijacked predecessor YASAPI read first this.
Nanos gigantum humeris insidentes: This project is dedicated to my European heritage. It is strictly to be understood as a statement against the "sweet" liberal lie of "multiculturalism" which is going to destroy Europe as we know it, in particular against the Merkel regime selling out Europe for nothing as we watch.
PLEASE NOTE THAT THIS PROJECT IS AN EXPERIMENTAL RATHER THEN AN INDUSTRIAL STRENGTH EFFORT. THIS PROJECT IS NOT FOR YOU. IT IS FOR ME IN ORDER TO LEARN SOMETHING. IF THERE IS SOMETHING ALONG THE WAY I CAN DO FOR YOU THAT'S GREAT!
Home: | http://out-yasapi.sourceforge.net/ | |
Project: | http://sourceforge.net/projects/out-yasapi/ | |
Download: | http://sourceforge.net/projects/out-yasapi/files/out-yasapi/ | |
Winamp Forum: | http://forums.winamp.com/showthread.php?t=380396 (discontinued) | |
Input Plugin: | http://in-ffsox.sourceforge.net/ | |
Loudness Normalization: | http://bs1770gain.sourceforge.net/ | |
http://r128gain.sourceforge.net/ | ||
Keep HDD Awake: | http://gen-hdd.sourceforge.net/ | |
Yet Another Shuffle: | http://gen-yas.sourceforge.net/ |
Note: You may toggle the size of most images by clicking on them.
2018-08-26 | Published a Sequence Diagram. | |
2018-08-25 | Version 180825-2009 of the GTK runtime is available. | |
2018-08-12 | 2.2.0-β1 |
|
2018-07-15 | 2.1.0 |
|
2018-07-05 |
|
|
2018-06-24 | 2.1.0-β6 |
|
2018-06-24 | Version 180620-0644 of the GTK runtime providing ugraded versions of libfribidi-0.dll, libharfbuzz-0.dll, and libintl-8.dll is available. | |
2018-06-03 | 2.1.0-β5 |
|
2018-06-01 | v180531-1449 of the GTK+ runtime have been published. It contains updates to the following executables and DLLs: gspawn-win32-helper.exe, gspawn-win32-helper-console.exe, libatk-1.0-0.dll, libepoxy-0.dll, libgio-2.0-0.dll, libglib-2.0-0.dll, libgmodule-2.0-0.dll, libgobject-2.0-0.dll, libiconv-2.dll. | |
2018-05-27 | 2.1.0-β4 |
|
2018-05-20 | 2.1.0-β3 |
|
2018-05-18 | 2.1.0-β2 |
|
2018-05-13 | 2.1.0-β1 |
|
2018-05-09 | Version 180504-1316 of the GTK+ runtime is available. (No version change visible from the surface but at least an updated version of libiconv is contained.) | |
2018-05-06 | 2.0.0 |
|
2018-05-06 |
|
|
2018-05-05 | Version 180503-0953 of the GTK+ runtime is available. (No version change visible from the surface but at least an updated version of libcairo is contained.) | |
2018-04-30 |
Uploaded version
180426-0807
of the GTK+ runtime lifting libgtk's version from 3.22.29
to 3.22.30 (cf. v180412-1003):
M4_IMG(../images/yagtk-rt/180426-0807,67) |
|
2018-04-29 | 2.0.0-β10 | Fixed label Device Period erroneous linked to combo box Strategy and not to combo box Mode as it should be. |
2018-04-28 | 2.0.0-β9 | |
2018-04-28 | 2.0.0-β8 |
Yet another β-version. While working on the sync issue we had a
closer look at Pause leading to some further improvements:
|
2018-04-26 | 2.0.0-β7 | Needed another β-version because we've resolved a subtle synchronization issue: With this version the plug-in defers applying commands like Pause or Flush to be in sync with a playback cycle. |
2018-04-23 | 2.0.0-β6 |
|
2018-04-22 | 2.0.0-β5 |
|
2018-04-20 |
|
|
2018-04-20 | 2.0.0-β4 | The user already mentioned notified us by PM that selecting a device hadn't worked as expected. This preview release fixes this (silly) bug. Many thanks again Ralf! |
2018-04-20 |
|
|
2018-04-19 |
|
|
2018-04-16 | 2.0.0-β3 |
|
2018-04-12 | 2.0.0-β2 | The second preview of what you might expect to come:
|
2018-04-11 | We just noticed that on 2018-04-10, 04:19, the following
new thread
appeared at the WA forum:
M4_IMG(../images/2.0.0-beta1/thread,67)Might be a fan of us but please note that this message is not ours. We don't post at the WA forum for years now. Anyway, we know at least one Lovely Parasite who likes tricking users into reporting to him and not to the plug-in's author: M4_IMG(../images/2.0.0-beta1/dro,67) |
|
2018-04-08 | 2.0.0-β1 |
|
2018-02-16 | Updated section Some Additional Notes Regarding the Parasite. | |
2017-04-27 | As a sort of side project to out_yasapi I've created milkdrop2-compile: | |
2017-01-10 | Added a political statement to the top
of this page:Nanos gigantum humeris insidentes: This project is dedicated to my European heritage. It is strictly to be understood as a statement against the "sweet" liberal lie of "multiculturalism" which is going to destroy Europe as we know it, in particular against the Merkel regime selling out Europe for nothing as we watch. |
|
2016-08-11 |
Just recently it came to my attention that a creature
calling itself "DrO" (update 2018-04-08: according to
the silly "one world" ideology ruling the so called "western world"
it is just a "human being" without any individual properties
discriminating it from others, just like an ant in
a bath full of infinite many undistinguishible ants; you
shouldn't have any doubt that in a literal sense it
is "equal" to you and me by any means, just like in
liberté, égalité, fraternité
)
advertises a silly and buggy clone of this plug-in
with just a few lines of code errornous changed (out of
about 20.000 and his name added to the About box)
he advertises under the name of Not So YASAPI Output
Plug-in. Be careful and get not mixed up!
The original YASAPI plug-in indeed comes from this site and
SourceForge
(as usual!) Luckily and thanks to the GPL3 the "author" of this silly clone
had to leave the original copyright notice and the reference
to this site intact!
|
|
2016-08-06 | 1.7.25 |
|
2016-07-30 | 1.7.24 |
|
2016-07-03 | 1.7.18 |
|
2016-06-30 | 1.7.17 |
Added the following personal statement to the About
dialog and to the projects home page at
http://out-yasapi.sourceforge.net/:
PLEASE NOTE THAT THIS PROJECT IS AN EXPERIMENTAL RATHER THEN AN INDUSTRIAL STRENGTH EFFORT. THIS PROJECT IS NOT FOR YOU. IT IS FOR ME IN ORDER TO LEARN SOMETHING. IF THERE IS SOMETHING ALONG THE WAY I CAN DO FOR YOU THAT'S GREAT! |
2016-06-30 | 1.7.15 | Fixed several bugs regarding the implementation of the device specific option Extend to 24 Bit. This option is apperently not equivalent to Winamp → Options → Preferences → Playback → Playback → Allow 24bit because the latter reduces bit deps to 16 bit if un-checked otherwise to 24 bit. Bit depth is never extended to 24 bit. YASAPI extends bit depth to 24 bit those enabling playback on devices which does support 24 bit WASAPI playback but not 16 bit WASAPI playback. |
2016-06-27 | 1.7.10 | Added a device specific option in order to define whether YASAPI should promote 8/16 bit input to 24 bit. This is not really necessary because the same effect can be achieved by enabeling Winamp → Options → Preferences → Playback → Playback → Allow 24bit but is provided on user request |
2016-06-23 | 1.7.4 |
|
2016-06-21 | 1.7.1 | Improved migrating the plug-in from an un-plugged default device to the new default device when playing. |
2016-06-20 | 1.7.0 | (Limited) support for un-plugging the default device (as configured via System control) when playing. |
2016-06-19 | 1.6.14 |
|
2016-06-14 | 1.6.11 | Fixed combining pause with flush (skip). |
2016-06-13 | 1.6.9 |
|
2016-06-12 | 1.6.8 | For the debug version it may be configured that the trace is written to a file in the AppData/Winamp/Plugin directory rather then dispalying it in a console. |
2016-06-12 | 1.6.7 | In gapless mode, when a playlist ends the device is not released. It is waiting for the next track to start. This situation is un-distinguishable from an ordinary underflow situation and hence playback ends in an undeflow state. This may cause trouble when in such a situation the user decides to change the output plugin (via configuration). This new version applys to exact this situation: If in case the user changes the output plugin and this plugin is found in an underflow state this plugin is closed (and hence the device released). |
2016-06-12 | 1.6.6 | Fixes regarding gapless playback. |
2016-06-12 | 1.6.5 |
|
2016-05-29 | 1.6.4 | Added a common option in order to define whether 4, 6, or 8 channels should be interpreted as qadrophnic (3.1), 5.1, or 7.1 (disabled) or sorround (3.1 sorround), 5.1 sorround, or 7.1 sorround (enabled), respectively. |
2016-05-26 | 1.6.3 |
|
2016-05-22 | 1.6.0 |
|
2016-05-17 | 1.5.4 | Solved the dead-lock caused by saving the configuration. |
2016-05-17 | 1.5.1- 1.5.3 |
Improved dealing with draining the ring buffer and end of track (eot). |
2016-05-16 | 1.5.0 |
|
2016-04-09 | 1.0.7 | In order to have YASAPI in a well defined state from the very first beginning, reset the IAudioClient interface at start-up. |
2016-01-13 | 1.0.6 |
|
2016-01-09 | 1.0.0 |
|
2016-01-03 | 0.16.0 |
|
2015-12-21 | 0.15.0 | Brought back, as an option, a call to IAudioClient::IsFormatSupported which is disabled by default. |
2015-12-10 | 0.14.1 | Increased default ring buffer size to 2.5. |
2015-12-08 | 0.14.0 |
|
2015-12-06 | 0.12.0 | Fixed interplay with the NotSo Fatso input plugin. |
2015-12-04 | 0.11.0 |
|
2015-11-29 | 0.10.0 |
|
2015-11-23 | 0.9.1 |
|
2015-11-22 | 0.9.0 |
|
2015-11-02 | 0.8.3 |
|
2015-10-31 | 0.8.2 |
|
2015-10-30 | 0.8.1 | New share mode "automatic" which is similar to exclusive except that it falls back to shared in case exclusive fails. |
2015-10-29 | 0.8.0 |
|
2015-10-26 | 0.7.1 |
|
2015-10-26 | 0.7.0 |
|
2015-10-03 | 0.6.1 | Corrected a silly bug in testing for share mode. |
2015-10-03 | 0.6.0 | Add AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM flag when in shared mode (doesn't have any effect on Vista). |
2015-02-14 | 0.5.0 |
|
2015-01-30 | 0.4.0 |
|
2015-01-25 | 0.3.0 |
|
2015-01-24 | 0.2.1 |
|
2015-01-24 | 0.2.0 |
|
2015-01-23 | 0.1.0 | Initial release. |
According to Microsoft:
The Core Audio APIs were introduced in Windows Vista. This is a new set of user-mode audio components provides client applications with improved audio capabilities. These capabilities include the following:
- Low-latency, glitch-resilient audio streaming.
- Improved reliability (many audio functions have moved from kernel mode to user mode).
- Improved security (processing of protected audio content takes place in a secure, lower-privilege process).
- Assignment of particular system-wide roles (console, multimedia, and communications) to individual audio devices.
- Software abstraction of the audio endpoint devices (for example, speakers, headphones, and microphones) that the user manipulates directly.
Of special interest is that there is an exclusive mode for rendering audio, i.e. there is a mode where an application has exclusive access to the audio device without being disturbed by third parties.
The aim of the YASAPI plugin is to make the WASAPI exclusive mode for audio rendering available to the users of Winamp.
The name of the plugin was choosen because there are already at least two WASAPI output plugins for Winamp:
The following sequence diagram was created using the great plantuml tool.
Note: | In case you know the "official" UML way to model threads please drop us a line (pbelkner@snafu.de.) |
Installation is as easy as downloading and running the latest NSIS installer from the project's download page.
Even if the plug-in runs without any further Configuration (not very likely) you may wish to configure it. In order to enable configuration you need some GTK runtime. You have two choices to make the plug-in familiar with a GTK runtime:
There are two sides the YASAPI plugin has to take into account:
The implementation on the WASAPI side follows along the lines of an example provided by Microsoft. The startegy shown in this example is not only applicable for shared mode streams but also for exclusive mode ones, i.e. not the share mode should be emphasized but what is known as the push model. There is also an example demonstrating the pull model in conjunction with the exclusive mode. In that sence there are four strategies:
The YASAPI plugin implements the first two strategies, i.e. the ones based on the push model.
The push model, in principle, works as follows:
But the YASAPI plugin not only has to take into account the WASAPI side (the loop consisting of sleeping and writing to the audio device) but also the Winamp side because Winamp provides the audio samples which should be played in an completely unpredictable way.
The YASAPI plugin decouples the two sides by means of a ring or circular buffer. That way,
According to step 2 of the push model sketched above, it shoud become clear that the ring buffer should be at least as large (or larger) as the buffer the plugin's WASAPI component shares with the audio device.
The YASAPI/NT plug-in comes with a configuration dialog which described in the following. The configuration dialog's top region presents the most important parameters:
Below the top region you find a notebook control consisting of five pages:
The notebook control's first page labelled Common looks as follows:
On the next page labeled WASAPI there are the following per device options:
On the next page labeled YASAPI/NT there are the following per device options:
The next page labeled Monitor looks the following:
The final page labeled Explore looks the following:
From the above sketch of the push model it shold be clear that the following relation holds (which is enforced by the configuration dialog):
minimum size of the buffer shared with the device (provided by WASAPI) <= size of buffer shared with the device <= number of samples in the ring buffer before start playing <= size of ring bufferAs a rule of thumb all buffer sizes should be 1.0 except the ring buffer's size which should be just a small amount greater then 1.0.
Please note that no option takes effect before hitting the OK button. -->
Just to name a few we'd like to thank (in no particular order)
The following message posted by me to the top-level (sticky) thread Winamp News in forum the Winamp Discussion forum silently disappeared without any comment:
Dear DJ Egg,
I'm not certain whether you are the right person to address my reqest.. I'm not even certain about who rules this forum. My impression is that you are the only one "official" left (i.e. one with a contract to the owners of Winamp). All the rest including this forum's moderators seem to be volunteers.
As you may have noticed, since some time I have a conflict with some of the former contractors of Winamp, "DrO", regarding the question of intellectual property. As it turns out, this former contractor, "DrO", disrespects intellectual property. He advertises a product he calls "Not So YASAPI Output Plug-in v1.0 Beta" which is a close to 100% clone of YASAPI (cf. here for details).
As it turns out that at the blog of "DrO" some of his fanboys comment we know by their nicknames are frequent posters of this forum, among them some Pawel:
Could you please investigate whether this Pawel is identical to this forum's moderator with the same nickname and in case it turns out to be true fire him from his job as a moderator?
Thank you in advance and best regards,
Peter
On his blog the Lovely Parasite claims:
M4_IMG(../images/parasite-03,67)
That's of course true. And I'm the last one to have ever told something different. But if doing so, changing just a few lines of code out of about 20.000 just in order to rectify putting his name on the product I consider a clear case of plagiarism:
M4_IMG(../images/1.7.25/not-so-yasapi-about,67)
For further details refer to the Winamp forum.
The Lovely Parasite 's further explanations are simply laughable:
M4_IMG(../images/parasite-02,67)
Darren, it's not your WASAPI plug-in, it's mine. Even with that little changes you've made you've perfectly demonstrated that you don't have the slightest idea on how this (my) plug-in is supposed to work and you've managed introducing a major bug into the configuration.
Meanwhile the Lovely Parasite on his web site confirms that his buggy GPL clone is just a fake and that he's distributing (by violating YASAPI's license) a non GPL version to registered so called "beta testers":
M4_IMG(../images/parasite-01,67)
As it seems, this way he (the "Hero Member", ha ha, what kind of people are attracted by such a spast?) likes to trick users into registering.