OPL2/3 Adlib emulation
Project description
PyOPL: OPL2/3 emulation for Python
- Copyright 2011-2012 Adam Nielsen malvineous@shikadi.net
- Copyright 2019 Adam Biser
- Copyright 2024 Laurence Dougal Myers laurencedougalmyers@gmail.com
http://www.github.com/Malvineous/pyopl
PyOPL is a simple wrapper around an OPL synthesiser so that it can be accessed from within Python. It uses the DOSBox synth, which has been released under the GPL license.
PyOPL does not include any audio output mechanism, it simply converts register and value pairs into PCM data. The example programs use PyAudio for audio output. Note that PyGame is not suitable for this as it lacks a method for streaming audio generated on-the-fly, and faking it by creating new Sound objects is unreliable as they do not always queue correctly.
To install it:
pip install PyOPL
The code is compiled like this:
pip install build
python -m build
Install the build wheel:
python -m pip install .
This library is released under the GPLv3 license.
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
Built Distributions
Hashes for PyOPL-2.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80de71248ddc0c5f48a8c5040efae369df32c176dbd4c6ade412fe5b01a5fd29 |
|
MD5 | ce8cef841aee52a17724173b22b2d908 |
|
BLAKE2b-256 | d7bb8165c3f8583b3c54a638ece27778dc2185b7bf29bebf06295d29ac088c6e |
Hashes for PyOPL-2.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64dd144d2aa566afccedd1eb6ff67d645ffb94df7c8fcd47ee6a3975b0493dbf |
|
MD5 | a53707aa8432938493446c7bc73970b7 |
|
BLAKE2b-256 | d0b739866af537322232d6d9b474a3561b97e645b3b80d16edcb04a2141161aa |
Hashes for PyOPL-2.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f82dc3c617e81cd11f4def37808d214577c5aa0eebf29a75135b10e88ccfbddc |
|
MD5 | 526a6cde3d8461a5f4c9ec823cccc321 |
|
BLAKE2b-256 | a48ce2174e840befab86a714e28e23c4288c17fdf539d697da25a3d8ecbf8104 |
Hashes for PyOPL-2.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a17d48ec06fc30a39fb28effcc29572a4af7ef39c54ef7609ae3200a12cb260d |
|
MD5 | 9065551ea5300f9c48ba111acd1a631b |
|
BLAKE2b-256 | 2c082600b6a2292335e52e6139456e5578ada59be406d2fdb8ffb44783ff445f |
Hashes for PyOPL-2.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4786e52abd3a71ab28fa70a0245ab21928ecf632831bff501aa17f3ad70d91d |
|
MD5 | 66f51ca8b3f973cc0f80699449fbb97a |
|
BLAKE2b-256 | fbf71955f2c8f04b475f8cf74ca5150afbf4d180db0475ec9e9434bae1600e01 |
Hashes for PyOPL-2.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 375b275d40f8bb44b441c6de1d7050fc06264d8a4c9b5c389cb85ec7cb90dae5 |
|
MD5 | 56c2cec7bf71a1a676342b00aa93bde1 |
|
BLAKE2b-256 | 329095cc49b8c032ad7a748f98d9e0fec06bad4dc98e4bb0d5bf5d8e4df4f1c6 |
Hashes for PyOPL-2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baee465211ad2ecf2c212ea3eb4397dba5626fd9c7498cfc24add859e943249f |
|
MD5 | 3fb242b3919835a1dfd5476657fa41eb |
|
BLAKE2b-256 | c6306db3ab66cd15e1761b52652efe7271243ba03dd94a1b13809a99e0e55e38 |
Hashes for PyOPL-2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2ea0121e655716c449cbc62973ff40c70081f486e9b68fdc0b4aa2721a2122e |
|
MD5 | 7b7fb8f582e0990d439a62da487d353c |
|
BLAKE2b-256 | c6dfeaa623e4838c1d2df3896032809561f4e511d63265c0077b25714a6f1978 |
Hashes for PyOPL-2.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ea9cc57dd5daad69613d8c8a1c4d8c06484734f25460dc27d73355c658ed3d8 |
|
MD5 | 74d6e0caaeb81be1ec539178cc8a2268 |
|
BLAKE2b-256 | 123f8789042da706b8365b68923f14f55b9389cdb0405c35fe42b6a6b7d3ee32 |
Hashes for PyOPL-2.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d1cb2f970c8c46ddfa3e334fd74d7ef1b789fc8051c939c3d063c97a76fa9f1 |
|
MD5 | 57a4074c155ca55cae9d0923b085ec83 |
|
BLAKE2b-256 | 09e597251d073bb6a0d4441f426952cc09fb7cb3d36d6f738c8776172dc5eef0 |
Hashes for PyOPL-2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45920b0f76df853e52b9ed9efbb55866044dd001f96d846634afbe92cd1ff270 |
|
MD5 | ff44b378b0c6d6ce8cc70a682acd33a4 |
|
BLAKE2b-256 | 395a55fc5424b7a9491e295d77ad6365aba10605db06728a64f7e7d42fcd91c4 |
Hashes for PyOPL-2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7664172db1a3ab1adaa4fa6621cadbea8f20d2dd8ac3f5e111ca56366abe74bd |
|
MD5 | c7c4fac8b7f270359433d01bdea795da |
|
BLAKE2b-256 | 5ad505c44e5da33cc299af98bc5f651fa8a08288635ae7382cc15c96613a1381 |
Hashes for PyOPL-2.0-cp311-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6704f0f1e3d61b805a64eaf1fc0790377277d5d796532dd5cdd2f53f3cfcc8c0 |
|
MD5 | ed69466314246a9cb4d42aaa51c78bd0 |
|
BLAKE2b-256 | 610583f83cdbc5db59f114182fc53c068507dadeee15f23e62b473d166ed27f5 |
Hashes for PyOPL-2.0-cp311-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5b3f09f98b5e526bb19186e60dc5abe228091e681622082aa0a08ffe046be98 |
|
MD5 | 7aca227a8265ff48f25c4db04d52613b |
|
BLAKE2b-256 | e7c6451b05b2d1e94e97176bd692a9223da0fd10de63e5c0c3afa80ce5cd3014 |
Hashes for PyOPL-2.0-cp311-abi3-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a0f5f75d0f2b4282b1841e41035670d70f7f0afa5c960410f8d4c0e1f9d6191 |
|
MD5 | c7d1c549b3e8e61390f643b0e117a5d2 |
|
BLAKE2b-256 | 636f067cbbaa04ad9ee941a570f54dde69f0c038b33928457cec12f84a65c302 |
Hashes for PyOPL-2.0-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d19abe148871ca8cf8b196992fd4a5fae59c7173ca8ef01cd6ef5b67b964970a |
|
MD5 | e796a5e6f547e1e2f406319f6eb7e2d9 |
|
BLAKE2b-256 | f4a57835b0d99f103292160ac914d890e70abd22bbef7ef00db0c76391841e7c |
Hashes for PyOPL-2.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35f26fe9ce4b847dc37a00513ad04a3346f95bfb4bebc27589d066656d297189 |
|
MD5 | cc74a2e305d57e94214e18c6555fcc96 |
|
BLAKE2b-256 | b7f7fe96a37a9cab0c3935d134ac97209d6352434bea7ab96b51f395336b1680 |
Hashes for PyOPL-2.0-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 372e0862229a3a72eb725a34141688e7ead18524341dc19e3c6baca212adc6e7 |
|
MD5 | c2e466cc1c469457dee63b194fc611e2 |
|
BLAKE2b-256 | 451c9c8093d6f1f7c008779b8238fb33934f44ce78e3199bffb27e84b09ea9f3 |
Hashes for PyOPL-2.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf60cb9abfaf3e32a21d4cfd0757a89e471fe9037aebe6d25695c0e04e7590e6 |
|
MD5 | 9704be4aac55b93f7ecb4d12fa4705fb |
|
BLAKE2b-256 | b7ac3b864c9eaf76a0e9224eff7cc8aedf55bde7d5980bcdafdf5caf8271fcb9 |
Hashes for PyOPL-2.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3854da0392256b6c491efb2cf3f6afffd73ca7ca8e95557908542c07b9a514b |
|
MD5 | 84ff66e3e8a7b41aed0a4b8102de166d |
|
BLAKE2b-256 | 67711d03d8303f54854c51f65a10fc26f39b0d21f46c0de5af1ea7736deebf4d |
Hashes for PyOPL-2.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99373711be8e360ce9ce426ac05bc8ed23d463ecef953f7b655d85cdf3316cae |
|
MD5 | 429567604fe6eccc16c55b1a7500e768 |
|
BLAKE2b-256 | c94839c1760d3321cc6b4b59ba4e745a759ad3c9aa8ce6804c59ba9d36d0723a |
Hashes for PyOPL-2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93c83b17a2b23bc85197da9721df874439c77b9a81d13414f6b4e59ffd9e2657 |
|
MD5 | 15cd1a46347f96866804b48fc957be6d |
|
BLAKE2b-256 | d6aac01115469a51ccc26338a286a091fd1cf3a77a97de459f595413400a98a7 |
Hashes for PyOPL-2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17382838875247e64688d15c319aa11aa4b398309fbda6860622f365ab4a47e3 |
|
MD5 | d46ee65c07da2a82822cd4b88644f10e |
|
BLAKE2b-256 | 0300aec6039d2a9c6c0c4bd7283696ee9b025b0264b2b7627caecbc4a381174f |
Hashes for PyOPL-2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f0871118bd6855eee8a408124f1df523dd6e89fd1bbbb102c0f8c867ff97ef5 |
|
MD5 | e4b749aebdd72a1f8da72a5d7ba26d27 |
|
BLAKE2b-256 | 3f7e19a150fc2ed3079636b608314f20be7a9d9b502ea2addf04a33e6144acba |
Hashes for PyOPL-2.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f739bdaaa8d78eb1956cebabcfdb4822cb98e26b6ea39f93a20e599a33920b21 |
|
MD5 | db551b611c7d61ec5e139aa208ad816f |
|
BLAKE2b-256 | 4e8224d08865aded7bb35b59ef14c95d0386b012c4a3d44e13dcb95b5bc61d67 |
Hashes for PyOPL-2.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3cdd52366fd18a4eb72bfbbaea11d2c711ae61ef60573bfb425b6458fe484cd |
|
MD5 | 39f63b33458081657dc609a1935fd332 |
|
BLAKE2b-256 | 985c7ce173b8a8628890fafa6ead69cdb64f04742914a7a21d7378478b7cd598 |
Hashes for PyOPL-2.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4544a9e14b6288e3c0755e443e312d103b837a5089efd9170bd4f3219c3dc331 |
|
MD5 | 786db0c98df5913d3b6ab5953b716c3f |
|
BLAKE2b-256 | ef8fea08fc6e1b3e42bcf5561dd121522c685b9ddbd61ad1dc6618577804d3eb |
Hashes for PyOPL-2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcf3ae5c7df1bcd7e59f9f9461f2d70e24b895f2c671c67c22676de9bfa93232 |
|
MD5 | 392bf919c1a1c701dd6e7147ea0b54a7 |
|
BLAKE2b-256 | 14a7acdf0c69e9c0c80e0f48cdb9f00a8a126704c09cb433c9898d7ed707cfaa |
Hashes for PyOPL-2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2f07783309d853548df122e09a5d24513116b55a44edd1af4d86d29a73f7972 |
|
MD5 | 3016d586a236662f7c1713b933a7cb69 |
|
BLAKE2b-256 | fc2fc99a267b6f1c295e2adc5ccdea582dae996b4a0b70796cb08c0e001cc966 |
Hashes for PyOPL-2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dda96a7c79d422506e45a9433bde66996b907e99dff87aff5093b545fa9cfc0 |
|
MD5 | ee6562fd77158ab9a0c817417cab03ea |
|
BLAKE2b-256 | 1e29cafdd0c18f848a29766957d43c7129abf342ac40ede7a856843276aad83d |
Hashes for PyOPL-2.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 118b0aead8aa4da20868bed8eb380abe92cc93845df2364894101f651e47712d |
|
MD5 | 468cc51feb885d5dbcc59fb185e5adb8 |
|
BLAKE2b-256 | d25b5e48a96650e2c80e5c7dc8c281e5b763fbf4bb25f413bd6a674a7920a572 |
Hashes for PyOPL-2.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f43109368fa135a5b8fcadf1db2de8e77bc1f62cd8ba1800986ecddde1ff542 |
|
MD5 | 76ea08bbd4212d7dd4e14941e23c01f9 |
|
BLAKE2b-256 | 7d8ee0dad0b24ce00c7fad27f2f9cb8112c07e1bb1b42b88c3c5d4cc5942c919 |
Hashes for PyOPL-2.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 210d506aa53bbab57427e3428ca78e24e464fe204e32d502a164c30e384f316a |
|
MD5 | f314f511e81646da3e99eac513df8593 |
|
BLAKE2b-256 | 7bff7dcb53319b544c24ca63c596f72f351ffe1ea8778685c1cafb5aa69f8a8a |
Hashes for PyOPL-2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a18a2ef571474dd21a01aa7dc84eb5569a0731d9cf78c4856bd50cc31f6a5b92 |
|
MD5 | 7b976063f0088ef0d2bef82958312244 |
|
BLAKE2b-256 | ca0002e2eba8826f165c7eabb5f3b63ee18664933d2398c7d0129c4db7e153e7 |
Hashes for PyOPL-2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24b90e621645e60e1d991ec1b71b7f0ffecf09dbe9f6b0358faffd0a88c47bec |
|
MD5 | df22fcc57f312e576884287822ce5549 |
|
BLAKE2b-256 | b7220aa2d71e88c4087b37be4037abf80172294e80b1d486f26ffdeac7f340c5 |
Hashes for PyOPL-2.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b500bc7119d3988c4e8f64101f297dcfbe01febb96e5968f1169864cacd8a4c |
|
MD5 | d071a0594cfb6a8ba28d599b74ea2948 |
|
BLAKE2b-256 | 7ab7159dc90bb28fd750db223d422c659a8914d4d68a760c46a0c86e0142993e |