From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=HECqjW69; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 3AF6D40085 for ; Wed, 17 Dec 2025 14:03:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:content-transfer-encoding:mime-version:date: message-id:to:subject:reply-to:sender:list-id:list-help: list-subscribe:list-unsubscribe:list-post:list-owner: list-archive; bh=8dfbECYZzpK3KmgCqmuqcGsIwYdf0b7WHs+/ssdwEQ0=; b=HECqjW69/u3eAPDcRe7/SbJ2ka2W4f9PlWG9NHMEqqYxANmWqDRkDqka elBSAxSdHmee3uN7tvkneLJD1Eex9SYrrOFL+AoCoCTSODZbeSV3bYUHg tdfglbDSkdfKEjfCT7PQt/TLd2b1pKMiEJ7LSJ0SypOUE8M3yaU8pDb/U g=; X-CSE-ConnectionGUID: cNr2pVJVQ6unkUsGCoA4Tg== X-CSE-MsgGUID: XEdtWBVKRMipe/f89iR8IA== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.21,155,1763420400"; d="scan'208";a="254922187" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 17 Dec 2025 15:03:05 +0100 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 58E4381E90; Wed, 17 Dec 2025 15:03:05 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 926E681E68 for ; Wed, 17 Dec 2025 15:02:57 +0100 (CET) X-CSE-ConnectionGUID: MYyaw/HcREOXsk1kFkomww== X-CSE-MsgGUID: eg8zv9hlRS2+9BYQyg1Odw== IronPort-SDR: 6942b80d_KcE3QJVq7OOMI5vDHKxDsZKjXmMkfH3hBCR4KgzeGmawPAw kQgVeCk10LtjzFNKZf6oX+0KQU2cHga9pvEnMkw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0GjAwBztkJpd8DNE4taFnOEEEABRWAyBwhJhFWDT65BD?= =?us-ascii?q?wEDAQ03GAIEAQEDAQORbAIfBgEENBMBAgQBAQEBAwIDAQEBAQEBAQEBDQEBB?= =?us-ascii?q?QEBAQIBAQIEBgECEAFDSYZPDYJbO4IWLA2BJx0BATgmDgIYDgKDcwGCJ0wDB?= =?us-ascii?q?A2waoEygQGCDAEBBoEIgWDbIwMGgR0uiFMBiw0bgg2BFScbgXiGPoMOOoIvg?= =?us-ascii?q?iaBDpAWBolfSGwWeCwBVRMNCgsHBV6BCAM1DAsqFW4yHYEjPhdzgRSDSR5oD?= =?us-ascii?q?waBEYNPiRgPik0DCxgNSBEsNxQbBj5uB5QjToNcEII9C8ZmhCaEcIculgaXY?= =?us-ascii?q?AaTBAGZBo4IllABhGeBfyOBXE0wCGUBgjw/EAMZD5c0wzZDNDwCBwEKAQEDC?= =?us-ascii?q?YVFjFmBSwEB?= IronPort-PHdr: A9a23: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 1Xqc95rfXANEuE1ubRt7ExvY4y9 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:zvWBlKl5rBJoMHkTBKSyQx7s9ivpDfIr3DAbv31ZSRFFG/Fw8P rBoB1773DJYVMqM03I9urhBEDtex/hHOBOkOss1MaZPTUO0VHAROsO0WKI+UyCJ8SRzJ856U 4ZSdkbNPTgSVxhyd336AOkE9Am2rC8gceVuds= X-Talos-CUID: 9a23:EyxxmWG0PWfpisqUqmJCxV8dBYcFeUfw60fLIBa7J2VuTaKKHAo= X-Talos-MUID: =?us-ascii?q?9a23=3ATZKZ2g1HdyigwjtqOwGWE7dQFDUj7qv+Gl5ckZE?= =?us-ascii?q?8gJPHZAZBAiaS1RO7Xdpy?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.21,155,1763420400"; d="scan'208";a="133967489" X-MGA-submission: =?us-ascii?q?MDEfETfo8ID16CaaHlQF85Ad0z1J+bxacewhh3?= =?us-ascii?q?txvPkQZqXt3CNHefE2Rb17PlcyHftOVP6Gsry9f6+mqH3rvRAc2D/McT?= =?us-ascii?q?3YYxkR+CQioafN3r+leYNelZ/aKqRshlV71BJj34ndIGohzN8HkerfOx?= =?us-ascii?q?ui181PGDh5JvVKb4e/bOxVEg=3D=3D?= Received: from poseidon.mpi-klsb.mpg.de ([139.19.205.192]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2025 15:02:53 +0100 Received: from max.mpi-klsb.mpg.de ([139.19.86.27]:56076) by poseidon.mpi-klsb.mpg.de (envelope-from ) with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.2) id 1vVs76-0000000BEqF-17w5; Wed, 17 Dec 2025 15:02:50 +0100 Received: from [37.140.254.201] (port=44457 helo=smtpclient.apple) by max.mpi-klsb.mpg.de (envelope-from ) with esmtpsa (TLS1.2:ECDHE_SECP256R1__RSA_SHA256__AES_256_GCM:256) (Exim 4.96) id 1vVs75-005ajv-35; Wed, 17 Dec 2025 15:02:47 +0100 From: Andreas Rossberg Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.200.81.1.6\)) Date: Wed, 17 Dec 2025 15:02:26 +0100 Message-Id: To: caml-list@inria.fr X-Mailer: Apple Mail (2.3864.200.81.1.6) x-ms-reactions: disallow Subject: [Caml-list] [ANN] Camp, the Caml Amp Reply-To: Andreas Rossberg X-Loop: caml-list@inria.fr X-Sequence: 19414 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: Archived-At: Happy to share =E2=80=9CCamp=E2=80=9D, the Caml Amp =E2=80=94 an = old-school music player heavily inspired by good old Winamp, with a = focus on decent music library and playlist handling. I was fed up with Winamp being dead and lacking features I wanted, so I = went into full-on nerd mode and implemented my own opinionated = replacement, all in OCaml using the Raylib library: https://mpi-sws.org/~rossberg/camp/ If you have not yet been sucked in by the streaming cartels, you might = find it useful. - Runs on Windows, Mac, and Linux - Support for WAV, FLAC, MP3, OGG, QOA, MOD, and XM - Advanced music library management with many browse and search features=20= - Elaborate playlist manipulation and query-based =E2=80=9Csmart=E2=80=9D = playlists - Animated user interface styled after hifi when it still looked good (no corners were rounded in the making of this app) Enjoy, /Andreas