Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Random picking of sounds as variables

Hi there,

I am setting an experiment about sound comprehension. Here is the general loop of the experiment :


As you can see, there are 96 elements executed. The plan of the experiment is 2 * 6 * 8.

The elements are regrouped as follow : 2 main conditions 'a' and 'p', 6 conditions of silence by main conditions and 8 sentences by silent's condition.

I already have 12 files (silent conditions), each filled with 96 sentences. Now, what I want is to prepare 96 sentences in a inline script, so when I start the experiment with a subject, the program will pick randomly 96 sentences with this rule :

8 sentences * 12 silent conditions.

The general idea is to counterbalance the sentences between subjects. Unfortunately, I am not very familiar with python functions. So if people can help me to design the script it will be wonderful.

I hope this is clear,

Thanks,

Aurélien.

Comments

  • Hi Aurélien,

    I don't fully understand what you're trying to do. It seems like the loop table is correct the way it is, right? Is it a matter of selecting the right sound file based on the experimental variables that you've specified in the table? I.e. do you want to map these variables onto a file name? Details would be helpful 😊

    Cheers!

    Sebastiaan

  • Hi Sebastiaan,

    Thank you very much for your answer. I advanced a little. I had one problem with this loop : I need to play sequentially [silent] with [condition] (for example, I need to play sequentially the [sentences] of [silent]=0 and [condition]=a, so 8 sentences).

    I'll try to be as clear as I could. So, in the most simple way, what I need is to define a variable (a category of sound) and fill it with random sounds in the pool. Because all my files, in this example, are named like '20p(number).wav', here is what I thought I should do :

    import random
    I = random.sample(range(96),8) #I have 96 possible sounds and I want 8 of them (randomly)
    var.set('20p',I) #assign to the condition 20p all the possible values
    

    So, theoretically, I now have one condition '20p' with 8 values, each corresponds to a real .wav file (for example '20p1.wav').

    What I need now, is two things :

    1) implement all values of 20p in a loop, so the loop will run randomly the 8 values (20p1 ... 20p6... 20p24...)

    2) play each 8 values in a sampler. I thought to do this in the script of the sampler :

    set sample "20p[I].wav"
    

    but if I do this, it will try to find something like '20p[0 1 2 3 4 5].wav' and not '20p0.wav'.

    Maybe, this is to much for one post !

    Thank you again,

    Cheers,

    Aurélien.

  • Hi Aurélien,

    Ok—it's still not entirely clear to me, but I do see at least one basic confusion: The variable 20p is a list of multiple values. But then you're trying to use it as though it's a single value when you specify the sampler. And that's where things go wrong. Does that make sense?

    What I would do is first define a random list at the start of the experiment (or the start of the block if appropriate):

    import random
    sound_indices = random.sample(range(96), 8)
    

    And then, at the start of the trial, you randomly 'pop' one element from that list and use it in the sampler.

    var.current_sound_index = sound_indices.pop()
    

    Something along those lines should get you what you want, I believe.

    Cheers,

    Sebastiaan

  • Hi Sebastiaan,

    Thank you for your advices, I solved the problem! I generated random value and assign them to my var :

    import random
    import string
    I = random.sample(range(1,97),8)
    var.i1=I[0]
    var.i2=I[1]
    var.i3=I[2]
    var.i4=I[3]
    var.i5=I[4]
    var.i6=I[5]
    var.i7=I[6]
    var.i8=I[7]
    

    I put the script in the bloc sequence so it generate new random numbers every iteration (at last, I think...) and i1 to i8 are the value of sentences. Than, i1 to i8 where assigned to the variable [value] in a loop.

    So if the sample play [value] for i1 = 12, the sample will find and play the file 12.wav.

    Next step will be to access sound files not in the pool but in the experiment folder because I have 96*12 files. I will post the final step (hope it could help someone even if it is a bit messy :) )

    Cheers,

    Aurélien.

  • Here I am with more info !

    So, if you want to play sounds as variable and randomly picking them from a file, here is one way to do it (I picked some lines of the script in this forum so thanks to everybody ! )


    import os

    import random

    #set path and list for conditions

    folder = r'C:\Users\condition'

    list = []



     for file in os.listdir(folder): # 'file' can be replaced by any 'name'

     if file.endswith('.wav'): #for other type of files

          path = os.path.join(folder, file)

          list.append(path)


    So now, you have a list with path of .wav files.

    Let say, you want to pick 8 random '.wav' from it to set a variable name sound:

    sound = random.sample(list,8)

    Now, you want to play them without repetition, place this in the beginning of the sequence :

    play = sound.pop() #every time play is executed, the file executed will be removed from the list

    var.play = play #set the variable 'play' for the sampler

    Here you are.

    I think it works !

Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games