Moving Focus time domain beamforming & CLEAN-T algorithm

80 views
Skip to first unread message

Sri Chaitanya Durga Prasad Mojjada

unread,
Sep 18, 2023, 4:39:15 AM9/18/23
to Acoular-users
Dear members,

I want to work on rotating sound sources, I have looked at the example scripts of acoular for moving focus time domain beamforming and clean T algorithm.

However I want to apply this to experimental  microphone data captured on the setup containing speaker mounted to a rotating disk. I have used a microphone array containing 82 channels/microphones.

The .h5 file also has coulmn containing the trigger signal or tacho signal.
I have looked at the .h5 file of the synthetically generated file from acoular library, There's no trigger channel,I believe  Acoular uses the trajectory() for this purpose.

I want to know How I can integrate my experimental microphone data into acoular script to perform moving focus time domain beamforming and clean T deconvolution.

Can some one please help me with this?

I am new to rotating sound sources.

Is there a way I can work it out? Do I have to define trajectory using the my parameters for my setup in acoular or is there any ither way?

Thanks,
Chaitanya.
 

Gert Herold

unread,
Sep 18, 2023, 5:10:17 AM9/18/23
to Acoular-users
Hi Chaitanya

I do not have a ready-made script for this, but it would follow this processing:

First, you want to extract the trigger signal. If you have it as an additional channel, you can extract it using a MaskedTimeSamples object, loading the h5 file and putting all non-trigger channels as list in the invalid_channels traits. For identifying a trigger signal, Acoular provides the Trigger class: http://acoular.org/api_ref/generated/generated/acoular.tprocess.Trigger.html#acoular.tprocess.Trigger. You feed the MaskedTimeSamples object as source into it. You can then use this to get a time-dependent angle by an AngleTracker object: http://acoular.org/api_ref/generated/generated/acoular.tprocess.AngleTracker.html#acoular.tprocess.AngleTracker. Using the AngleTracker.angle trait, you can then construct a trajectory (as in the examples) to do time domain beamforming.

For an example of a rotating speaker setup, you might also want to check out this data set: https://doi.org/10.14279/depositonce-12801

Cheers,

Gert

Acoular-users

unread,
Sep 19, 2023, 3:02:33 AM9/19/23
to Acoular-users
Hi Gert,

Thank you so much for your reply,
I understood most of the part about what you meant.

tr = acoular.MaskedTimeSamples( name=r'case3.h5' )
invalid = [i for i in range(81)]# list of invalid channels (unwanted microphones etc.)
tr.invalid_channels = invalid #
ts = acoular.MaskedTimeSamples( name=r'case3.h5' )
ts.invalid_channels = [80,81]
print(ts.numchannels_total)
trig = acoular.Trigger(source = tr,threshold = 0.5)
triggg= trig.trigger_data
angleT = acoular.AngleTracker(source = ts, trigger = trig)
ang = angleT.angle
rpm= angleT.rpm
rpm_avg=angleT.average_rpm

I followed the steps you described.

I'm still a bit confused about how to create trajectory from this, I may be missing something since I am new to TimeDomain beammforming and the concept of trajectory.

Could you please let me know.

Thanks,
Chaitanya.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages