import os
import PyRIR as rir
import soundfile as sf
import numpy as np

library = rir.Room("Library", 1.5, 1.2,
                   1.5)  # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

root_dir = "C:\\Users\\craig\\Documents\\RIR_Project\\Audio_files"

for room in rooms:
    filter_dirs = [
        os.path.join(root_dir, "Impulses", room.name, "Eigenmike", "FOA"),
        os.path.join(root_dir, "Impulses", room.name, "Eigenmike", "HOA"),
        os.path.join(root_dir, "Impulses", room.name, "Eigenmike", "SDM"),
        os.path.join(root_dir, "Impulses", room.name, "Eigenmike", "MP"),
        os.path.join(root_dir, "Impulses", room.name, "Kemar", "trimmed")
    ]
    for filter_dir in filter_dirs:
        for file in os.listdir(filter_dir):
            if ".wav" in file:
                data, fs = sf.read(os.path.join(filter_dir, file))
            else:
                continue
            data_abs_summed = np.sum(np.abs(data), 0)
            normalise = np.amax(data_abs_summed)
            print(file, normalise)
            if normalise > 1:
                data = data / (np.sqrt(normalise))
Exemple #2
0
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal

# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

lab = rir.Room("Audiolab", 0.3, 1.2, 1.3)
rooms = [lab]

root_dir = "C:\\Users\\craig\\Box Sync\\Papers\\Reverb study\\Audio_files"
stimuli_dir = os.path.join(root_dir, "Stimuli", "Dry")

apply_filter = False
# Filter: low shelf, g=-15db, fc=1khz from https://arachnoid.com/BiQuadDesigner/
sos = [0.91451797, -1.70941432, 0.80225341, 1, -1.69240694, 0.73377875]

modes = ["TakeFive", "Speech"]

for mode in modes:

    max_len_file = 0  # maximum file length after convolving, for zero padding

    print("Creating", mode, "stimuli...")

    if mode is "TakeFive":
        stimuli_pos = ["0"]
        stimuli_name = ['TakeFive_Piano.wav']
Exemple #3
0
#                     [1, 0, 0],
#                     [0, -1, 0],
#                     [-1, 0, 0],
#                     [0, 0, 1],
#                     [0, 0, -1]])

# HOA_cart = [rir.spherical_2_cartesian(coord[0], coord[2], coord[1]) for coord in dodeca]
# #
# #
# # HOA_sph = [rir.cartesian_2_spherical(coord[0], coord[1], coord[2]) for coord in HOA_cart]
# #
# for ind, pos in enumerate(HOA_cart):
#     print(pos)
# print(pos[0], pos[1], pos[2])
#
# HOA_cart = np.array(HOA_cart).T
# fig = plt.figure(1)
# ax = Axes3D(fig)
# ax.scatter(HOA_cart[0], HOA_cart[1], HOA_cart[2])
#
# plt.show()

cart = [
    rir.spherical_2_cartesian(cap[0], cap[1], cap[2])
    for cap in rir.eigenmike_capsules
]
for pos in cart:
    print(pos)
#
# for pos in dodeca:
#     print(pos[1], pos[2], pos[0])
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal

# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2,
                   1.5)  # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

FOA = rir.Reproduction("1OA", 6)
HOA = rir.Reproduction("3OA", 20)
ambisonics = [FOA, HOA]

root_dir = "C:\\Users\\craig\\Documents\\RIR_Project\\Audio_files"

mode = "Dirac"

if mode is "Stimuli":
    stimuli_pos = [30, 0, 0, 0, 330]
    stimuli_name = [
        'Piano.wav', 'Ride.wav', 'Kick.wav', 'Snare.wav', 'Sax.wav'
    ]
elif mode is "Noise":
    stimuli_pos = [0]
    stimuli_name = ['PinkNoise.wav']
Exemple #5
0
          (num, slider_pos, num))
    file_path = location + "/" + name + ".wav"
    print("\t<Source_%d_filePath>%s</Source_%d_filePath>" %
          (num, file_path, num))


if Direct is True:
    positions = [30, 0, 0, 0, 330]
    names = ['Piano', 'Ride', 'Kick', 'Snare', 'Sax']
    location = root + "/Dry"
    distance = 1.3
    vol = 0.9
    vol_db = -40

    for ind, pos in enumerate(positions):
        cart = rir.spherical_2_cartesian(distance, 0, pos)
        print_source(source, cart, names[ind], location, vol, vol_db)
        source += 1
        print("\n")

if Mono_panned is True:
    positions = [30, 0, 0, 0, 330]
    names = ["%s_MP_%d" % (room, i) for i in range(len(positions))]
    location = root + "/MP"
    distance = 1.3
    vol = 0.1
    vol_db = -40

    for ind, pos in enumerate(positions):
        cart = rir.spherical_2_cartesian(distance, 0, pos)
        print_source(source, cart, names[ind], location, vol, vol_db)
Exemple #6
0
import os
import PyRIR as rir
import numpy as np

xml_name_base = "FullXML"

# modes = ["Stimuli", "Noise", "Dirac"]
# modes = ["Stimuli"]
# modes = ["Stimuli"]

library = rir.Room("Library", 1.5, 1.2, 1.5, rir.DRR_adjustment_library
                   )  # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2, rir.DRR_adjustment_trapezoid)
rooms = [library, trapezoid]
root = "./.."

Direct = True
Mono_panned = True
FOA = False
HOA = False
SDM = False

gain = 1

num_sources = Direct * 5 + Mono_panned * 5 + FOA * 6 + HOA * 20 + SDM * 20


def write_source(file, num, pos, name, location, vol, vol_db, slider_pos=45):
    file.write("\t<Source%d_x>%.9f</Source%d_x>\n" % (num, pos[0], num))
    file.write("\t<Source%d_y>%.9f</Source%d_y>\n" % (num, pos[1], num))
    file.write("\t<Source%d_z>%.9f</Source%d_z>\n" % (num, pos[2], num))
Exemple #7
0
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal


# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2, 1.5)    # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

root_dir = "C:\\Users\\Isaac\\Audio_files_07_08"
#root_dir = "/Users/isaacengel/Documents/Audio_files"
stimuli_dir = os.path.join(root_dir, "Stimuli", "Dry")

apply_filter = True
# Filter: low shelf, g=-15db, fc=1khz from https://arachnoid.com/BiQuadDesigner/
# sos = [0.91451797, -1.70941432, 0.80225341, 1, -1.69240694, 0.73377875]
sos = [0.94875379, -1.75013219, 0.81202752, 1, -1.74045010, 0.77046340] # g=-9db, fc=1khz
sos2 = [1.17663871, -1.05650264, 0.21935801, 1, -1.05650264, 0.39599671] # peak filter fc=5khz, q=0.6, g=4db

mode = "Dirac1"

max_len_file = 0  # maximum file length after convolving, for zero padding

print("Creating", mode, "stimuli...")
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal

# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2,
                   1.5)  # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

mode = "Dirac"

if mode is "Stimuli":
    stimuli_pos = [30, 0, 0, 0, 330]
    stimuli_name = [
        'Piano.wav', 'Ride.wav', 'Kick.wav', 'Snare.wav', 'Sax.wav'
    ]
elif mode is "Noise":
    stimuli_pos = [0]
    stimuli_name = ['PinkNoise.wav']
elif mode is "Dirac":
    stimuli_pos = [0]
    stimuli_name = ['Dirac.wav']
else:
    quit()
Exemple #9
0
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal


# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2, 1.5)    # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

SDM = rir.Reproduction("SDM", 20)
ambisonics = [SDM]

root_dir = "C:\\Users\\craig\\Documents\\RIR_Project\\Audio_files"

mode = "Stimuli"

if mode is "Stimuli":
    stimuli_pos = [30, 0, 0, 0, 330]
    stimuli_name = ['Piano.wav', 'Ride.wav', 'Kick.wav', 'Snare.wav', 'Sax.wav']
elif mode is "Noise":
    stimuli_pos = [0]
    stimuli_name = ['PinkNoise.wav']
elif mode is "Dirac":
    stimuli_pos = [0]
    stimuli_name = ['Dirac.wav']
Exemple #10
0
import PyRIR as rir
import os
import soundfile as sf
import numpy as np
from scipy import signal


# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2, 1.5)    # name, rt60, rd_ratio, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
lab = rir.Room("Audiolab", 0.3, 1.2, 1.3)
rooms = [library, trapezoid]
# rooms = [lab]

# root_dir = "C:\\Users\\craig\\Box Sync\\Papers\\Reverb study\\Audio_files"
#root_dir = "/Users/isaacengel/Documents/Audio_files"
root_dir = "C:\\Users\\isaac\\Audio_files_09_09"
stimuli_dir = os.path.join(root_dir, "Stimuli", "Dry")

apply_filter = True
methods_to_filter = ["0OA", "1OA", "2OA", "3OA", "4OA", "RVL_4OA"]
# Filter: low shelf from https://arachnoid.com/BiQuadDesigner/
# sos = [0.91451797, -1.70941432, 0.80225341, 1, -1.69240694, 0.73377875] # g=-15db, fc=1khz
sos = [0.94875379, -1.75013219, 0.81202752, 1, -1.74045010, 0.77046340] # g=-9db, fc=1khz
sos2 = [1.17663871, -1.05650264, 0.21935801, 1, -1.05650264, 0.39599671] # peak filter fc=5khz, q=0.6, g=4db

modes = ["TakeFive", "Speech", "Dirac1"]
# modes = ["Dirac1"]
Exemple #11
0
# imports
# ----------------------------------------------------------------------------------------------------------------------

import PyRIR as rir
import os
import soundfile as sf
from scipy import signal
import numpy as np
import re
import scipy.io.wavfile

# ----------------------------------------------------------------------------------------------------------------------
# Define directory, rooms and techniques
# ----------------------------------------------------------------------------------------------------------------------

library = rir.Room("Library", 1.5, 1.2,
                   1.5)  # name, rt60, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.2, 1.2)
rooms = [library, trapezoid]

rvl_brir = rir.Measurement("RVL", ["0", "90", "180", "270", "top", "bottom"],
                           rir.kemar_capsules)
methods = [rvl_brir]

root_dir = "C:\\Users\\craig\\Box Sync\\Papers\\Reverb study\\Audio_files"

# ----------------------------------------------------------------------------------------------------------------------
# Trim each sweep, Direct sound to end of RT60(user input). Direct sound is then replaced with zero padding
# ----------------------------------------------------------------------------------------------------------------------
fs = 44100
c = 343
safety = 1  # Safety net x many samples long placed between the fade at the calculated first reflection
Exemple #12
0
# imports
import PyRIR as rir

import os
import re
import soundfile as sf
from scipy import signal
import numpy as np

# Define directory, rooms and techniques

library = rir.Room("Library", 1.5, 1.5,
                   1.2)  # name, rt60, mic_height, mic_distance
trapezoid = rir.Room("Trapezoid", 0.9, 1.5, 1.2)
rooms = [library, trapezoid]

kemar = rir.Measurement("Kemar", ["0", "90", "180", "270", "top", "bottom"])
eigenmike = rir.Measurement("Eigenmike", [str(x) for x in range(0, 360, 10)])
methods = [kemar, eigenmike]

root_dir = "C:\\Users\\craig\\Documents\\RIR_Project\\Audio_files"

for room in rooms:
    for method in methods:

        sweep_dir = os.path.join(root_dir, "Sweeps", room.name, method.name)
        if not os.path.isdir(sweep_dir):
            os.makedirs(sweep_dir)

        for file_name in os.listdir(sweep_dir):