{"id":16842606,"url":"https://github.com/rofl0r/woody-opl","last_synced_at":"2026-03-12T16:04:09.468Z","repository":{"id":138312046,"uuid":"311398105","full_name":"rofl0r/woody-opl","owner":"rofl0r","description":"DOSBOX \"woody\" opl3 emulator for C projects","archived":false,"fork":false,"pushed_at":"2020-11-09T16:27:27.000Z","size":30,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-11T05:52:09.789Z","etag":null,"topics":["adlib","c","opl2","opl3","woody"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rofl0r.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-09T16:26:35.000Z","updated_at":"2024-11-17T22:21:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"ffa6024c-f0c6-42e4-82d9-cd389a3a59f1","html_url":"https://github.com/rofl0r/woody-opl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rofl0r/woody-opl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fwoody-opl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fwoody-opl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fwoody-opl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fwoody-opl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rofl0r","download_url":"https://codeload.github.com/rofl0r/woody-opl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rofl0r%2Fwoody-opl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30431566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adlib","c","opl2","opl3","woody"],"created_at":"2024-10-13T12:47:09.381Z","updated_at":"2026-03-12T16:04:09.437Z","avatar_url":"https://github.com/rofl0r.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\"Woody\" OPL3 emulator\n=====================\n\nthis is the so-called woody opl3 emulator, ripped from DOSBOX svn rev 4391\n(November 2020), with full commit history and some tiny touch-ups to make\nit compile as C instead of C++.\n\nmany adlib/OPL-playing programs use some version of this emulator, but with\nC++ and CMake crap added to it, because windows users have been brainwashed\ninto believing C is inferior to C++, particulary because MSVC++ doesn't even\nproperly support C. what they don't know is that C compiles a lot faster,\nis much simpler and has much more widespread toolchain support.\napart from that it has a stable ABI, and allows to produce much slimmer\nexecutables because libstdc++ (the C++ standard library) doesn't need to\nbe linked against the executable.\n\nUsage:\n======\n\ndrop files into your project, include opl.h, and use in your code:\n\n    // initialize the chip(s). samplerate is typicallly 44100.\n    adlib_init(samplerate);\n\n    // write a value into a register.\n    adlib_write(reg, val);\n\n    // get a sample from the chip.\n    int16_t sample;\n    adlib_getsample(\u0026sample, 1);\n\nthen compile it and link opl.c to your code.\nthat's pretty much all there is to it.\n\ncheck https://github.com/digital-sound-antiques/emu2413/blob/master/sample2413.c\nfor a good example of what and how to feed into the chip, and when to read\nsamples (and how many) from it.\nalthough the example uses a different chip emulator, the strategy is identical.\n\n\nLicense\n=======\nunfortunately, the code is licensed as LGPL 2.1.\n\nTODO\n====\ncurrently the code is not library-safe, as it uses global variables.\noptimally all global state is put into a \"context\" struct and a pointer to\nthe struct passed to all functions that need access to those variables.\nalso it would be nice to poke the original authors whether they could relicense\nthe code as MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fwoody-opl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frofl0r%2Fwoody-opl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frofl0r%2Fwoody-opl/lists"}