{"id":21347071,"url":"https://github.com/yann39/audio-player","last_synced_at":"2026-05-21T04:07:08.381Z","repository":{"id":224230043,"uuid":"753064132","full_name":"Yann39/audio-player","owner":"Yann39","description":"Windows MFC application for playing MP3 audio files","archived":false,"fork":false,"pushed_at":"2024-02-24T16:44:55.000Z","size":2702,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-09T00:41:59.984Z","etag":null,"topics":["cplusplus","fmod","fmodex","mfc","mp3-player"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yann39.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-02-05T11:56:43.000Z","updated_at":"2024-02-24T16:43:30.000Z","dependencies_parsed_at":"2024-02-24T17:49:36.911Z","dependency_job_id":null,"html_url":"https://github.com/Yann39/audio-player","commit_stats":null,"previous_names":["yann39/audio-player"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yann39%2Faudio-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yann39%2Faudio-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yann39%2Faudio-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yann39%2Faudio-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yann39","download_url":"https://codeload.github.com/Yann39/audio-player/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243822277,"owners_count":20353499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cplusplus","fmod","fmodex","mfc","mp3-player"],"created_at":"2024-11-22T02:12:32.691Z","updated_at":"2026-05-21T04:07:03.343Z","avatar_url":"https://github.com/Yann39.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Audio player\n\nWindows **MFC** application for playing **MP3 audio files**.\n\n![Version](https://img.shields.io/badge/Version-1.0.0-2AAB92.svg)\n![Static Badge](https://img.shields.io/badge/Last%20update-06%20Dec%202007-blue)\n![Version](https://img.shields.io/badge/Fmod-3.75-white.svg)\n\n---\n\n# Table of Contents\n\n* [About the project](#about-the-project)\n* [Usage](#usage)\n* [Technical details](#technical-details)\n    * [FMod Ex library](#fmod-ex-library)\n    * [Program](#program)\n        * [UML class diagram](#uml-class-diagram)\n        * [Generated classes](#generated-classes)\n        * [Created classes](#created-classes)\n* [License](#license)\n\n# About the project\n\nThe purpose of this project was to create a **Windows MFC** (**M**icrosoft **F**oundation **C**lass library) application for playing **MP3 audio files**.\n\nThe goal is to develop an audio player with a classic graphical interface, including a play, pause/stop button, volume control, skip to next/previous track,\nand a playlist with the ability to add, delete and reorganize tracks, as well as saving and loading a playlist.\n\nThis program was part of a school project and was created in **December 2007**.\n\nIt was originally created with **Microsoft Visual Studio 2005**.\n\n# Usage\n\nJust run the _LecteurAudio.exe_ file from the _Release_ directory, then play with the UI :\n\n![Main interface](doc/main-interface-old.png)\n\n\u003e [!IMPORTANT]\n\u003e You must have the **FMod Ex** library (_fmodex.dll_) in the same folder.\n\nIt may look a little strange on newer operating systems as I used some images to represent the buttons :sweat_smile: but it should still work fine :\n\n![Main interface](doc/main-interface.png)\n\n# Technical details\n\n## FMod Ex library\n\n\u003cimg alt=\"Fmod logo\" src=\"doc/logo-fmod.svg\" height=\"32\"/\u003e\n\nThe **FMOD** library basically allows to read and manage audio files, it is a cross-platform sound management library available for many languages.\nIt is free for personal use.\n\nThe **FMOD Ex** version of the library has been used (_FMOD 3 Programmers API Version 3.75_), which makes very easy to write audio applications for most of the .NET platform\nlanguages, namely C, C ++, C #, Delphi and Visual Basic.\n\nFMOD (v3.75) supports no less than 22 music formats:\n\n- AIFF : Audio Interchange File Format\n- ASF : Advanced Streaming Format, includes support for audio tracks in video streams\n- ASX : Playlist format exploitable thanks to the FMOD Ex tag API\n- DLS : DownLoadable Sound format for MIDI Sounds\n- FLAC : Lossless compression codec\n- FSB : FMOD Sample Bank format generated with FSBank and FMOD designer tools\n- IT : Sequential format Impulse tracker. Does not require the presence of DirectX to be played.\n- M3U : Playlist format exploitable thanks to the FMOD Ex tag API\n- MID : MIDI format using the operating system or DLS patches\n- MOD : Sequential format Protracker / Fasttracker and other sequential formats\n- MP2 : MPEG I / II Layer 2\n- MP3 : MPEG I / II Layer 3, with VBR support\n- OGG : Format Ogg Vorbis\n- PLS : Playlist format exploitable thanks to the FMOD Ex tag API\n- RAW : Raw Format. The user can specify the number of channels, format etc.\n- S3M : ScreamTracker Sequential Format 3\n- VAG : Format specific to PS2 / PSP\n- WAV : Microsoft Wave files, including compressed Wave files.\n- WAX : Playlist format exploitable thanks to the FMOD Ex tag API\n- WMA : Windows Media Audio Format\n- XM : FastTracker 2 Sequential Format\n- XMA : Format specific to Xbox 360\n\nFMOD Ex is available for download from the official FMOD website at the following address: http://www.fmod.org\n\n## Program\n\n### UML class diagram\n\n![UML class diagram](doc/uml-class-diagram.png)\n\n### Generated classes\n\nThe application is named \"LecteurAudio\", the following classes have been generated when creating the Visual Studio project :\n\n- _LecteurAudio.h_ / _LecteurAudio.cpp_\n- _LecteurAudioDlg.h_ / _LecteurAudioDlg.cpp_\n- _Ressources.h_\n- _stdafx.h_ / _stdafx.cpp_\n\nThe program is a dialog-based **MFC** application, using the FMOD Ex library.\n\n`LecteurAudio` is the \"main\" class which initializes the application using the `InitInstance()` method.\nActually, the `Initinstance()` function of the application class sets up the dialog box and assigns the window address to the mainframe pointer (`m_pMainWnd`).\nThe `AfxGetMainWnd()` function will then return the address of the dialog box.\n\n`LecteurAudioDlg` is the class generated for the dialog box, and is used to implement all dialog box functions.\nThe project generator automatically implements the code required to read the application's menu and manage the application's minimization.\nThese features can be found in the dialog box's `OnInitDialog()` and `OnPaint()` functions respectively.\n\n`Resources.h` is simply a file used to define the resources required by the dialog box (images, icons, buttons, etc.).\nAn ID is defined for each object and an integer associated with this constant.\n\n`Stdafx` is a source file for including standard system include files or project-specific include files that are frequently used and rarely modified.\nThis makes it possible to generate pre-compiled header files, thus reducing program compilation time.\n\nThere are also HTML help files (`AudioPlayer.hhc`, `AudioPlayer.hhk` and `AudioPlayer.hhp`).\n\n### Created classes\n\nThe following classes have been created to handle some specific functionalities :\n\n- _FunctionsFmod.h_ / _FunctionsFmod.cpp_\n- _Functions.h_ / _Functions.cpp_\n- _HoldButtonAvancer.h_ / _HoldButtonAvancer.cpp_\n- _HoldReculerButton.h_ / _HoldReculerButton.cpp_\n\n`FunctionsFmod` is a class in which we've defined all our functions using the FMOD Ex API functions.\n\n`Functions` is a class in which we have defined all our general functions, such as random number generation or type conversion.\n\n`MaintientBoutonAvancer` is a class that allows us to intercept the message sent when the user presses the left mouse button (`ON_WM_LBUTTONDOWN`)\nwithout necessarily releasing (different from `ON_BN_CLICKED`) on a `CbitmapButton`. It is used for the \"Fast Forward\" button.\n\n`MaintientBoutonReculer` is a class that allows us to intercept the message sent when the user presses the left mouse button (`ON_WM_LBUTTONDOWN`)\nwithout necessarily releasing (different from `ON_BN_CLICKED`) on a `CbitmapButton`. It is used for the \"Fast rewind\" button.\n\n# License\n\n[General Public License (GPL) v3](https://www.gnu.org/licenses/gpl-3.0.en.html)\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU\nGeneral Public License as published by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\neven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not,\nsee \u003chttp://www.gnu.org/licenses/\u003e.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyann39%2Faudio-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyann39%2Faudio-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyann39%2Faudio-player/lists"}