Giter Club home page Giter Club logo

droidsound's Introduction

Addicted to programming since 1985

http://minnberg.se/page/resume/

Claim to fame (software actually used by peole)

  • Chipmachine -- Demoscene/retro music player with global incremental search

  • DroidSound -- First real mod/sid player for Android devices

  • PogoShell -- Popular graphical shell for the Gameboy Advance

  • Tiger -- the first emulator for the 68000 based TI-92 calculator

Videos by me

C++ and the 6502

C++ and the 6502

R-Toy Presentation

R-Toy presentation

Tricks, Tips, and a couple of war stories

Tricks & Tips

C++ Mobile development

Tricks & Tips

droidsound's People

Contributors

alankila avatar lioncash avatar sasq64 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

droidsound's Issues

Crash in onResume

Caused by: java.lang.NullPointerException
E/AndroidRuntime(12038): at com.ssb.droidsound.PlayerActivity.onResume(PlayerActivity.java:1273)

FileObserve MODS

let SongDatabase react to changes to MODS as long as it is running.

VICEPlugin bad sounding songs

Just an open issue with songs that sounds wrong with VICEPlugin;

Martin Galway - Miami Vice
Martin Galway - Wizball
Neil Brennan - Fist II (song 2)
Tim Follin - L.E.D. Storm

Rob Hubbard - Deep Strike
Rob Hubbard - Dragons Lair Part II - (song 3)

Dont display Track if 0

MP3s with track 0 and probably also single MP3s in directories should not have the track number displayed.

RSN played in arbitrary order

RSN (SPC files in a RAR) are not played in any kind of sorted order, it seems like they come listed off the filesystem backwards pretty consistently. A simple sort on the list fixes this.

Implement Filecache

Files extracted from zip or downloaded should be saved until droidsound is restarted or total size gets too big.

Implement unrar

Should work like ZIP except more important to cache, and RAR files in intents should be Extracted, not moved.

PSF Files Break The Player After 4 Minutes of Playback

For some reason, whenever a PSF file tries to play beyond the 4:06 mark, the player stops working. The music suddenly stops, none of the playback controls work, and loading other songs doesn't work. The only way I can get the app to work again is by Force Stopping it in the Android App Settings and then reopening it.

The device used is the ASUS Transformer TF300T with Android 4.1.1. Tried this with different PSF files and all of them do the same thing.

Problems on Galaxy S7 (Marshmallow)

I just installed Droidsound 1.5b today on my Galaxy S7 (G930F) with Android 6.0.1

At first start, it says, that it had created the MODS directory, where I could put my music in. I can play the examples but cannot find the directory anywhere, nor in internal memory neither in sd-card. I created a MODS folder in either storage and put c64music.zip (from hvsc) into it, but droidsound wouldn't find any of them.

Another 'problem' is, that I have no menu button. The galaxy S7 has no hardware menu button. Maybe a overlay button would help? My only chance at the moment is the usage of an flowbutton from accessibility tools.

But the main problem is, I cannot find any of my music. Even if I browse through 'Filesystem' in browser, my created MODS folders show no c64music in them.

Setting for Next = subtune

A setting that makes the next & prev buttons (and headset an lockscreen) go to next & previous subtune instead of song.

Error dialogs

For critical errors like;
Unreadable files
Unsupported music file

Defaults from preferences.xml file didn't work for new app installs

  • Setting a default value for preference in res/xml doesn't work.

I think inserting this call into PlayerActivity's onCreate() will fix it:

PreferenceManager.setDefaultValues(this, R.layout.preferences, false);

The reason the current code didn't work was that the SharedPreferences object is empty initially, because the preferences are in the XML file. This moves them into the SharedPreferences without overwriting user settings (the last "false" in there). I have committed a change to my repository that seems to fix this, and sets VICE as default with "fast (no cycle skipping)" resampling.

  • I also think that registering an onsharedpreferenceschangelistener on the SharedPreferences would be better than registering listeners to the actual preferences in SettingsActivity; an implementation of settings changelistener could just call DroidSoundPlugin.setOptions(prefs).
  • setOption() should be marked static in Java side, because for all plugins the effect seems to be statically implemented. At the limit the native code just stores things in global variables, rather than in some structure that would correspond to the Java-side instance. Therefore marking the method static is semantically more correct. This would allow not constructing plugin instances for DroidSoundPlugin.setOptions().
  • On PlayerActivity's onCreate(), if getLastNonConfigurationInstance() returns something, there is no call to DroidSoundPlugin.setOptions(). This is probably incorrect. Android application lifecycle chart says that the process has been killed and is starting again when onCreate call occurs, therefore natively cached settings must be lost.

Relative paths in song database

Remove modsdir from paths in songdatbase for relative paths.
Will require less space in the database and allow for relative playlists (playlists inside zip archives for instance).

Use ViewPager for main GUI

For swiping between playlist/payscreen, and then remove the switch button.
Steps:
Move playlist xml code to separate xmls
Replace Flipper with ViewPager
Create adapter that loads the playlist xml

SettingsActivity crash

SettingsActivity seems to be able to start without PlayerActivity - will cause crash for instance in getContext of plugins, since context has not been set.

Audio stutter problem

If we call play before getting sound data, it can cause stutter on ICS (Galaxy Nexus) - but if we delay the play() call the getPlaybackHeadPosition returns illegal values on 2.3 (Galaxy S). Needs to be solved.

Typo in Archive.java

In Archive.java there is a method named getIerator(). It should be getIterator().

Add zip paths

Add missing zip paths in zip files without proper directory entries

Missing util.Log file

This file is not available in the github repository, making a FTBFS. I am also baffled for why android's Log is not used directly, but presumably there are reasons.

Smart song switch

If a silence is detected for more than N seconds within M seconds of song end according to length, end the song early instead of playing the start of the song again.

End of song (NES) problem

When a song ends Droidsound enters a strange stopped state where next and play buttons dont work. Try Donkey Kong NES song 2 for instance.

Crash in Search View on "Go to directory"

Serached on "Johannes", selected "Go to directory" on the last hit:

Logcat

D/Droidsound( 5641): PlayerActivity: POS 73
I/WindowManager( 196): createSurface Window{41bbdb28 AtchDlg:com.ssb.droidsound/com.ssb.droidsound.PlayerActivity paused=false}: DRAW NOW PENDING
D/Droidsound( 5641): PlayerActivity: 2131099697 Go to directory 73 0
D/AndroidRuntime( 5641): Shutting down VM
W/dalvikvm( 5641): threadid=1: thread exiting with uncaught exception (group=0x40a541f8)
E/AndroidRuntime( 5641): FATAL EXCEPTION: main
E/AndroidRuntime( 5641): java.lang.IndexOutOfBoundsException: Invalid index 73, size is 57
E/AndroidRuntime( 5641): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
E/AndroidRuntime( 5641): at java.util.ArrayList.get(ArrayList.java:304)
E/AndroidRuntime( 5641): at com.ssb.droidsound.Playlist.getSong(Playlist.java:525)
E/AndroidRuntime( 5641): at com.ssb.droidsound.PlayerActivity.onContextItemSelected(PlayerActivity.java:2418)
E/AndroidRuntime( 5641): at android.app.Activity.onMenuItemSelected(Activity.java:2509)
E/AndroidRuntime( 5641): at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3499)
E/AndroidRuntime( 5641): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
E/AndroidRuntime( 5641): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
E/AndroidRuntime( 5641): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
E/AndroidRuntime( 5641): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
E/AndroidRuntime( 5641): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)
E/AndroidRuntime( 5641): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
E/AndroidRuntime( 5641): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
E/AndroidRuntime( 5641): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
E/AndroidRuntime( 5641): at android.widget.AbsListView$1.run(AbsListView.java:3168)
E/AndroidRuntime( 5641): at android.os.Handler.handleCallback(Handler.java:605)
E/AndroidRuntime( 5641): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 5641): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 5641): at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime( 5641): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 5641): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 5641): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime( 5641): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime( 5641): at dalvik.system.NativeStart.main(Native Method)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.