Skip to main content
Skip table of contents

Setting up a PROPixx for a 3D experiment

In this example, we will set up the PROPixx for rear projection, ceiling mode and use of a polariser. We will also set the PROPixx so that it keeps this configuration after a power down. We will also have the PROPixx Controller send out audio stimuli.

There exists four ways to set up the polariser, depending on what you wish to achieve.

  1. If the video source is set to SWTP3D: my_device.setVideoSource('SWTP3D')

  2. If you are using Blue Lines to sync your 3D stimulus: my_device.setVideoBlueLine(True)

  3. If you are using the red and blue 3D sequencer mode: my_device.setDlpSequencerProgram('RB3D')

  4. You can manually activate the polariser,(this is called VESA Free Run mode): my_device.setVesaFreeRun(True)

PY
from pypixxlib.propixx import PROPixx, PROPixxCTRL
from pypixxlib._libdpx import DPxSelectDevice
my_device = PROPixx()
my_device_controller = PROPixxCTRL()


my_device.setRearProjectionMode(True)# Sets the projector to read-projection mode.
my_device.setCeilingMountMode(True) # Sets the projector to ceiling-mount mode.
my_device.setVesaFreeRun(True)  # Sets the VESA port to work with the polariser.
my_device.updateRegisterCache() # Update the new modes to the device.
my_device.setCustomStartupConfig() # The projector will remember this configuration.
# The audio is done on the controller, so the next functions use the controller object.
my_device_controller.audio.initializeCodec() # Configures initial CODEC state.
my_device_controller.audio.setLeftRightMode('mono') # Set which mode the audio will be output.
my_device_controller.audio.setAudioBuffer(0, 64) # Set the audio to start at address 0, and size 64.


# Now we must create the audio stimulus.
# This is done by simply filling a list with a sound wave.
audio_stim = []
import math
for i in range(32):
    audio_stim.append(int(32767 * math.sin(2.0 * math.pi * i / 32.0)))
my_device_controller.writeRam(0, audio_stim) # Write the audio stimulus in the ram.
my_device_controller.audio.setVolume(0.25)
my_device_controller.updateRegisterCache() # Send everything to the device.

# We must at this point create the audio schedule
# The first parameter is the schedule onset, which we set to 0,
# meaning that the first schedule tick will occur immediately once the schedule starts.
# The second and third parameters indicate that the audio samples will be played at 40 kHz.
# The fourth parameter is a schedule counter, indicating the number of ticks
# that the schedule should run before stopping.
# We'll run it for 16000 samples, which will take 16000/40000 = 400 ms.

my_device_controller.audio.setAudioSchedule(0, 40000, 'hz', 16000)
my_device_controller.audio.startScheduleLeft()
my_device_controller.updateRegisterCache()
# Close the devices
my_device.close()
my_device_controller.close()
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.