Mosca: GUI assisted ambisonics quark v0.2

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Mosca: GUI assisted ambisonics quark v0.2

mott
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is
available in the quark repository. It has been tested with the ATK 4.0.1
and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk,
non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

pelectron69
Hello Iain,

Thanks for sharing, very impressive!
For the ambisonic rendering you use only ATK or others ambisonic library?

All the best,

p


> Hello list,
>
> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>
> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>
> The home page for the project is here: http://escuta.org/mosca
>
> A video tutorial is available here: http://escuta.org/moscavideo
>
> The git source is here: https://github.com/escuta/mosca
>
> All the best!
>
> Iain Mott
>
> --
> _________
> Iain Mott
> http://escuta.org
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott
Thanks a lot pelectron69. If an ATK decoder is supplied as a creation
argument to Mosca, it will do first order encoding and decoding entirely
with the ATK. If no decoder is supplied, Mosca will encode mono and
stereo inputs as second-order signals with the encoder FMHEncode0. When
the "A -format reverb" checkbox is checked for a given source, its
reverb is also created as a 2nd order signal using a matrix kindly
provided by Joseph Anderson but not standard in the ATK (at least not at
the time when i implemented it).

When no decoder is assigned to Mosca it sends raw ambisonic signals to
the outputs. So in the following example from the help file:

Mosca.new(projDir: "/path/to/your/moscaproject", nsources: 12, width:
995, dur: 60, rir: "QL14Tail2Sec.amb", rawbusfoa: 2, rawbussoa: 6,
raworder: 2);

1st order ambisonic (foa) material generated by Mosca (eg. that derived
from B-format input) is sent out on buses 2, 3, 4 and 5 (dictated by
rawbusfoa). Second order ambisonic (soa) material is sent out on buses
6-14 (as defined by rawbussoa). I use Fons Adriaensen's "ambdec" to do
the decoding and run 2 copies, one to configured to decode the first
order signal and the second to decode the 2nd order signal.

All the best,

Iain



Em 12/02/2018 12:26, [hidden email] escreveu:

> Hello Iain,
>
> Thanks for sharing, very impressive!
> For the ambisonic rendering you use only ATK or others ambisonic library?
>
> All the best,
>
> p
>
>
>> Hello list,
>>
>> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>>
>> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>>
>> The home page for the project is here: http://escuta.org/mosca
>>
>> A video tutorial is available here: http://escuta.org/moscavideo
>>
>> The git source is here: https://github.com/escuta/mosca
>>
>> All the best!
>>
>> Iain Mott
>>
>> --
>> _________
>> Iain Mott
>> http://escuta.org
>>
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

pelectron69
Thanks for your explanation Iain! We still wait for an HOA ATK for SC :)
The exemples works very well. The GUI is very intuitive and I also appreciate the possibility to use it without the GUI.
In the exemples and video I saw that you work only with an stereo binaural output. It’s possible to use others configurations in Mosca like octophonic or even more to work in a dome of 24 channels for exemple?

Thanks again!

All the best,

p

> Thanks a lot pelectron69. If an ATK decoder is supplied as a creation argument to Mosca, it will do first order encoding and decoding entirely with the ATK. If no decoder is supplied, Mosca will encode mono and stereo inputs as second-order signals with the encoder FMHEncode0. When the "A -format reverb" checkbox is checked for a given source, its reverb is also created as a 2nd order signal using a matrix kindly provided by Joseph Anderson but not standard in the ATK (at least not at the time when i implemented it).
>
> When no decoder is assigned to Mosca it sends raw ambisonic signals to the outputs. So in the following example from the help file:
>
> Mosca.new(projDir: "/path/to/your/moscaproject", nsources: 12, width: 995, dur: 60, rir: "QL14Tail2Sec.amb", rawbusfoa: 2, rawbussoa: 6, raworder: 2);
>
> 1st order ambisonic (foa) material generated by Mosca (eg. that derived from B-format input) is sent out on buses 2, 3, 4 and 5 (dictated by rawbusfoa). Second order ambisonic (soa) material is sent out on buses 6-14 (as defined by rawbussoa). I use Fons Adriaensen's "ambdec" to do the decoding and run 2 copies, one to configured to decode the first order signal and the second to decode the 2nd order signal.
>
> All the best,
>
> Iain
>
>
>
> Em 12/02/2018 12:26, [hidden email] escreveu:
>> Hello Iain,
>>
>> Thanks for sharing, very impressive!
>> For the ambisonic rendering you use only ATK or others ambisonic library?
>>
>> All the best,
>>
>> p
>>
>>
>>> Hello list,
>>>
>>> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>>>
>>> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>>>
>>> The home page for the project is here: http://escuta.org/mosca
>>>
>>> A video tutorial is available here: http://escuta.org/moscavideo
>>>
>>> The git source is here: https://github.com/escuta/mosca
>>>
>>> All the best!
>>>
>>> Iain Mott
>>>
>>> --
>>> _________
>>> Iain Mott
>>> http://escuta.org
>>>
>>>
>>> _______________________________________________
>>> sc-users mailing list
>>>
>>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> --
> _________
> Iain Mott
> http://escuta.org
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott
Hi, yes, you can use any of the ATK decoders, although I've only ever
tried the binaural and UHJ stereo and use Ambdec externally for
everything else. That ambdec setup i described in the last email I use
with an 8 channel system.

All the best,

Iain


Em 13/02/2018 09:20, [hidden email] escreveu:

> Thanks for your explanation Iain! We still wait for an HOA ATK for SC :)
> The exemples works very well. The GUI is very intuitive and I also appreciate the possibility to use it without the GUI.
> In the exemples and video I saw that you work only with an stereo binaural output. It’s possible to use others configurations in Mosca like octophonic or even more to work in a dome of 24 channels for exemple?
>
> Thanks again!
>
> All the best,
>
> p
>
>> Thanks a lot pelectron69. If an ATK decoder is supplied as a creation argument to Mosca, it will do first order encoding and decoding entirely with the ATK. If no decoder is supplied, Mosca will encode mono and stereo inputs as second-order signals with the encoder FMHEncode0. When the "A -format reverb" checkbox is checked for a given source, its reverb is also created as a 2nd order signal using a matrix kindly provided by Joseph Anderson but not standard in the ATK (at least not at the time when i implemented it).
>>
>> When no decoder is assigned to Mosca it sends raw ambisonic signals to the outputs. So in the following example from the help file:
>>
>> Mosca.new(projDir: "/path/to/your/moscaproject", nsources: 12, width: 995, dur: 60, rir: "QL14Tail2Sec.amb", rawbusfoa: 2, rawbussoa: 6, raworder: 2);
>>
>> 1st order ambisonic (foa) material generated by Mosca (eg. that derived from B-format input) is sent out on buses 2, 3, 4 and 5 (dictated by rawbusfoa). Second order ambisonic (soa) material is sent out on buses 6-14 (as defined by rawbussoa). I use Fons Adriaensen's "ambdec" to do the decoding and run 2 copies, one to configured to decode the first order signal and the second to decode the 2nd order signal.
>>
>> All the best,
>>
>> Iain
>>
>>
>>
>> Em 12/02/2018 12:26, [hidden email] escreveu:
>>> Hello Iain,
>>>
>>> Thanks for sharing, very impressive!
>>> For the ambisonic rendering you use only ATK or others ambisonic library?
>>>
>>> All the best,
>>>
>>> p
>>>
>>>
>>>> Hello list,
>>>>
>>>> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>>>>
>>>> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>>>>
>>>> The home page for the project is here: http://escuta.org/mosca
>>>>
>>>> A video tutorial is available here: http://escuta.org/moscavideo
>>>>
>>>> The git source is here: https://github.com/escuta/mosca
>>>>
>>>> All the best!
>>>>
>>>> Iain Mott
>>>>
>>>> --
>>>> _________
>>>> Iain Mott
>>>> http://escuta.org
>>>>
>>>>
>>>> _______________________________________________
>>>> sc-users mailing list
>>>>
>>>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>>>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>>>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>>> _______________________________________________
>>> sc-users mailing list
>>>
>>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>> --
>> _________
>> Iain Mott
>> http://escuta.org
>>
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

floriangrond
In reply to this post by pelectron69
Hi there, we revamped SC-HOA quite a bit and soon there should be various plugins available in the SC3plugin repo most of them up to order 5.

All best,

Florian


On Tue, Feb 13, 2018 at 6:20 AM, <[hidden email]> wrote:
Thanks for your explanation Iain! We still wait for an HOA ATK for SC :)
The exemples works very well. The GUI is very intuitive and I also appreciate the possibility to use it without the GUI.
In the exemples and video I saw that you work only with an stereo binaural output. It’s possible to use others configurations in Mosca like octophonic or even more to work in a dome of 24 channels for exemple?

Thanks again!

All the best,

p

> Thanks a lot pelectron69. If an ATK decoder is supplied as a creation argument to Mosca, it will do first order encoding and decoding entirely with the ATK. If no decoder is supplied, Mosca will encode mono and stereo inputs as second-order signals with the encoder FMHEncode0. When the "A -format reverb" checkbox is checked for a given source, its reverb is also created as a 2nd order signal using a matrix kindly provided by Joseph Anderson but not standard in the ATK (at least not at the time when i implemented it).
>
> When no decoder is assigned to Mosca it sends raw ambisonic signals to the outputs. So in the following example from the help file:
>
> Mosca.new(projDir: "/path/to/your/moscaproject", nsources: 12, width: 995, dur: 60, rir: "QL14Tail2Sec.amb", rawbusfoa: 2, rawbussoa: 6, raworder: 2);
>
> 1st order ambisonic (foa) material generated by Mosca (eg. that derived from B-format input) is sent out on buses 2, 3, 4 and 5 (dictated by rawbusfoa). Second order ambisonic (soa) material is sent out on buses 6-14 (as defined by rawbussoa). I use Fons Adriaensen's "ambdec" to do the decoding and run 2 copies, one to configured to decode the first order signal and the second to decode the 2nd order signal.
>
> All the best,
>
> Iain
>
>
>
> Em 12/02/2018 12:26, [hidden email] escreveu:
>> Hello Iain,
>>
>> Thanks for sharing, very impressive!
>> For the ambisonic rendering you use only ATK or others ambisonic library?
>>
>> All the best,
>>
>> p
>>
>>
>>> Hello list,
>>>
>>> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>>>
>>> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>>>
>>> The home page for the project is here: http://escuta.org/mosca
>>>
>>> A video tutorial is available here: http://escuta.org/moscavideo
>>>
>>> The git source is here: https://github.com/escuta/mosca
>>>
>>> All the best!
>>>
>>> Iain Mott
>>>
>>> --
>>> _________
>>> Iain Mott
>>> http://escuta.org
>>>
>>>
>>> _______________________________________________
>>> sc-users mailing list
>>>
>>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> --
> _________
> Iain Mott
> http://escuta.org
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

pelectron69
Thanks Iain! I will try to change the ATK decoders to use with others configs.

@Florian: This is a very good news!! Can’t wait to try it! Please let us know when this SC-HOA will be available!

All the best,

p


Hi there, we revamped SC-HOA quite a bit and soon there should be various plugins available in the SC3plugin repo most of them up to order 5.

All best,

Florian


On Tue, Feb 13, 2018 at 6:20 AM, <[hidden email]> wrote:
Thanks for your explanation Iain! We still wait for an HOA ATK for SC :)
The exemples works very well. The GUI is very intuitive and I also appreciate the possibility to use it without the GUI.
In the exemples and video I saw that you work only with an stereo binaural output. It’s possible to use others configurations in Mosca like octophonic or even more to work in a dome of 24 channels for exemple?

Thanks again!

All the best,

p

> Thanks a lot pelectron69. If an ATK decoder is supplied as a creation argument to Mosca, it will do first order encoding and decoding entirely with the ATK. If no decoder is supplied, Mosca will encode mono and stereo inputs as second-order signals with the encoder FMHEncode0. When the "A -format reverb" checkbox is checked for a given source, its reverb is also created as a 2nd order signal using a matrix kindly provided by Joseph Anderson but not standard in the ATK (at least not at the time when i implemented it).
>
> When no decoder is assigned to Mosca it sends raw ambisonic signals to the outputs. So in the following example from the help file:
>
> Mosca.new(projDir: "/path/to/your/moscaproject", nsources: 12, width: 995, dur: 60, rir: "QL14Tail2Sec.amb", rawbusfoa: 2, rawbussoa: 6, raworder: 2);
>
> 1st order ambisonic (foa) material generated by Mosca (eg. that derived from B-format input) is sent out on buses 2, 3, 4 and 5 (dictated by rawbusfoa). Second order ambisonic (soa) material is sent out on buses 6-14 (as defined by rawbussoa). I use Fons Adriaensen's "ambdec" to do the decoding and run 2 copies, one to configured to decode the first order signal and the second to decode the 2nd order signal.
>
> All the best,
>
> Iain
>
>
>
> Em 12/02/2018 12:26, [hidden email] escreveu:
>> Hello Iain,
>>
>> Thanks for sharing, very impressive!
>> For the ambisonic rendering you use only ATK or others ambisonic library?
>>
>> All the best,
>>
>> p
>>
>>
>>> Hello list,
>>>
>>> A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.
>>>
>>> Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.
>>>
>>> The home page for the project is here: http://escuta.org/mosca
>>>
>>> A video tutorial is available here: http://escuta.org/moscavideo
>>>
>>> The git source is here: https://github.com/escuta/mosca
>>>
>>> All the best!
>>>
>>> Iain Mott
>>>
>>> --
>>> _________
>>> Iain Mott
>>> http://escuta.org
>>>
>>>
>>> _______________________________________________
>>> sc-users mailing list
>>>
>>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>>
>> _______________________________________________
>> sc-users mailing list
>>
>> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
>> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
>> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
>
> --
> _________
> Iain Mott
> http://escuta.org
>
>
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

Martin .
In reply to this post by mott
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott

Hi Martin,

That's great that Mosca is going to be useful to you. If you use it any project, please send news, I'd be very interested to see what you get up to.

At this point I don't have any plans to work with other head trackers. The 9-axis motion shield (BNO055) is the first one that I've used and I'm very happy with it - no wiring involved and like the way it auto-calibrates to the earth's magnetic field.

If you look in the git source at https://github.com/escuta/mosca, there's a directory arduinoHeadTrack with the arduino source code. So if you want to work with some other device you could use the same format, transmitting the heading pitch and roll values in radians as integers (converted from floats by multiplying by 100) at 115200 baud.

You can see in Mosca.sc that there's a variable "trackarr" which is used as a protocol for scanning the incoming serial data bytes and takes the form:

this.trackarr= [251, 252, 253, 254, nil, nil, nil, nil, nil, nil, 255];

and I'm pretty sure that the data comes in like this:

251, 252, 253, 254, heading-lsb, heading-msb, roll-lsb, roll-msb, pitch-lsb, pitch-msb, 255

procTracker (that you cited) is called by matchTByte and reconstitutes the heading, roll and pitch data into radian floats with some necessary adjustments (see the help file for an explanation of headingOffset).

When Mosca is run with headtracking enabled and using the 9-axes motion shield, an orientation display appears in the bottom-right of the GUI. If for example I use headingOffset to adjust the heading values for true north, and if I'm facing true north, the heading value hovers around 0. As I turn my head left through 180deg the value changes from 0 to -3.14. As i turn my head right from true north through 180deg, the values change from 0 to 3.13.

When it comes to roll, the 9-axes motion shield appears to be a bit more limited. For example, examining the raw output in degrees, roll varies from 0 to 90 with a 90 degree tilt, however returns to zero as the tilt continues through to 180 degrees. It does the same thing in the negative when tilted in the opposite direction. Pitch works like heading and gives a full 360 degrees-worth of values. For normal headtracking, where the head is not tilted more than 90 degrees, and assuming the participant doesn't turn somersaults, this is OK, I suppose. I don't know if the devices you use behave any differently. Note that in the arduino project file, I have swapped pitch and roll because of the way I've positioned the head-tracker on the headphones. It was more practical to rotate the arduino and shield so that the USB cable can run down the left hand side of the phones along with the audio cable.

So, returning to Mosca: As I tilt my head forward (from a normal standing position) through to 90deg, the pitch value varies from 0 to around 1.54 (not 1.57 for some reason - i think it's hard to have the phones perfectly level) before returning to 0 when the top of my head is facing the ground. If I tilt backwards from a normal standing position, the values do the same thing but in the negative. Roll works like heading (remembering that roll and pitch are swapped in the arduino project), and moves from 0 to 3.13 as i tilt my head 180 degrees to the left and from 0 to -3.14 as i tilt my head through 180 degrees to the right.

I hope this helps and I hope it's clear enough.

Good luck!

Iain



Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott
In reply to this post by Martin .

Just to follow on and to make things easier, here are examples of the unsigned int values coming into Mosca from the Arduino/9-axes shield for heading, pitch and roll (with pitch and roll swapped in the arduino code and with the arduino and shield physically positioned on top of the headphones with the USB cable running to the left of the wearer):

1. Heading. When the user is facing magnetic north heading is 314. As the user turns east through to south, the numbers rise to 628. As he/she turns west through to south, the number falls to 0.

2. Pitch (head movements forward and back). When the user is standing upright, pitch has the value of 314. When head tilts forward 90 degrees the value is 470. As he/she tilts forward to 180degrees the value reduces again to 314. As the user tilts backwards 90 degrees, the number reduces to 157 before increasing again to 314 at 180 degrees.

3. Roll (side to side head movements). When the user is standing upright, roll has the value of 314. With a roll to the left through 180 degrees the value increases to 628. With a roll to the right through 180 degrees the value decreases to 0.

All the best,

Iain


Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

Josh Parmenter
Congrats on this! I’m looking forward to playing around with it soon.
Best
Josh

/*
Josh Parmenter
*/

On Feb 14, 2018, at 02:59, [hidden email] wrote:

Just to follow on and to make things easier, here are examples of the unsigned int values coming into Mosca from the Arduino/9-axes shield for heading, pitch and roll (with pitch and roll swapped in the arduino code and with the arduino and shield physically positioned on top of the headphones with the USB cable running to the left of the wearer):

1. Heading. When the user is facing magnetic north heading is 314. As the user turns east through to south, the numbers rise to 628. As he/she turns west through to south, the number falls to 0.

2. Pitch (head movements forward and back). When the user is standing upright, pitch has the value of 314. When head tilts forward 90 degrees the value is 470. As he/she tilts forward to 180degrees the value reduces again to 314. As the user tilts backwards 90 degrees, the number reduces to 157 before increasing again to 314 at 180 degrees.

3. Roll (side to side head movements). When the user is standing upright, roll has the value of 314. With a roll to the left through 180 degrees the value increases to 628. With a roll to the right through 180 degrees the value decreases to 0.

All the best,

Iain


Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

Martin .
In reply to this post by mott
Hi Iain,

Thank you for your answers! I got one of my accelerometers (the GY-85) working with the info you provided.

There is an issue with soundfiles that are loaded to ram start playing from exactly 48000 samples into the file (I guess relative to the samplerate) instead of from the beginning of the file when auditioning or playing back automation. This does not happen with streamed audio. I remember having an issue like this years ago but can't for the life of me remember what caused it.

Best,
Martin
 

On Wed, Feb 14, 2018 at 10:34 AM, <[hidden email]> wrote:

Hi Martin,

That's great that Mosca is going to be useful to you. If you use it any project, please send news, I'd be very interested to see what you get up to.

At this point I don't have any plans to work with other head trackers. The 9-axis motion shield (BNO055) is the first one that I've used and I'm very happy with it - no wiring involved and like the way it auto-calibrates to the earth's magnetic field.

If you look in the git source at https://github.com/escuta/mosca, there's a directory arduinoHeadTrack with the arduino source code. So if you want to work with some other device you could use the same format, transmitting the heading pitch and roll values in radians as integers (converted from floats by multiplying by 100) at 115200 baud.

You can see in Mosca.sc that there's a variable "trackarr" which is used as a protocol for scanning the incoming serial data bytes and takes the form:

this.trackarr= [251, 252, 253, 254, nil, nil, nil, nil, nil, nil, 255];

and I'm pretty sure that the data comes in like this:

251, 252, 253, 254, heading-lsb, heading-msb, roll-lsb, roll-msb, pitch-lsb, pitch-msb, 255

procTracker (that you cited) is called by matchTByte and reconstitutes the heading, roll and pitch data into radian floats with some necessary adjustments (see the help file for an explanation of headingOffset).

When Mosca is run with headtracking enabled and using the 9-axes motion shield, an orientation display appears in the bottom-right of the GUI. If for example I use headingOffset to adjust the heading values for true north, and if I'm facing true north, the heading value hovers around 0. As I turn my head left through 180deg the value changes from 0 to -3.14. As i turn my head right from true north through 180deg, the values change from 0 to 3.13.

When it comes to roll, the 9-axes motion shield appears to be a bit more limited. For example, examining the raw output in degrees, roll varies from 0 to 90 with a 90 degree tilt, however returns to zero as the tilt continues through to 180 degrees. It does the same thing in the negative when tilted in the opposite direction. Pitch works like heading and gives a full 360 degrees-worth of values. For normal headtracking, where the head is not tilted more than 90 degrees, and assuming the participant doesn't turn somersaults, this is OK, I suppose. I don't know if the devices you use behave any differently. Note that in the arduino project file, I have swapped pitch and roll because of the way I've positioned the head-tracker on the headphones. It was more practical to rotate the arduino and shield so that the USB cable can run down the left hand side of the phones along with the audio cable.

So, returning to Mosca: As I tilt my head forward (from a normal standing position) through to 90deg, the pitch value varies from 0 to around 1.54 (not 1.57 for some reason - i think it's hard to have the phones perfectly level) before returning to 0 when the top of my head is facing the ground. If I tilt backwards from a normal standing position, the values do the same thing but in the negative. Roll works like heading (remembering that roll and pitch are swapped in the arduino project), and moves from 0 to 3.13 as i tilt my head 180 degrees to the left and from 0 to -3.14 as i tilt my head through 180 degrees to the right.

I hope this helps and I hope it's clear enough.

Good luck!

Iain




Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org

Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott

Thanks Martin. Yes, there was a mistake in the code that I'd never noticed. It should be fixed now. Please update the quark to v0.21

All the best,

Iain


Em 14/02/2018 18:50, [hidden email] escreveu:
Hi Iain,

Thank you for your answers! I got one of my accelerometers (the GY-85) working with the info you provided.

There is an issue with soundfiles that are loaded to ram start playing from exactly 48000 samples into the file (I guess relative to the samplerate) instead of from the beginning of the file when auditioning or playing back automation. This does not happen with streamed audio. I remember having an issue like this years ago but can't for the life of me remember what caused it.

Best,
Martin
 

On Wed, Feb 14, 2018 at 10:34 AM, <[hidden email]> wrote:

Hi Martin,

That's great that Mosca is going to be useful to you. If you use it any project, please send news, I'd be very interested to see what you get up to.

At this point I don't have any plans to work with other head trackers. The 9-axis motion shield (BNO055) is the first one that I've used and I'm very happy with it - no wiring involved and like the way it auto-calibrates to the earth's magnetic field.

If you look in the git source at https://github.com/escuta/mosca, there's a directory arduinoHeadTrack with the arduino source code. So if you want to work with some other device you could use the same format, transmitting the heading pitch and roll values in radians as integers (converted from floats by multiplying by 100) at 115200 baud.

You can see in Mosca.sc that there's a variable "trackarr" which is used as a protocol for scanning the incoming serial data bytes and takes the form:

this.trackarr= [251, 252, 253, 254, nil, nil, nil, nil, nil, nil, 255];

and I'm pretty sure that the data comes in like this:

251, 252, 253, 254, heading-lsb, heading-msb, roll-lsb, roll-msb, pitch-lsb, pitch-msb, 255

procTracker (that you cited) is called by matchTByte and reconstitutes the heading, roll and pitch data into radian floats with some necessary adjustments (see the help file for an explanation of headingOffset).

When Mosca is run with headtracking enabled and using the 9-axes motion shield, an orientation display appears in the bottom-right of the GUI. If for example I use headingOffset to adjust the heading values for true north, and if I'm facing true north, the heading value hovers around 0. As I turn my head left through 180deg the value changes from 0 to -3.14. As i turn my head right from true north through 180deg, the values change from 0 to 3.13.

When it comes to roll, the 9-axes motion shield appears to be a bit more limited. For example, examining the raw output in degrees, roll varies from 0 to 90 with a 90 degree tilt, however returns to zero as the tilt continues through to 180 degrees. It does the same thing in the negative when tilted in the opposite direction. Pitch works like heading and gives a full 360 degrees-worth of values. For normal headtracking, where the head is not tilted more than 90 degrees, and assuming the participant doesn't turn somersaults, this is OK, I suppose. I don't know if the devices you use behave any differently. Note that in the arduino project file, I have swapped pitch and roll because of the way I've positioned the head-tracker on the headphones. It was more practical to rotate the arduino and shield so that the USB cable can run down the left hand side of the phones along with the audio cable.

So, returning to Mosca: As I tilt my head forward (from a normal standing position) through to 90deg, the pitch value varies from 0 to around 1.54 (not 1.57 for some reason - i think it's hard to have the phones perfectly level) before returning to 0 when the top of my head is facing the ground. If I tilt backwards from a normal standing position, the values do the same thing but in the negative. Roll works like heading (remembering that roll and pitch are swapped in the arduino project), and moves from 0 to 3.13 as i tilt my head 180 degrees to the left and from 0 to -3.14 as i tilt my head through 180 degrees to the right.

I hope this helps and I hope it's clear enough.

Good luck!

Iain




Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org


-- 
_________
Iain Mott
http://escuta.org
Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

Glen Fraser
Thanks, Iain, this is very cool to play with, and a great way to audition and experiment with different ambisonic sounds and effects!  I had an initial issue with the GUI window being too big for my MacBook Air screen, but was able to set the "width" argument to Mosca.new to easily solve that.  You've obviously put a lot of work into this, and it's got a load of functionality. That "distant" RIR reverb sounds really great (the close one not so much)...and I love that galloping horse sound, it spatializes very well!  (-;

In a similar setup I've created (for a bunch of binaural sources using ATK), for VR projects, I've found it convenient that the sound objects and listener position/orientation be in "world space" -- but this is just be a matter of computing and setting things relative to the head, in order to use with something like Mosca. It can be tricky to make sure everything updates at the same time (need to use OSC/server bundles when sending params from a separate graphical/simulation application, for example), otherwise you can get a stuttering/zippering effect if the user is moving as well as all the sources...  For such applications (when the data comes from outside), it might be useful (at some point) to add functionality to set all the XYZ source positions and head orientation in one shot, from code.

One thing I noticed when playing with it was that the yboxProxy doesn't seem to update the GUI when you set it from code.  (xboxProxy and zboxProxy do update correctly, and you can hear that the sound has moved in all cases, it's just the GUI that's behind...  Also, if you stop and restart auditioning the source pops to the right place.)

Another question...there seems to be no sense of units (e.g. metres).  All your positions are normalized -1 to 1.  Is there an approximate correspondence to world units you would use, e.g. for the doppler or near/far reverb cross-over "distances", or for ambisonic proximity effects? Say you wanted the horse (galloping at 12.5 m/s) to run towards you from 150m away to the left, then passing you, just 2m in front -- how would you do it? I guess doing whatever would be the acoustic equivalent of "eyeball it"?...(eardrum it ;-)  Or assume an ambulance with siren passing you at 100 km/h...the doppler shift is based on the source relative speed and sound propagation speed, so you need some kind of units correspondence to get it to sound right (if that's actually important, which possibly/probably it's not, in an artistic context ;-).  I guess some conversion factor might tell you what "Doppler Amount" you should use, for a given unit scale.

Anyhow, this is very nice work,
Glen.

P.S: It seems to work fine with 3.8.0 (on Mac), too. (I know, I need to upgrade to 3.9!)  Have not tried it on Windows yet.


On Thu, Feb 15, 2018 at 11:04 AM, <[hidden email]> wrote:

Thanks Martin. Yes, there was a mistake in the code that I'd never noticed. It should be fixed now. Please update the quark to v0.21

All the best,

Iain


Em 14/02/2018 18:50, [hidden email] escreveu:
Hi Iain,

Thank you for your answers! I got one of my accelerometers (the GY-85) working with the info you provided.

There is an issue with soundfiles that are loaded to ram start playing from exactly 48000 samples into the file (I guess relative to the samplerate) instead of from the beginning of the file when auditioning or playing back automation. This does not happen with streamed audio. I remember having an issue like this years ago but can't for the life of me remember what caused it.

Best,
Martin
 

On Wed, Feb 14, 2018 at 10:34 AM, <[hidden email]> wrote:

Hi Martin,

That's great that Mosca is going to be useful to you. If you use it any project, please send news, I'd be very interested to see what you get up to.

At this point I don't have any plans to work with other head trackers. The 9-axis motion shield (BNO055) is the first one that I've used and I'm very happy with it - no wiring involved and like the way it auto-calibrates to the earth's magnetic field.

If you look in the git source at https://github.com/escuta/mosca, there's a directory arduinoHeadTrack with the arduino source code. So if you want to work with some other device you could use the same format, transmitting the heading pitch and roll values in radians as integers (converted from floats by multiplying by 100) at 115200 baud.

You can see in Mosca.sc that there's a variable "trackarr" which is used as a protocol for scanning the incoming serial data bytes and takes the form:

this.trackarr= [251, 252, 253, 254, nil, nil, nil, nil, nil, nil, 255];

and I'm pretty sure that the data comes in like this:

251, 252, 253, 254, heading-lsb, heading-msb, roll-lsb, roll-msb, pitch-lsb, pitch-msb, 255

procTracker (that you cited) is called by matchTByte and reconstitutes the heading, roll and pitch data into radian floats with some necessary adjustments (see the help file for an explanation of headingOffset).

When Mosca is run with headtracking enabled and using the 9-axes motion shield, an orientation display appears in the bottom-right of the GUI. If for example I use headingOffset to adjust the heading values for true north, and if I'm facing true north, the heading value hovers around 0. As I turn my head left through 180deg the value changes from 0 to -3.14. As i turn my head right from true north through 180deg, the values change from 0 to 3.13.

When it comes to roll, the 9-axes motion shield appears to be a bit more limited. For example, examining the raw output in degrees, roll varies from 0 to 90 with a 90 degree tilt, however returns to zero as the tilt continues through to 180 degrees. It does the same thing in the negative when tilted in the opposite direction. Pitch works like heading and gives a full 360 degrees-worth of values. For normal headtracking, where the head is not tilted more than 90 degrees, and assuming the participant doesn't turn somersaults, this is OK, I suppose. I don't know if the devices you use behave any differently. Note that in the arduino project file, I have swapped pitch and roll because of the way I've positioned the head-tracker on the headphones. It was more practical to rotate the arduino and shield so that the USB cable can run down the left hand side of the phones along with the audio cable.

So, returning to Mosca: As I tilt my head forward (from a normal standing position) through to 90deg, the pitch value varies from 0 to around 1.54 (not 1.57 for some reason - i think it's hard to have the phones perfectly level) before returning to 0 when the top of my head is facing the ground. If I tilt backwards from a normal standing position, the values do the same thing but in the negative. Roll works like heading (remembering that roll and pitch are swapped in the arduino project), and moves from 0 to 3.13 as i tilt my head 180 degrees to the left and from 0 to -3.14 as i tilt my head through 180 degrees to the right.

I hope this helps and I hope it's clear enough.

Good luck!

Iain




Em 13/02/2018 17:34, [hidden email] escreveu:
Hi Iain,

I have been exploring Mosca for most of the day and it seems very solid - a great tool, thank you very much!

Coincidentally you updated it in perfect timing for my ambisonics project :)

Do you have any plans to include support for other headtracker gyros? I currently have a GY-85, a MPU-6050 and a ADXL345, all popular (and cheap) for DIY Arduino headtrackers[1]. Reading about the BNO055 (which you use) it seems it does all of the number crunching on its own chip, which I guess should help with accuracy. Do you have any experiences/thoughts on this?

I'd also like to ask what kind of numbers and ranges the procTracker function expects:
    procTracker  {|heading, roll, pitch|
        var h, r, p;
        //lattemp, lontemp, newOX, newOY;
        h = (heading / 100) - pi;
        h = h + this.headingOffset;
        if (h < -pi) {
            h = pi + (pi + h);
        };
        if (h > pi) {
            h = -pi - (pi - h);
        };
       
        r = (roll / 100) - pi;
        p = (pitch / 100) - pi;
...

Again, thanks a lot.

Martin


[1] Links to DIY headtrackers:

On Mon, Feb 12, 2018 at 12:52 PM, <[hidden email]> wrote:
Hello list,

A new and much improved "Mosca" quark for GUI assisted ambisonics is available in the quark repository. It has been tested with the ATK 4.0.1 and SC 3.9.0.

Version 0.2 includes optional head-tracking, streaming from disk, non-GUI operation, a code interface and many other changes and bug fixes.

The home page for the project is here: http://escuta.org/mosca

A video tutorial is available here: http://escuta.org/moscavideo

The git source is here: https://github.com/escuta/mosca

All the best!

Iain Mott

--
_________
Iain Mott
http://escuta.org


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


-- 
_________
Iain Mott
http://escuta.org


-- 
_________
Iain Mott
http://escuta.org

Reply | Threaded
Open this post in threaded view
|

Re: Mosca: GUI assisted ambisonics quark v0.2

mott
Hi Glen, Thanks for your comments.


Em 15/02/2018 10:37, [hidden email] escreveu:
> Thanks, Iain, this is very cool to play with, and a great way to
> audition and experiment with different ambisonic sounds and effects! 
> I had an initial issue with the GUI window being too big for my
> MacBook Air screen, but was able to set the "width" argument to
> Mosca.new to easily solve that.  You've obviously put a lot of work
> into this, and it's got a load of functionality. That "distant" RIR
> reverb sounds really great (the close one not so much)...and I love
> that galloping horse sound, it spatializes very well!  (-;
Did you try the "a-format reverb" checkbox? When deselected, distant
reverb is fed back and spatialised with the source, whereas close reverb
taps the source as a mono signal (when the source is mono or stereo) and
sends this to a b-format reverberator to create a omni-directional
effect. This is an implementation of the old John Chowning technique of
"local" (distant) and "global" (close) reverb.  When the a-format reverb
checkbox is selected the already-spatialised source, in a-format, is
sent to an a-format reverberator and later converted back to b-format
before decoding. When the checkbox is selected, both close and distant
reverbs function in the same way, it is just that there are two
controls. Also, I guess you've tried the reverb with a real IR file? If
none is provided as a Mosca creation argument or if "FreeVerb" is given,
FreeVerb is used rather than convolution reverb. When I use close
reverberation, I tend to use it very sparingly.

> In a similar setup I've created (for a bunch of binaural sources using
> ATK), for VR projects, I've found it convenient that the sound objects
> and listener position/orientation be in "world space" -- but this is
> just be a matter of computing and setting things relative to the head,
> in order to use with something like Mosca. It can be tricky to make
> sure everything updates at the same time (need to use OSC/server
> bundles when sending params from a separate graphical/simulation
> application, for example), otherwise you can get a
> stuttering/zippering effect if the user is moving as well as all the
> sources...  For such applications (when the data comes from outside),
> it might be useful (at some point) to add functionality to set all the
> XYZ source positions and head orientation in one shot, from code.
>
Yes, I'm working on a similar project, eventually I'll include this in
Mosca.

> One thing I noticed when playing with it was that the yboxProxy
> doesn't seem to update the GUI when you set it from code.  (xboxProxy
> and zboxProxy do update correctly, and you can hear that the sound has
> moved in all cases, it's just the GUI that's behind...  Also, if you
> stop and restart auditioning the source pops to the right place.)
>

Yes, it's true that xboxProxy is needed to move the sound. I'll have a
look at that, there shouldn't be any problem in changing it so that
yboxProxy can move the sound independently. I'll check that issue too
about the GUI being behind. Thanks.

> Another question...there seems to be no sense of units (e.g. metres). 
> All your positions are normalized -1 to 1.  Is there an approximate
> correspondence to world units you would use, e.g. for the doppler or
> near/far reverb cross-over "distances", or for ambisonic proximity
> effects? Say you wanted the horse (galloping at 12.5 m/s) to run
> towards you from 150m away to the left, then passing you, just 2m in
> front -- how would you do it? I guess doing whatever would be the
> acoustic equivalent of "eyeball it"?...(eardrum it ;-)  Or assume an
> ambulance with siren passing you at 100 km/h...the doppler shift is
> based on the source relative speed and sound propagation speed, so you
> need some kind of units correspondence to get it to sound right (if
> that's actually important, which possibly/probably it's not, in an
> artistic context ;-).  I guess some conversion factor might tell you
> what "Doppler Amount" you should use, for a given unit scale.
>
Yes, we have no bananas! No units, i'm afraid. It's very much a work in
progress. The other version that I'm working on does have units for the
source position, but I haven't correctly factored in things like Doppler
or proximity effect yet. For the moment, it's up to the operator to
adjust the controls until it sounds right.

>
> P.S: It seems to work fine with 3.8.0 (on Mac), too. (I know, I need
> to upgrade to 3.9!)  Have not tried it on Windows yet.
>
I'm a bit concerned that there will be problems with Windows because of
file paths (forward slash - backward slash issues). Please let me know
how you get on with Windows if you try it. Unfortunately, I don't have a
working windows PC to test on.

All the best!

Iain



_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/