CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Mon, 25 Aug 2025 06:45:48 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20140722134415
location: https://web.archive.org/web/20140722134415/https://github.com/doublec/pure-ogg-player
server-timing: captures_list;dur=0.860708, exclusion.robots;dur=0.031920, exclusion.robots.policy;dur=0.014048, esindex;dur=0.015529, cdx.remote;dur=30.958820, LoadShardBlock;dur=177.461602, PetaboxLoader3.datanode;dur=58.854712
x-app-server: wwwb-app222
x-ts: 302
x-tr: 304
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app222; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Mon, 25 Aug 2025 06:45:49 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: GitHub.com
x-archive-orig-date: Tue, 22 Jul 2014 13:41:58 GMT
x-archive-orig-transfer-encoding: chunked
x-archive-orig-status: 200 OK
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-x-xss-protection: 1; mode=block
x-archive-orig-x-frame-options: deny
x-archive-orig-content-security-policy: default-src *; script-src assets-cdn.github.com www.google-analytics.com collector-cdn.github.com; object-src assets-cdn.github.com; style-src 'self' 'unsafe-inline' 'unsafe-eval' assets-cdn.github.com; img-src 'self' data: assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com *.wp.com; media-src 'none'; frame-src 'self' render.githubusercontent.com www.youtube.com assets.braintreegateway.com; font-src assets-cdn.github.com; connect-src 'self' ghconduit.com:25035 live.github.com uploads.github.com s3.amazonaws.com
x-archive-orig-vary: X-PJAX
x-archive-orig-etag: "cd77927b910983230c7336b2c7e668df"
x-archive-orig-set-cookie: _gh_sess=eyJzZXNzaW9uX2lkIjoiNGY2YzE2YWUwYWU4Y2FkNTk1ZjVkNmM0Mjg4MzFmYzciLCJyZWZlcnJhbF9jb2RlIjoiaHR0cDovL2JsdWlzaGNvZGVyLmNvLm56LyIsInNweV9yZXBvIjoiZG91YmxlYy9wdXJlLW9nZy1wbGF5ZXIiLCJzcHlfcmVwb19hdCI6MTQwNjAzNjUxOCwiX2NzcmZfdG9rZW4iOiJmNnFkaGdOYTg0SkI4RjQvZEU3UzJ6b1lEZk1VZUExVVBpU0ZPNHg5bGFRPSJ9--61636030f646426007c5167db6a3429c0dc99762; path=/; secure; HttpOnly
x-archive-orig-x-github-request-id: C0632073:6434:3BB820F:53CE6A25
x-archive-orig-strict-transport-security: max-age=31536000; includeSubdomains
x-archive-orig-x-content-type-options: nosniff
x-archive-orig-vary: Accept-Encoding
x-archive-orig-x-served-by: 1c0ce1a213af16e49d5419559ef44f50
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: windows-1252
x-archive-orig-content-encoding: gzip
memento-datetime: Tue, 22 Jul 2014 13:44:15 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Tue, 22 Jul 2014 13:44:15 GMT", ; rel="memento"; datetime="Tue, 22 Jul 2014 13:44:15 GMT", ; rel="next memento"; datetime="Sat, 21 Nov 2020 15:30:58 GMT", ; rel="last memento"; datetime="Sat, 21 Nov 2020 15:30:58 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: archiveteam_archivebot_go_075/bluishcoder.co.nz-inf-20140722-132547-a6u6s-00000.warc.gz
server-timing: captures_list;dur=0.603020, exclusion.robots;dur=0.026921, exclusion.robots.policy;dur=0.015326, esindex;dur=0.014002, cdx.remote;dur=12.432866, LoadShardBlock;dur=143.272936, PetaboxLoader3.datanode;dur=121.448299, PetaboxLoader3.resolve;dur=174.537024, load_resource;dur=184.254657
x-app-server: wwwb-app222
x-ts: 200
x-tr: 456
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
doublec/pure-ogg-player · GitHub
Skip to content
An Ogg player written in the Pure programming language
Fetching latest commit…
Cannot retrieve the latest commit at this time
![]() |
COPYING | ||
![]() |
README | ||
![]() |
al.pure | ||
![]() |
alc.pure | ||
![]() |
build.sh | ||
![]() |
ogg.pure | ||
![]() |
ogg.pure.tail | ||
![]() |
player.pure | ||
![]() |
vorbis.pure | ||
![]() |
vorbis.pure.tail |
README
pure-ogg-player =============== This is Pure library for playing Ogg files and contains various utility functions for manipulating them. It is very much a work in progress and currently only plays Ogg files containing Vorbis streams. OpenAL is used for audio playback. Building ======== Some files in the archive are automatically generated using 'pure-gen' run against the OpenAL and libogg header files. You can regenerate these by running: $ sh build.sh The generated files are also included here so you don't need to do this step. Usage ===== $ pure -i player.pure Play a vorbis file: > play_vorbis (sources!0) "test.ogg"; Load an Ogg file getting a lazy list of all pages in the file: > using namespace ogg; > let p = file_pages "test.ogg"; > p; ogg_page (#<pointer 0x9e61cc8>,[...]):#<thunk 0xb7259b38> Get a list of all packets and the serial number of the first logical bitstream in the list of pages: > let (stream1,serialno) = packets p; > serialno; 1426627898 > stream1; ogg_packet (#<pointer 0x9dd98f0>,[...]):#<thunk 0xb725bce0> Get the next logical bitstream: > let p2 = filter (\x->ogg_page_serialno x ~= serialno) p; > p2; #<thunk 0xb725dc30> > let (stream2,serialno2) = packets p2; > serialno2; 629367739 > stream2; ogg_packet (#<pointer 0x9cfcf08>,[...]):#<thunk 0xb725c988> Note that all these results are lazily evaluated so the entire file is not loaded into memory. If we look at the original list of pages you'll see what has been read so far (two pages): > p; ogg_page (...):ogg_page (...):#<thunk 0xb725dd98> Get all the streams in the file: > let s = all_streams p; Get all the vorbis streams: > let v = vorbis_streams s; Get the first vorbis stream: > let (v1, _) = v!0; Decode the vorbis header packets and intialize a vorbis decoder for the first vorbis stream: > let decoder = vorbis_header v1; Get a lazy list of all the decoded PCM data from the vorbis stream: > let pcm = pcm_data decoder; Troubleshooting =============== 1) 100% usage when loading player.pure on Linux The seems to be a problem with the OpenAL library shipping with Ubuntu 9.10. I fixed this by building libopenal-soft from source: https://repo.or.cz/w/openal-soft.git Author ====== Comments and suggestions can be made to the author: Chris Double chris.double@double.co.nz https://bluishcoder.co.nz The github repository for this library is: https://github.com/doublec/pure-ogg-player