Skip to main content

Python Multi-Media API (PMMA) is a multi-purpose API designed to make working on multi-media projects easier and faster!

Reason this release was yanked:

Developmental/test release not meant for prime time - YET

Project description

PMMA logo

PMMA (Python Multi-Media API)

⚠️ This is the DEVELOPMENT version for PMMA 5.0.0 and is NOT meant for routine use yet. ⚠️

PMMA is a Python library aimed at improving application development in Python. Typically, developing applications in Python necessitates familiarity with a variety of different libraries such as Pygame, ModernGL, PIL and Numpy. PMMA aims to simplify the application development process by creating a single interface that provides easy access to simple and advanced pre-written and highly optimised application development utilities, whilst still also allowing these utilities to be expanded upon by exposing their underlying APIs.

Progress on PMMA v5.0.0

Progress on PMMA v5.0.0

Each entry is worth: (20/7) %

  • ✅ - Setup new repository structure
  • ✅ - Setup new repository automation
  • ✅ - Finished Advanced Mathematics component
  • ✅ - Finished Perlin Noise component
  • ✅ - Finished Fractal Brownian Motion
  • ✅ - Finished Backpack
  • ✅ - Finished Number Converter
  • ✅ - Finished Audio
  • ✅ - Finished GPU
  • ✅ - Finished Executor
  • ✅ - Finished Advanced Tkinter
  • ⏳ - Working on Video
  • ⏳ - Working on Display
  • ⏳ - Working on Events
  • ⏳ - Working on OpenGL
  • ⏳ - Working on Logging
  • ⏳ - Working on General
  • 🛑 - Not started Advanced Threading
  • 🛑 - Not started Camera
  • 🛑 - Not started Complex 2D shapes
  • 🛑 - Not started Constants
  • 🛑 - Not started Registry
  • 🛑 - Not started Controller
  • 🛑 - Not started Data Structures
  • 🛑 - Not started Error
  • 🛑 - Not started File
  • 🛑 - Not started Formatters
  • 🛑 - Not started Memory Manager
  • 🛑 - Not started Quick Start
  • 🛑 - Not started Recorder
  • 🛑 - Not started Sampler
  • 🛑 - Not started Settings
  • 🛑 - Not started Shapes 2D
  • 🛑 - Not started Transitions

Contents

History

I, (PycraftDev), joined GitHub to make the video game Pycraft in public using the programming language Python. Initially, my progress wasn't very methodical. I started with the basic game loop and worked out how different Python libraries interacted with each other. When I found that my design was slow, I went back and optimized it.

After many years of development and optimization, I gained extensive knowledge of making certain aspects of application development in Python really fast and performant. With that in mind, I started writing utility programs for Pycraft, which handled all of this behind the scenes, leaving the main programs much cleaner for their aggregation into my project - a video game.

As I worked on other projects, I found myself copying over these utility programs, revising them and gradually evolving my implementation of specific functions or classes. Eventually, this set of utility programs grew to be longer typically than the applications using them, and I decided it was time to separate my applications into two: the application itself, and PMMA.

Features

  • Object-Oriented Programming—Most of PMMA exists as specific objects, making it super easy to customize what you want.
  • Cython acceleration - Where native Python is "too slow" we switch it out for this alternative whenever possible.
  • GPU accelerated - PMMA can use GPU acceleration for 2D and 3D rendering.
  • Advanced mathematics - PMMA includes highly optimised commonly used mathematical functions.
  • Advanced threading - PMMA includes an advanced form of the Threading library, which extends its existing functionality to include the ability to kill threads on the fly.
  • Advanced Tkinter - PMMA includes some advanced Tkinter functions, like getting window size and default operating system fonts.
  • Simple shared memory - PMMA allows you to have a shared memory space for variables as a replacement for global variables, which can be accessed easily through threads.
  • Dynamic colour, coordinate, time, angle, and scalars—PMMA easily converts between different formats, so you can work with whatever is easiest for you!
  • Easy display management - PMMA allows you to easily manage your application window, including size, captions, display modes and v-sync.
  • Efficient shape rendering—PMMA supports a wide range of shapes and can render them using GPU acceleration.
  • Advanced memory management - PMMA will automatically manage large objects stored in memory.
  • Fast noise generation - PMMA can very efficiently create noise patterns in 1D, 2D or 3D.
  • Application customization—PMMA can be told details about your application and dynamically change its behaviour or how it appears to the operating system!
  • Video playback - PMMA can play back videos from a file, in your application. This is done by streaming the data from the disk, so wave goodbye to long video loading times and high memory usage.
  • Simplified Audio playback - PMMA includes support for very efficient audio playback, including steaming music directly from a file instead of reading the whole file at once. This is additionally supplemented with a range of additional controls like the ability to loop or pan audio and change its volume back.
  • Realtime Effects - PMMA can be used to apply effects to audio in real-time.
  • Transitions—PMMA can automatically manage the animation of values and coordinates for you in a variety of different styles. This is useful for moving objects about onscreen.
  • Advanced GPU information collection - PMMA can gather extremely detailed information about all installed GPUs.
  • Easy multi-device input—PMMA will automatically handle any additional controllers connected to your system, allowing you to interface easily with these devices. It even includes support for effects like Rumble!
  • Event management—PMMA will automatically update event objects in the background, allowing you to easily choose which events you need in your application. This idea has also been extended to detect when some events have been triggered in quick succession, like a double-tapped key (with per-key timings if needed).
  • Simple file systems – PMMA will automatically resolve file paths for you and can even scan project directories and produce unique user-friendly names for your files, which you can use instead!
  • Advanced data structures – PMMA includes access to fast implementations for advanced data structures like stacks, queues, circular queues, priority queues, priority stacks, inverted priority queues, inverted priority stacks, priority lists and inverted priority lists.
  • Command Execution—PMMA includes a super simple way for you to run command-line-level commands for your application, including the ability to get the result from the command in real time!
  • Projections—PMMA can automatically create and easily create projections that match your PMMA display for use in your 3D scenes.
  • OpenGL objects—PMMA includes its own wrapper for OpenGL through ModernGL, with a much simpler interface and the usual performance improvements thrown in.
  • Dynamic GPU allocation - PMMA can automatically try to distribute some graphics tasks to multiple installed GPUs to spread the load across all the available hardware.
  • Pipelines—PMMA combines complex 2D and 3D objects and renders them simultaneously, significantly improving performance.

Note: PMMA is still undergoing active development, and some features will be changed, added or extended in the near future - we will attempt to include backwards compatibility where possible.

Optional Dependencies

Cython

PMMA can take advantage of Cython compilation. This converts PYX files into C or C++. To do this, we would recommend GCC or MSVC, as they have written support in PMMA - you can use another compiler, or potentially even use pre-compiled binaries, but note you might get very slightly reduced performance in some applications.

To install GCC:

To install MSVC:

Note: I am working on supporting additional compilers directly, however they should already work - they just haven't been tested yet

Final Notes

PMMA is still in active development. PLease bear with us as we continue to make changes, and consult the documentation for advise on what features are 'safe to use'!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pmma-5.0.9.tar.gz (99.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pmma-5.0.9-cp311-cp311-win_amd64.whl (853.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pmma-5.0.9-cp311-cp311-manylinux2014_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11

pmma-5.0.9-cp311-cp311-macosx_14_0_universal2.whl (810.3 kB view details)

Uploaded CPython 3.11macOS 14.0+ universal2 (ARM64, x86-64)

pmma-5.0.9-cp310-cp310-win_amd64.whl (852.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pmma-5.0.9-cp310-cp310-manylinux2014_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10

pmma-5.0.9-cp310-cp310-macosx_14_0_universal2.whl (807.7 kB view details)

Uploaded CPython 3.10macOS 14.0+ universal2 (ARM64, x86-64)

pmma-5.0.9-cp39-cp39-win_amd64.whl (859.0 kB view details)

Uploaded CPython 3.9Windows x86-64

pmma-5.0.9-cp39-cp39-manylinux2014_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.9

pmma-5.0.9-cp39-cp39-macosx_14_0_universal2.whl (816.7 kB view details)

Uploaded CPython 3.9macOS 14.0+ universal2 (ARM64, x86-64)

pmma-5.0.9-cp38-cp38-win_amd64.whl (864.1 kB view details)

Uploaded CPython 3.8Windows x86-64

pmma-5.0.9-cp38-cp38-manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.8

pmma-5.0.9-cp38-cp38-macosx_14_0_universal2.whl (822.8 kB view details)

Uploaded CPython 3.8macOS 14.0+ universal2 (ARM64, x86-64)

File details

Details for the file pmma-5.0.9.tar.gz.

File metadata

  • Download URL: pmma-5.0.9.tar.gz
  • Upload date:
  • Size: 99.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9.tar.gz
Algorithm Hash digest
SHA256 992ab37ea4a562c110a6ec491f565c90ccc5ea06d68544462d52316992c2e9b9
MD5 7edd379be646cfe27b5f66b00c3a9734
BLAKE2b-256 08f6664e86f74efd5a90a98e518690f3ee1e509f2af4f728b1d67a372876af1a

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pmma-5.0.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 853.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 546c5a9f6b4414ac96ceaaa3e7107ee3e31e8a3d210ec5eb5d817b018e869fe1
MD5 ad5e3b61bc227bdf8d6e784e0ccc0a5b
BLAKE2b-256 50d771c38f59fc6ad89919606290da325fc71f961e9bc70f57a52cba01f82b6b

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e91bd9f221f8c166e120b89b18efa03d8ff4308e802b4f9d0016b42b76e153a
MD5 958c6e8c1027459a2249ba443ee85321
BLAKE2b-256 0dc0963796ed56394f032fdb463b38f3a58f51990feb6279260eb4541a524122

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 56bfc35ca2ac7430a50c9f42652abc515807565c11404af8576e496865f91640
MD5 29b00505ba2169ee63a204936a890968
BLAKE2b-256 75491c70f08b91dda5521350c07e81062230513cf9aa058ea28faf5cea3fecc3

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pmma-5.0.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 852.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e076ded371d765386398f33929364dbef7cbb16970d7eca39b96a723a81ee81
MD5 ce140b2f9c2ec1ad039454e7ab25abad
BLAKE2b-256 91036da0d0e1261015ce4a3f952754118c1c63241cf2f93670b133c92ed444c5

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce424a80d4d9b078ef46d1a7d2abceb184361c12c1c71bf2e9e889b01210e404
MD5 5a4df4e6b0c0019ab2d49a2efe817aa0
BLAKE2b-256 21d518b34bd3be8d9e7003d657820072830780fe55fefe9556c287e2e1a0a798

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp310-cp310-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp310-cp310-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 b4a22497c4aa76b0be35c562f38375ba4f2ba9ea974c54a4b3037e218b5fd45c
MD5 83520804b0d827653c3eeff7fd08ec7f
BLAKE2b-256 85e08d02c81037f852eb74cdaff3970f0943f29098c8ec38b31497b1fa61e95c

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pmma-5.0.9-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 859.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dca075344e717181ada3173c2a1570df510124d41e9b1387ced42370b7648338
MD5 89c71edf153e4afc9a145b124472ea5a
BLAKE2b-256 d7ab885a377987d740a1d467c2c9bf2065f57d3c106f67e9fbb770861fa8577c

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b6a4881b8e7f02b7168777519d4e4e515a10fa2aea0f19ee2ad529f25aaeb86
MD5 8e3f6c2374c4d42000ba32bca096933c
BLAKE2b-256 5406d0a83293ce8e1e6741c400704a2b85df0ac6c4a9cc321ffc667394500603

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp39-cp39-macosx_14_0_universal2.whl.

File metadata

  • Download URL: pmma-5.0.9-cp39-cp39-macosx_14_0_universal2.whl
  • Upload date:
  • Size: 816.7 kB
  • Tags: CPython 3.9, macOS 14.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp39-cp39-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 4adf96414bd1335071848c2f91d6a528f3d4cbe0e4ec4fa300125acbee1ed6e8
MD5 933589351d1033f2aef172506fa1444c
BLAKE2b-256 329ad2d9dd29e9ba42aa946a45ea131df466f367d54facf735db1a671f014382

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pmma-5.0.9-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 864.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e851286161ea5bd063136fc24f84b394029198a0da9331972b6b4e99cde585a0
MD5 617630bbb16d00e0701c58494af6b9ce
BLAKE2b-256 bcc4c1a3c6237b37b76cbbb1ceb98c4f80f1ed1c750e013c2d1db8c05364d549

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pmma-5.0.9-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b81cc7eb5cea0e61bb4aaa55dc7590cde110dc39eec586d94b6841d5213eb2f
MD5 083fc3bf7af4cf31bee60417798cecaf
BLAKE2b-256 9fcc1ebfb968a9f1f914bc4c50bc3fa7a06abed716cd81feda8f9898b30f896a

See more details on using hashes here.

File details

Details for the file pmma-5.0.9-cp38-cp38-macosx_14_0_universal2.whl.

File metadata

  • Download URL: pmma-5.0.9-cp38-cp38-macosx_14_0_universal2.whl
  • Upload date:
  • Size: 822.8 kB
  • Tags: CPython 3.8, macOS 14.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pmma-5.0.9-cp38-cp38-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 d5e075d72e102934eb53346c02fecbb4a0b94c9be5a8823d31bd8a5ecf3a17d2
MD5 ac62305822a6f5dcdf675a5f341ba1d4
BLAKE2b-256 0326d2b15906f4deb3f85640ae8fd55fe258f98fc5df7d46259f3ec75b927996

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page