forked from PAWPAW-Mirror/lib_xua
Minor updates (#314)
* SDK location can now set in makefile * Mixer requirements added to readme * Uncommented previously broken mixer example from docs as this functionality is now working * Fixed windows build & runtime info in README
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
THESYCON_DIR = C:\Program/ Files\Thesycon\XMOSinternalUsbAudio_v5.50.0_eval_2022-11-17_SDK
|
||||
!if [set SDKPath=C:\Program^ Files\XMOS\tusbaudiosdk]
|
||||
!endif
|
||||
|
||||
all:
|
||||
msbuild host_usb_mixer_control.vcxproj /property:Configuration=Release /property:Platform=x64
|
||||
|
||||
@@ -2,6 +2,16 @@ The XMOS USB Audio Reference Design, by default, contains an 18x8 mixer unit
|
||||
(note that at sample rates above 96Khz only the first two outputs are
|
||||
enabled).
|
||||
|
||||
----WINDOWS REQUIREMENTS----
|
||||
Building the mixer on Windows requires the tusbaudio SDK from Thesycon. The
|
||||
default location for the SDK is C:\Program Files\XMOS\tusbaudiosdk\
|
||||
If it can be found on a different path then this can be changed in
|
||||
Makefile.Win.
|
||||
|
||||
The mixer app on windows makes use of a USB dynamic library, also from Thesycon.
|
||||
If required please contact thesycon.de for support.
|
||||
----------------------------
|
||||
|
||||
This unit takes input takes 18 inputs: USB OUT channels 1..10 and
|
||||
DEVICE IN channels 1..6,9..10 and produces 8 outputs: Mixer Output
|
||||
1..8
|
||||
@@ -17,7 +27,7 @@ channels 1..10, DEVICE IN channels 1..10 and Mixer Output 1..8
|
||||
The channel map units are extension unit with init ids 51 and 52. This unit
|
||||
lets you implement arbitrary routings including loopbacks.
|
||||
|
||||
The mixer is control on MAC OS X via the command line utility
|
||||
The mixer is controlled on macOS via the command line utility
|
||||
xmos_mixer. Running this application requires having the
|
||||
libusb-1.0.0.dylib in the dynamic library load path. Sourcing the
|
||||
setup.sh script will do this. Source code for the application is
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<ProjectGuid>{84eacf4f-e405-4909-b440-a04a84a3f8c8}</ProjectGuid>
|
||||
<RootNamespace>
|
||||
</RootNamespace>
|
||||
<SDKPath>C:\Program Files\XMOS\tusbaudiosdk</SDKPath>
|
||||
<SDKPath Condition="'$(SDKPath)' == ''">C:\Program Files\XMOS\tusbaudiosdk</SDKPath>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
|
||||
@@ -220,52 +220,6 @@ int usb_mixer_mem_get(unsigned int mixer, unsigned offset, unsigned char *data)
|
||||
#endif
|
||||
}
|
||||
|
||||
//############# Never Called ##########
|
||||
// static const unsigned char *find_input_term_unit_by_id(const unsigned char *data, int length, int id)
|
||||
// {
|
||||
// const unsigned char *interface_data = data;
|
||||
// while (length)
|
||||
// {
|
||||
// const unsigned char *interface_len = interface_data;
|
||||
// int sub_type = *(interface_len + 2);
|
||||
// if (sub_type == USB_INPUT_TERM_TYPE)
|
||||
// {
|
||||
// int unit_id = *(interface_len + 3);
|
||||
// if (unit_id == id)
|
||||
// {
|
||||
// return interface_len;
|
||||
// }
|
||||
// }
|
||||
// interface_data+=*interface_len;
|
||||
// length -= *interface_len;
|
||||
// }
|
||||
// return NULL;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
//############# Never Called ##########
|
||||
// static const unsigned char *find_connected_feature_unit_by_id(const unsigned char *data, int length, int id) {
|
||||
// const unsigned char *interface_data = data;
|
||||
// while (length)
|
||||
// {
|
||||
// const unsigned char *interface_len = interface_data;
|
||||
// int sub_type = *(interface_len + 2);
|
||||
// if (sub_type == USB_FEATURE_UNIT_TYPE)
|
||||
// {
|
||||
// //int unit_id = *(interface_len + 3);
|
||||
// int src_unit_id = *(interface_len + 4);
|
||||
// if (src_unit_id == id)
|
||||
// {
|
||||
// return interface_len;
|
||||
// }
|
||||
// }
|
||||
// interface_data+=*interface_len;
|
||||
// length -= *interface_len;
|
||||
// }
|
||||
// return NULL;
|
||||
// }
|
||||
|
||||
static const unsigned char *findUnit(const unsigned char *descs, int length, int id)
|
||||
{
|
||||
const unsigned char *interface_data = descs;
|
||||
|
||||
@@ -220,32 +220,32 @@ At the same time, the original mixer outputs can be muted::
|
||||
|
||||
Now audio inputs on analogue 1 and 2 should be heard on outputs 1 and 2 respectively.
|
||||
|
||||
.. As mentioned above, the flexibility of the mixer is such that there will be multiple ways to create
|
||||
.. a particular mix. Another option to create the same routing would be to change the mixer sources
|
||||
.. such that mixer outputs 1 and 2 come from the analogue inputs 1 and 2.
|
||||
As mentioned above, the flexibility of the mixer is such that there will be multiple ways to create
|
||||
a particular mix. Another option to create the same routing would be to change the mixer sources
|
||||
such that mixer outputs 1 and 2 come from the analogue inputs 1 and 2.
|
||||
|
||||
.. To demonstrate this, firstly undo the changes above (or simply reset the device)::
|
||||
To demonstrate this, firstly undo the changes above (or simply reset the device)::
|
||||
|
||||
.. $ ./xmos_mixer --set-value 0 8 -inf
|
||||
.. $ ./xmos_mixer --set-value 0 11 -inf
|
||||
.. $ ./xmos_mixer --set-value 0 0 0
|
||||
.. $ ./xmos_mixer --set-value 0 3 0
|
||||
.. $ _
|
||||
$ ./xmos_mixer --set-value 0 8 -inf
|
||||
$ ./xmos_mixer --set-value 0 11 -inf
|
||||
$ ./xmos_mixer --set-value 0 0 0
|
||||
$ ./xmos_mixer --set-value 0 3 0
|
||||
$ _
|
||||
|
||||
.. The mixer should now have the default values. The sources for mixer 0 output 1 and 2 can now be changed
|
||||
.. using indices from the Audio Output Channel Map Source List::
|
||||
The mixer should now have the default values. The sources for mixer 0 output 1 and 2 can now be changed
|
||||
using indices from the Audio Output Channel Map Source List::
|
||||
|
||||
.. $ ./xmos_mixer --set-mixer-source 0 0 4
|
||||
$ ./xmos_mixer --set-mixer-source 0 0 4
|
||||
|
||||
.. Set mixer(0) input 0 to device input 4 (AUD - Analogue 1)
|
||||
.. $ ./xmos_mixer --set-mixer-source 0 1 5
|
||||
Set mixer(0) input 0 to device input 4 (AUD - Analogue 1)
|
||||
$ ./xmos_mixer --set-mixer-source 0 1 5
|
||||
|
||||
.. Set mixer(0) input 1 to device input 5 (AUD - Analogue 2)
|
||||
.. $ _
|
||||
Set mixer(0) input 1 to device input 5 (AUD - Analogue 2)
|
||||
$ _
|
||||
|
||||
.. If you re-run the following command then the first column now has "AUD - Analogue 1 and 2" rather
|
||||
.. than "DAW (Digital Audio Workstation i.e. the host) - Analogue 1 and 2" confirming the new mapping.
|
||||
.. Again, by playing audio into analogue inputs 1/2 this can be heard looped through to analogue outputs 1/2::
|
||||
If you re-run the following command then the first column now has "AUD - Analogue 1 and 2" rather
|
||||
than "DAW (Digital Audio Workstation i.e. the host) - Analogue 1 and 2" confirming the new mapping.
|
||||
Again, by playing audio into analogue inputs 1/2 this can be heard looped through to analogue outputs 1/2::
|
||||
|
||||
.. $ ./xmos_mixer --display-mixer-nodes 0
|
||||
$ ./xmos_mixer --display-mixer-nodes 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user