def Main():
    Stream = MyCustomStream()
    Stream.Open("./data/fart.wav")
    Stream.Play()
    print("Playing 5 seconds of audio data...")
    sf.Sleep(5)
    Stream.Stop()
    print("Press enter to exit...")
    input()
def Main():
    # Check that the device can capture audio
    if sf.SoundRecorder.CanCapture() == False:
        print("Sorry, audio capture is not supported by your system")
        return

    # Choose the sample rate
    SampleRate = int(
        input(
            "Please choose the sample rate for sound capture (44100 is CD quality) : "
        ))

    # Wait for user input...
    print("Press enter to start recording audio")
    input()

    # Here we'll use an integrated custom recorder, which saves the captured data into a sfSoundBuffer
    Recorder = sf.SoundBufferRecorder()

    # Audio capture is done in a separate thread, so we can block the main thread while it is capturing
    Recorder.Start(SampleRate)
    print("Recording... press enter to stop")
    input()
    Recorder.Stop()

    # Get the buffer containing the captured data
    Buffer = Recorder.GetBuffer()

    # Display captured sound informations
    print("Sound information :")
    print(" " + str(Buffer.GetDuration()) + " seconds")
    print(" " + str(Buffer.GetSampleRate()) + " samples / seconds")
    print(" " + str(Buffer.GetChannelsCount()) + " channels")

    # Choose what to do with the recorded sound data
    Choice = str(
        input(
            "What do you want to do with captured sound (p = play, s = save) ? "
        ))

    if Choice == 's':
        # Choose the filename
        Filename = str(input("Choose the file to create : "))

        # Save the buffer
        Buffer.SaveToFile(Filename)
    else:
        # Create a sound instance and play it
        Sound = sf.Sound(Buffer)
        Sound.Play()

        # Wait until finished
        while Sound.GetStatus() == sf.Sound.Playing:
            # Display the playing position - I don't know how to do this in python
            # std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << Sound.GetPlayingOffset() << " sec";

            # Leave some CPU time for other threads
            sf.Sleep(0.1)

    # Finished !
    print("Done !")

    # Wait until the user presses 'enter' key
    print("Press enter to exit...")
    input()

    return