:mod:`media ` -- Sounds and Images ================================================== .. module:: pybricks.media This module describes media such as sound and images that you can use in your projects. Media are divided into submodules that indicate on which platform they are available. :mod:`media.ev3dev ` -- Sounds and Images --------------------------------------------------------------------- .. module:: pybricks.media.ev3dev EV3 MicroPython is built on top of ev3dev, which comes with a variety of image and sound files. You can access them using the classes below. You can also use your own sound and image files by placing them in your project folder. Image Files ^^^^^^^^^^^ .. autoclass:: pybricks.media.ev3dev.ImageFile :no-members: .. toggle-header:: :header: **Information** .. data:: ACCEPT .. image:: ../../media/ev3dev-media/images/mono/information/accept.png :width: 15 % .. data:: BACKWARD .. image:: ../../media/ev3dev-media/images/mono/information/backward.png :width: 15 % .. data:: DECLINE .. image:: ../../media/ev3dev-media/images/mono/information/decline.png :width: 15 % .. data:: FORWARD .. image:: ../../media/ev3dev-media/images/mono/information/forward.png :width: 15 % .. data:: LEFT .. image:: ../../media/ev3dev-media/images/mono/information/left.png :width: 15 % .. data:: NO_GO .. image:: ../../media/ev3dev-media/images/mono/information/no_go.png :width: 15 % .. data:: QUESTION_MARK .. image:: ../../media/ev3dev-media/images/mono/information/question_mark.png :width: 15 % .. data:: RIGHT .. image:: ../../media/ev3dev-media/images/mono/information/right.png :width: 15 % .. data:: STOP_1 .. image:: ../../media/ev3dev-media/images/mono/information/stop_1.png :width: 15 % .. data:: STOP_2 .. image:: ../../media/ev3dev-media/images/mono/information/stop_2.png :width: 15 % .. data:: THUMBS_DOWN .. image:: ../../media/ev3dev-media/images/mono/information/thumbs_down.png :width: 15 % .. data:: THUMBS_UP .. image:: ../../media/ev3dev-media/images/mono/information/thumbs_up.png :width: 15 % .. data:: WARNING .. image:: ../../media/ev3dev-media/images/mono/information/warning.png :width: 15 % .. toggle-header:: :header: **LEGO** .. data:: EV3 .. image:: ../../media/ev3dev-media/images/mono/lego/ev3.png :width: 15 % .. data:: EV3_ICON .. image:: ../../media/ev3dev-media/images/mono/lego/ev3_icon.png :width: 15 % .. toggle-header:: :header: **Objects** .. data:: TARGET .. image:: ../../media/ev3dev-media/images/mono/objects/target.png :width: 15 % .. toggle-header:: :header: **Eyes** .. data:: ANGRY .. image:: ../../media/ev3dev-media/images/mono/eyes/angry.png :width: 15 % .. data:: AWAKE .. image:: ../../media/ev3dev-media/images/mono/eyes/awake.png :width: 15 % .. data:: BOTTOM_LEFT .. image:: ../../media/ev3dev-media/images/mono/eyes/bottom_left.png :width: 15 % .. data:: BOTTOM_RIGHT .. image:: ../../media/ev3dev-media/images/mono/eyes/bottom_right.png :width: 15 % .. data:: CRAZY_1 .. image:: ../../media/ev3dev-media/images/mono/eyes/crazy_1.png :width: 15 % .. data:: CRAZY_2 .. image:: ../../media/ev3dev-media/images/mono/eyes/crazy_2.png :width: 15 % .. data:: DIZZY .. image:: ../../media/ev3dev-media/images/mono/eyes/dizzy.png :width: 15 % .. data:: DOWN .. image:: ../../media/ev3dev-media/images/mono/eyes/down.png :width: 15 % .. data:: EVIL .. image:: ../../media/ev3dev-media/images/mono/eyes/evil.png :width: 15 % .. data:: KNOCKED_OUT .. image:: ../../media/ev3dev-media/images/mono/eyes/knocked_out.png :width: 15 % .. data:: MIDDLE_LEFT .. image:: ../../media/ev3dev-media/images/mono/eyes/middle_left.png :width: 15 % .. data:: MIDDLE_RIGHT .. image:: ../../media/ev3dev-media/images/mono/eyes/middle_right.png :width: 15 % .. data:: NEUTRAL .. image:: ../../media/ev3dev-media/images/mono/eyes/neutral.png :width: 15 % .. data:: PINCHED_LEFT .. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_left.png :width: 15 % .. data:: PINCHED_MIDDLE .. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_middle.png :width: 15 % .. data:: PINCHED_RIGHT .. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_right.png :width: 15 % .. data:: SLEEPING .. image:: ../../media/ev3dev-media/images/mono/eyes/sleeping.png :width: 15 % .. data:: TIRED_LEFT .. image:: ../../media/ev3dev-media/images/mono/eyes/tired_left.png :width: 15 % .. data:: TIRED_MIDDLE .. image:: ../../media/ev3dev-media/images/mono/eyes/tired_middle.png :width: 15 % .. data:: TIRED_RIGHT .. image:: ../../media/ev3dev-media/images/mono/eyes/tired_right.png :width: 15 % .. data:: UP .. image:: ../../media/ev3dev-media/images/mono/eyes/up.png :width: 15 % .. data:: WINKING .. image:: ../../media/ev3dev-media/images/mono/eyes/winking.png :width: 15 % Sound Files ^^^^^^^^^^^ .. autoclass:: pybricks.media.ev3dev.SoundFile :no-members: .. toggle-header:: :header: **Expressions** .. data:: BOING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/boing.wav>` .. data:: BOO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/boo.wav>` .. data:: CHEERING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/cheering.wav>` .. data:: CRUNCHING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/crunching.wav>` .. data:: CRYING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/crying.wav>` .. data:: FANFARE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/fanfare.wav>` .. data:: KUNG_FU .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/kung_fu.wav>` .. data:: LAUGHING_1 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/laughing_1.wav>` .. data:: LAUGHING_2 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/laughing_2.wav>` .. data:: MAGIC_WAND .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/magic_wand.wav>` .. data:: OUCH .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/ouch.wav>` .. data:: SHOUTING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/shouting.wav>` .. data:: SMACK .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/smack.wav>` .. data:: SNEEZING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/sneezing.wav>` .. data:: SNORING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/snoring.wav>` .. data:: UH_OH .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/expressions/uh-oh.wav>` .. toggle-header:: :header: **Information** .. data:: ACTIVATE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/activate.wav>` .. data:: ANALYZE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/analyze.wav>` .. data:: BACKWARDS .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/backwards.wav>` .. data:: COLOR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/color.wav>` .. data:: DETECTED .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/detected.wav>` .. data:: DOWN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/down.wav>` .. data:: ERROR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/error.wav>` .. data:: ERROR_ALARM .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/error_alarm.wav>` .. data:: FLASHING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/flashing.wav>` .. data:: FORWARD .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/forward.wav>` .. data:: LEFT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/left.wav>` .. data:: OBJECT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/object.wav>` .. data:: RIGHT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/right.wav>` .. data:: SEARCHING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/searching.wav>` .. data:: START .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/start.wav>` .. data:: STOP .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/stop.wav>` .. data:: TOUCH .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/touch.wav>` .. data:: TURN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/turn.wav>` .. data:: UP .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/information/up.wav>` .. toggle-header:: :header: **Communication** .. data:: BRAVO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/bravo.wav>` .. data:: EV3 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/ev3.wav>` .. data:: FANTASTIC .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/fantastic.wav>` .. data:: GAME_OVER .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/game_over.wav>` .. data:: GO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/go.wav>` .. data:: GOOD_JOB .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/good_job.wav>` .. data:: GOOD .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/good.wav>` .. data:: GOODBYE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/goodbye.wav>` .. data:: HELLO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/hello.wav>` .. data:: HI .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/hi.wav>` .. data:: LEGO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/lego.wav>` .. data:: MINDSTORMS .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/mindstorms.wav>` .. data:: MORNING .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/morning.wav>` .. data:: NO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/no.wav>` .. data:: OKAY .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/okay.wav>` .. data:: OKEY_DOKEY .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/okey-dokey.wav>` .. data:: SORRY .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/sorry.wav>` .. data:: THANK_YOU .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/thank_you.wav>` .. data:: YES .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/communication/yes.wav>` .. toggle-header:: :header: **Movement sounds** .. data:: SPEED_DOWN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/movements/speed_down.wav>` .. data:: SPEED_IDLE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/movements/speed_idle.wav>` .. data:: SPEED_UP .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/movements/speed_up.wav>` .. toggle-header:: :header: **Colors** .. data:: BLACK .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/black.wav>` .. data:: BLUE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/blue.wav>` .. data:: BROWN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/brown.wav>` .. data:: GREEN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/green.wav>` .. data:: RED .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/red.wav>` .. data:: WHITE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/white.wav>` .. data:: YELLOW .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/colors/yellow.wav>` .. toggle-header:: :header: **Mechanical** .. data:: AIR_RELEASE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/air_release.wav>` .. data:: AIRBRAKE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/airbrake.wav>` .. data:: BACKING_ALERT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/backing_alert.wav>` .. data:: HORN_1 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/horn_1.wav>` .. data:: HORN_2 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/horn_2.wav>` .. data:: LASER .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/laser.wav>` .. data:: MOTOR_IDLE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/motor_idle.wav>` .. data:: MOTOR_START .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/motor_start.wav>` .. data:: MOTOR_STOP .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/motor_stop.wav>` .. data:: RATCHET .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/ratchet.wav>` .. data:: SONAR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/sonar.wav>` .. data:: TICK_TACK .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/mechanical/tick_tack.wav>` .. toggle-header:: :header: **Animal sounds** .. data:: CAT_PURR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/cat_purr.wav>` .. data:: DOG_BARK_1 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/dog_bark_1.wav>` .. data:: DOG_BARK_2 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/dog_bark_2.wav>` .. data:: DOG_GROWL .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/dog_growl.wav>` .. data:: DOG_SNIFF .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/dog_sniff.wav>` .. data:: DOG_WHINE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/dog_whine.wav>` .. data:: ELEPHANT_CALL .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/elephant_call.wav>` .. data:: INSECT_BUZZ_1 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/insect_buzz_1.wav>` .. data:: INSECT_BUZZ_2 .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/insect_buzz_2.wav>` .. data:: INSECT_CHIRP .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/insect_chirp.wav>` .. data:: SNAKE_HISS .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/snake_hiss.wav>` .. data:: SNAKE_RATTLE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/snake_rattle.wav>` .. data:: T_REX_ROAR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/animals/t-rex_roar.wav>` .. toggle-header:: :header: **Numbers** .. data:: ZERO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/zero.wav>` .. data:: ONE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/one.wav>` .. data:: TWO .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/two.wav>` .. data:: THREE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/three.wav>` .. data:: FOUR .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/four.wav>` .. data:: FIVE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/five.wav>` .. data:: SIX .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/six.wav>` .. data:: SEVEN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/seven.wav>` .. data:: EIGHT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/eight.wav>` .. data:: NINE .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/nine.wav>` .. data:: TEN .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/numbers/ten.wav>` .. toggle-header:: :header: **System sounds** .. data:: CLICK .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/system/click.wav>` .. data:: CONFIRM .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/system/confirm.wav>` .. data:: GENERAL_ALERT .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/system/general_alert.wav>` .. data:: OVERPOWER .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/system/overpower.wav>` .. data:: READY .. raw:: html :download:`Download <../../media/ev3dev-media/sounds/system/ready.wav>` Fonts ^^^^^ .. autoclass:: pybricks.media.ev3dev.Font :no-members: .. autoattribute:: pybricks.media.ev3dev.Font.DEFAULT :annotation: = Font('Lucida', 12) .. autoattribute:: pybricks.media.ev3dev.Font.family .. autoattribute:: pybricks.media.ev3dev.Font.style .. autoattribute:: pybricks.media.ev3dev.Font.width .. autoattribute:: pybricks.media.ev3dev.Font.height .. automethod:: pybricks.media.ev3dev.Font.text_width .. automethod:: pybricks.media.ev3dev.Font.text_height **Exploring more fonts** Behind the scenes, Pybricks uses Fontconfig_ for fonts. The Fontconfig command line tools can be used to explore available fonts in more detail. To do so, go to the ev3dev device browser, right click on your EV3 brick, and click *Open SSH Terminal*. Then you can enter one of these commands:: # List available font families. fc-list :scalable=false family # Perform lookup similar to Font.DEFAULT fc-match :scalable=false:dpi=119:family=Lucida:size=12 # Perform lookup similar to Font(size=24,lang=zh-cn) fc-match :scalable=false:dpi=119:size=24:lang=zh-cn Pybricks only allows the use of bitmap fonts (``scalable=false``) and the screen on the EV3 has 119 pixels per inch (``dpi=119``). .. _FontConfig: https://www.freedesktop.org/wiki/Software/fontconfig/ Image Manipulation ^^^^^^^^^^^^^^^^^^ Instead of drawing directly on the EV3 screen, you can make and interact with image files using the ``Image`` class given below. .. |this image| replace:: this image .. autoclass:: pybricks.media.ev3dev.Image :no-members: .. automethod:: pybricks.media.ev3dev.Image.empty .. rubric:: Drawing text There are two ways to draw text on images. :meth:`draw_text` lets text be placed precisely on the image or :meth:`print` can be used to automatically print text on a new line. .. automethod:: pybricks.media.ev3dev.Image.draw_text .. automethod:: pybricks.media.ev3dev.Image.print .. automethod:: pybricks.media.ev3dev.Image.set_font .. rubric:: Drawing images A copy of another image can be drawn on an image. Also consider using sub-images to copy part of an image. .. automethod:: pybricks.media.ev3dev.Image.draw_image .. rubric:: Drawing shapes These are the methods to draw basic shapes, including points, lines, rectangles and circles. .. automethod:: pybricks.media.ev3dev.Image.draw_pixel .. automethod:: pybricks.media.ev3dev.Image.draw_line .. automethod:: pybricks.media.ev3dev.Image.draw_box .. automethod:: pybricks.media.ev3dev.Image.draw_circle .. rubric:: Image properties .. autoattribute:: pybricks.media.ev3dev.Image.width .. autoattribute:: pybricks.media.ev3dev.Image.height .. rubric:: Replacing the entire image .. automethod:: pybricks.media.ev3dev.Image.clear .. automethod:: pybricks.media.ev3dev.Image.load_image .. rubric:: Saving the image .. automethod:: pybricks.media.ev3dev.Image.save