GM Android Audio Modder lets you move copy, record audio files, and move and access your games included files for game moddability! This extension can be used in GMS 1x, GMS 2x. Requirements: Must have Gamemaker: Studio 1x or gamemaker Studio 2, and the Android module. Project minimum SDK is 14 or higher, recomended target sdk & build tools is 26. This extension is also compatible with SDK 25+ permissions rules and regulations. Recomended developer skill level: COMPATANT to ADVANCED To use this extension to it's full potential you need to know your way around Arrays, string manipulation, maths and other common programming criteria. Altho the asset package has an included example project, it is large and involved to show off everything the extension can do, and a noob/novice programmer will have difficulty figuring it all out and how to best use these functions.
HIGHLIGHTS: - Total of 30 functions available - Automatic permission handling in case OS >=6 - Create player accessible file system including folders and files - Record audio and save as .wav, .raw, .mp3 or set to ringtone - Find audio and music on Android device - Set any audio found or recorded as Android Device's default ringtone - Move any found music files to public or game folder(s) of your choice including your game's included files - Get the path address to audio files found - Get file extension type for audio files found (Very useful to import .ogg on the fly in your game!) - Alert the Android operating system that a new file is available for other apps to find - Play audio - get all types of info about audio tracks found - Pause - Next - Previous - Go to specific track - Go to specific time in track - Resume
The functions: TrackAdress(double); Returns absolute path of selected track number
StartRec(string, double); Name the file, select recorder type, example: "name.ext", 0 = wav, raw or ringtone. 1 = mp3. (mp3 recorder is different from wav/raw recorder)
StopRec(double); Save the file, 0 is for .wav, 1 is for .raw, 2 is for set as ringtone and 3 is for .mp3
GetFileExt(The track number); is to get the file extension of any audio file found on the device, so for example if you have .ogg music files on your android device you can use this function with gms' audio_create_stream function to get and mod the music in-game.
SaveFromAs(string, string, string, double); Multi-use function, Save music found on the device to a new folder, save files from your games included files to a new folder, set audio as the default ringtone for the device
GetFldr(string); "Folder_1/Folder_2/etc.." get/make the output path to a public folder(s)
OsUpdt(string); Folder address/file_name.ext Updates the android os of a new file so other apps can find and use them immediatly.
exitTheApp(); This is a bug fix for GMS 1.4.1804 that allows you to close your app/game in code by simply calling this function.
other functions: PauseMusic() - pauses the music if playing MusicStopped() - use to check if music is stopped NumberOfTracks() - use to find number of tracks ResumeMusic() - plays music if paused PlayMusic(Track_Number) - play a particular song GetCurrentSongName() - gets the currently playing song name GetCurrentArtistName() - gets the currently playing artist name MusicPlaying() - use to check if music is playing NextTrack() - play the next song PreviousTrack() - play the previous song GMASInit() - Call at game start, automatically requests permissions * see IMPORTANT note GetSongName(Track_Number) - get the name of a particular song GetArtistName(Track_Number) - get the name of a particular artist MusicPaused() - use to check if the music is paused StopMusic() - stop the music GoToTrack(Track_Number) - go to a particular track, simillar to PlayMusic() Final() - end all music and music player processes GetSongLength(Track_Number) - gets the length in milliseconds of a requested song, catch the real number in milliseconds in the social async event: key="show", value="lengths". A formatted string mm:ss:ms is also sent to the social async event with the key "songlengthstring" which in it's self holds the pre formatted string for your convieniance. GetCurrentSongLength(Track_Number) - gets the song length in milliseconds of the song currently playing GoToSeek(Time_In_Milliseconds) - go to any position in the song by inputting the milliseconds GetElapsedTime() - gets the time elapsed since the song started playing, in milliseconds AutoPlay(0 or 1); //0 = Don't play next track when current track finishes, 1 = Play through all tracks
updated function hint for StopRec to be correct: StopRec(int); 0 = .wav, 1 = .raw, 2 = set as ringtone(as .wav), 3 = .mp3