Releases: PycraftDeveloper/PMMA
Python Multi-Media API
Python Multi-Media API (PMMA)
PMMA is a Python module targeted at helping you build applications in the Python programming language. It does this by providing its own tools covering areas like 2D graphics, noise generation, audio and video playback, event handling, text rendering and much more. The API has two fundamental goals; to make application development in Python easier, whilst also focusing on improving the performance and efficiency of the end result. The API is also being engineered with compatibility with other python modules, like Pygame, PIL and Numpy and is ideal for prototyping, application development, simulations, graphics intensive tasks and game development.
Features
PMMA 5 is here! Here is a list of all the changes since our last version, PMMA 4.2.2:
- We have taken over 40% of the core API and migrated it into C++. This provides massive improvements to performance and memory and opens doors to additional features in future. In testing, PMMA 5 averages 97.53x faster than PMMA 4 is rendering as a worse case scenario, and is often able to exceed that ratio in typical application rendering scenarios.
- We have made the installation and setup process for PMMA even easier, by providing pre-compiled versions of the API instead of relying on the end-user to compile the API themselves, its now just
pip install pmmaand go! - We have introduced an early preview of our text rendering API that will see extensive work over the lifetime of PMMA 5 and continued maintenance beyond.
- We have significantly improved the interface for Perlin and Fractal Brownian motion and introduced AVX2 and AVX-512 acceleration that is automatically used on supported platforms.
- We have significantly improved the interface for shape rendering, enabling color and position values to be dynamically generated (from random, Perlin noise or Fractal Brownian motion)
- We have added the animations API, which has replaced the transitions API and will also see extensive work over the lifetime of PMMA 5 and beyond.
- We have introduced type-hint support across the whole API to make it even easier to use.
- We have re-worked the events API and in doing so introduced much more customizability.
- We have made numerous improvements to the logging and profiling API, designed to bring them closer to the passport system, and simplify where logs are stored and managed.
- We have made numerous smaller bug fixes and improvements to the API and will continue to do so as the API matures.
Features coming soon
With the release of PMMA 5 we enter a new era for the API. To date each major revision of the API has seen a major architecture rework, with PMMA 5 we believe the underlying structure for the API is now at its best. This means we can focus on building out PMMA from now on with new and improved features. This is the official release of PMMA 5 but we are not done with this generation of the API, as we will be migrating from OpenGL to BGFX, introducing themes and widgets support, collisions for 2D shapes, expanding our animations API and introducing physics and features that didn't make it into the launch of PMMA 5 through minor revisions in the near future.
PMMA 6 will then begin the process of introducing 3D graphics and a slew of supporting features to the API, whilst putting additional focus on building backwards compatibility and reliability.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here
Issues At Launch
The release of PMMA 5 brings with it plenty of new features which we explored earlier. However some features are missing from this launch and will be re-introduced as a priority. In most cases these features need additional attention that is better given post-launch, like for example video rendering which is absent from PMMA 5.0.0 as it will be reworked after our transition from OpenGL to the BGFX graphics API (it didn't make much sense with our limited team size to rework these areas twice, for the launch of PMMA 5 and again for the transition.)
Additionally, some features like the Camera component will not be returning for the duration of PMMA 5 as they serve no purpose in this update and will only become useful with the release of PMMA 6.
Finally, this is a major architecture change and it will take some time to identify and diagnose every potential issue - if you encounter a problem feel free to let us know here as a small team any feedback would be invaluable.
Final Points
Did you find something that didn't work as expected or think could be improved, please either raise it as an issue here and we will make amendments to the API. Alternatively, as a small team if you want to help contribute that would be equally invaluable!
Python Multi-Media API
Python Multi-Media API (PMMA)
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Optimisation: Fully implemented lazy loading internally for references to additional PMMA and 3rd party modules, more than halving the memory usage of PMMA in most applications.
- Bug-fix: Numerous improvements to the AdvMath, Tkinter, Threading and Audio module due to beginning to introduce more robust and repeatable testing methods.
- Bug-fix: Updated internal version codes to ensure proper update checking.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Optimisation: Fully implemented lazy loading internally for references to additional PMMA and 3rd party modules, more than halving the memory usage of PMMA in most applications.
- Bug-fix: Numerous improvements to the AdvMath, Tkinter, Threading and Audio module due to beginning to introduce more robust and repeatable testing methods.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the second major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug-fix: Shapes now respond better to positioning and aspect ratio changes on display resizing.
- New feature: Rectangles now have a customisable border-radius.
- New feature: Added update checking to PMMA!
- Improvement: Massively accelerated the shape rendering process by around 60x in a worst-case scenario.
- Improvement: Brought number converters closer to their Cython representation, for performance improvement.
- Improvement: Shapes now check to see if their geometry is cached before creating it, for faster shape creation.
- Improvement: Significantly reduced the vertex count for shapes, by better approximating the number of vertexes based on the resolution of the window.
- Improvement: Significantly reduced the overall memory footprint of PMMA.
- Improvement: Cleaned-up and removed components of PMMA that need to be redesigned (images and text).
- Improvement: Significantly improved the way PMMA handles display resizing.
- Improvement: Numerous optimisations to Cython performance.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug fix in shape rendering so now changes to a shape position are accurately reflected onscreen for the ellipse, arc and radial polygons.
- Significant performance improvements to video playback.
- PMMA can now detect when a video has no audio, and won't bother playing it to improve its efficiency further.
- PyPi packaging improvements.
- GitHub release optimizations.
- Bug fix missing PMMA components in distributables.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug fix in shape rendering so now changes to a shape position are accurately reflected onscreen for the ellipse, arc and radial polygons.
- Significant performance improvements to video playback.
- PMMA can now detect when a video has no audio, and won't bother playing it to improve its efficiency further.
- PyPi packaging improvements.
- GitHub release optimizations.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug fix in shape rendering so now changes to a shape position are accurately reflected onscreen for the ellipse, arc and radial polygons.
- Significant performance improvements to video playback.
- PMMA can now detect when a video has no audio, and won't bother playing it to improve its efficiency further.
- PyPi packaging improvements.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug fix in shape rendering so now changes to a shape position are accurately reflected onscreen for the ellipse, arc and radial polygons.
- Significant performance improvements to video playback.
- PMMA can now detect when a video has no audio, and won't bother playing it to improve its efficiency further.
- PyPi packaging improvements.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
Features
- Bug fix in shape rendering so now changes to a shape position are accurately reflected onscreen for the ellipse, arc and radial polygons.
- Significant performance improvements to video playback.
- PMMA can now detect when a video has no audio, and won't bother playing it to improve its efficiency further.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/
Python Multi-Media API
Python Multi-Media API (PMMA)
Welcome to the first ever major release of PMMA!
PMMA is a powerful API designed to help make the development of applications using the programming language Python easier and faster. PMMA is, by design, built to work in a variety of different applications, but also includes a lot of the tools commonly used in the game development industry.
PMMA includes standard support for efficient 2D and 3D pipelines using OpenGL and hardware acceleration in a variety of components as standard. Where the raw speed of hardware acceleration isn’t available, we will automatically transfer some components of PMMA over from Python to Cython for an additional increase in speed, but everything is wrapped up through Python, so it is super easy to use and compatible with most IDEs.
By default, PMMA is designed to be as fast as possible, but it has massively improved the efficiency of your Python application, far outstripping the efficiency of competing graphics APIs like Pygame and Pyglet in some environments*.
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.
Features coming soon
Now that we have finished this major version of PMMA, we have begun to plan the next major update to PMMA and there are a lot of big changes and exciting new features on their way. Whilst not wanting to give away too much yet, we will be doubling down on our speed and efficiency philosophies and will also begin to expand to include more complex 2D shapes. We also will begin to transition development from focusing on 2D objects to 3D objects. This will see the expansion of our existing shapes API to include support for 3D shapes. We will also start to look into mechanics like Physics, Collisions and Path Finding. Additionally, expect to also see some major improvements to shaders and the ability to load your own custom 3D models and finally the ability to load and use images and text, with the ability to also texture and add gradients to your 2D and 3D shapes! Exciting times ahead.
Documentation
The documentation for PMMA is something we are committed to and are going to begin working on following the release of this major version of PMMA. The documentation for PMMA can be found here: https://pmma.readthedocs.io/en/latest/
Issues At Launch
There are a few problems with PMMA that exist at present, however these issues are largely minor and delaying PMMA's release and the introduction of new features to fix these problems seem unnecessary - they will be patched in a future release of PMMA.
- There are some issues with a limited number of real time effects, however the most common effects are unaffected by this issue.
- Perlin noise generation for arrays of any dimension and size isn't as user friendly as we would like. This does not effect the generation of a single Perlin noise value for a given number of dimensions.
- Some shapes do not have their positions updated as expected.
Final Points
Hey! Did you spot something that doesn’t look right or could be better with the documentation? Let us know by raising it as an issue, or feel free to fork the project and improve the documentation yourself! If you spot a mistake or something we missed or should add to PMMA itself, please also feel free to raise it as an issue and we will work with you to pin down exactly what you're looking for so we can make PMMA better for you – or alternatively feel free to fork it and make the change yourself! PMMA is completely open source and any help is always appreciated!
*It’s important though, in mentioning PyGame that PMMA would not be possible without Pygame and the large community surrounding it, as Pygame first inspired me to make this project, and also provides a lot of the low-level references used in PMMA for things like window creation and event handling – so make sure to go and check out PyGame here: https://www.pygame.org/


