maxton / jam.net Goto Github PK
View Code? Open in Web Editor NEWA compatible client for content from the Jammit® app.
License: Other
A compatible client for content from the Jammit® app.
License: Other
Now that the ADPCM is decoding properly, there should be audio export features. I have some ideas:
Current location for the contentCache
file is %LOCALAPPDATA%., which is too generic.
Move it to %LOCALAPPDATA%\Jam.NET\contentCache.xml
Additionally, the User settings (currently only the location of the content folder) should be moved to the same place instead of using the built-in user settings functionality.
So,
%LOCALAPPDATA%\Jam.NET\contentCache.xml
%LOCALAPPDATA%\Jam.NET\settings.xml
SoundTouch is a great library for this - it's LGPL licensed, and has .NET bindings available.
If a song plays to the end and goes back to the start, (or if you seek near the end, seek back, and wait for however many seconds the end would have arrived in), no data seems to be coming out of the wave streams anymore (the click track is still generating clicks, though). Look into why this is happening (maybe the ADPCM decoders aren't getting re-wound for some strange reason)?
May necessitate adding some more public interface members to the Fader control
Could be useful to be able to connect to a Jammit server should it or a clone ever re-appear.
Some API endpoints:
https://[store.server]/scripts/ddidcheck.php?uname=[username]&evje=[device id]
Called before getting user info.
Returns: 0, 1, or 2.
0 : success.
1 : Incorrect username
2 : Account has been deauthorized for the device
https://[store.server]/jammit_app_data?username=[username]&password=[password]
Returns a bunch of stuff separated by ~~
(at least 31 items). If that's not what is returned, then the password was invalid.
Subtract 32 from the 31st item to get the Jammit ID (account ID).
https://[store.server]/ddmailregister.php?jammitid=[account id]
Called after getting user info but the return value, if any, doesn't seem to be used at all.
https://[store.server]/scripts/ddtkill.php?vje=[account id]&evje=[device id]
https://[server]/scripts/ddtv1.php?vje=[account id]&evje=[device id]&bld=[build]&typ=[os version]
Returns uuids for the given account/device combo, separated by ^^
for some reason. These are then downloaded from https://[store.server]/sites/default/files/[uuid].zip.
After the uuids, there is %%
followed by something else.
If there are none(?), it returns "noid". If there are too many authorized devices, it returns "*3max"
It would be very convenient for the app to run in mobile platforms, such as Windows Universal iOS and Android.
I already have ongoing work on this at https://github.com/JunielKatarn/Jam.NET/tree/mobile.
Considerations:
I think the Song class should handle this when you instantiate it.
Beatmap can probably just be parsed to a list of beats.
Beat structure:
Sections to a list of sections:
I imagine this will be done by the mixer keeping track of the peak voltage per track over some interval, and the fader polling that the same way the transport polls the current time.
Right now only the first notation file is displayed. As a user I want to be able to select between parts and between notation and tablature. I guess this can be done in the score control itself, or maybe in the containing form.
Once #7 is implemented, we can add section text to the waveform and the transport.
This should run in Mono, in theory, except for the audio API. NAudio relies on WASAPI and/or other windows-only libraries to get audio out of the speakers. Look into another audio library. I think maybe PortAudio would be best, I think it has .NET bindings somewhere, otherwise, possible BASS.NET, although that is non-free. If anyone knows of some other audio APIs, I am all ears.
The decoded audio is noisier than what you get from FFmpeg. Look into the decoding algorithm.
Things like refreshing the library cache are slow and lock up the UI thread. I think a popup window that runs a task will solve this problem nicely
In order to allow for different formats (i.e., loose files as well as .zip content files), there needs to be loose coupling between Song and its interface.
As far as I can tell, this is generated using the info from beats.plist. So, once #7 is implemented it should be pretty simple?
This is a large feature. The end result is that we have an animated score like the original app.
I'm not sure how well this will end up working, as it depends on the latency of NAudio. Probably some latency compensation will be required. Although, the original app was pretty bad at this anyway...
It's pretty ugly overall right now. It would be nice if it were not so ugly.
This one's pretty difficult to do correctly. I would say it is low priority.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.