Giter Site home page Giter Site logo

chordian / deepsid Goto Github PK

View Code? Open in Web Editor NEW
71.0 71.0 4.0 7.89 MB

The source codes for running DeepSID, a modern online SID player for the High Voltage and Compute's Gazette SID collections.

CSS 7.57% PHP 42.93% JavaScript 28.99% HTML 6.60% Python 0.83% Batchfile 0.06% C 12.86% Makefile 0.15%
c64 commodore-64 commodore64 csdb hvsc sid websid

deepsid's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

deepsid's Issues

Problems in Microsoft Edge

There may be various issues with DeepSID in the version of Microsoft Edge that have the original IE++ engine. For example, clicking the ".." browser button to go back one folder might invoke a dialog box about logging in or registering to rate files and folders with stars. There are also problems with animated SVG files that apparently Edge doesn't support properly.

Extend ASID handler with support for multiSID and multispeed files

Background

In #22, support for ASID playback was implemented. This works fine, but due to the limitation on MIDI speed, ASID itself has a maximum update rate at about 75Hz, and can only handle single-SID-files. If the MIDI speed could be increased there would be room for adding both multiSID as well as multispeed support.
Fortunately, there are solutions for this. For instance there is the "Turbo MIDI" protocol, developed by Elektron in the TM-1 interface (and used by a number of Elektron machines as well as some other brands). By using that one, speeds up to 10x MIDI rate is possible. Together with extensions of the ASID protocol itself, functionality for multi-SIDs can also be added. No adaption in DeepSID is needed for the hardware side, as TM-1 is fully MIDI compatible (so the browser will see it just like any other MIDI interface). Main work is on the device side, with only adaptions on the ASID protocol for DeepSID.

Suggested functionality

  • Extend the ASID protocol with support for multi-SIDs (done elsewhere)
  • Implement the above
  • Also add support for FM chip (OPL1/2) as used by FM Sound Expander and FM-YAM.

Demos

A proof-of-concept that lets DeepSID support up to 3SID and 4x files has already been developed, with an accompanying development for TherapSID (which here can handle 8x MIDI rate and 2SID). Demo videos are available here:

Update: A working demo with both 2SID, 3SID as well as SID+FM, now ready for submission is here:

Document how to convert from SIDPlay2 filter values

I measured the filters of two of my SID with A. Lanakilas method and have the coefficients that SIDPlay2 uses.

It is unclear how I calculate the values for the DeepSid filter settings panel from that.

The SIDPlay2 filter coefficients look like that:

[FilterEnigma6581R3_4885]
DistortionRate=0.50
DistortionPoint          =2048
VoiceNonlinearity        =0.96
DistortionCFThreshold    =2.5e-4
Type3BaseResistance      =1090649.9265298771
Type3Offset              =264401456.3944572
Type3Steepness           =1.0145069244334666
Type3MinimumFETResistance=19890.786352277173

[FilterEnigma6581R3_1585]
DistortionRate=0.50
DistortionPoint          =2048
VoiceNonlinearity        =0.96
DistortionCFThreshold    =2.5e-4
Type3BaseResistance      =1119380.8539989102
Type3Offset              =257709531.3343812
Type3Steepness           =1.0073881870085593
Type3MinimumFETResistance=20269.79137269368

SID files whose default subsong is greater than 1: previous subtunes don't get played

To reproduce this:

HVSC/MUSICIANS/F/Follin_Tim

Qix.sid
default subtune 11, the previous 10 are not played
Psycho_Pigs_UXB.sid
default subtune 4, the previous 3 are not played
Music_Demo_Version_1,sid
default subtune 27, the previous 26 are not played

I think simply ignoring the default subtune and always starting from 1 would be enough.

(And thank you for DeepSID, it managed to break my habit of using XMplay on Windows :)

Support for milliseconds in song lengths

This was suggested by Zbigniew Uggett on Twitter. (Matty Seito?)

Currently DeepSID uses minutes and seconds for song length values as was used by the High Voltage SID Collection up until update 69, but from 70 they claim to have added milliseconds as well.

Personally I imagined that milliseconds really wouldn't make much of a difference, and I'm not even sure if all of the SID handlers (particularly the emulators) would benefit from it at all.

ASID support (playback for SID hardware)

Background

The "ASID" protocol was developed as a way of sending Commodore 64 SID files over MIDI to be played back on the Elektron Sidstation. The format is available on the internet (for instance here) and some other instruments like the Midibox (and soon Twisted Electrons TherapSID) have support for it. Also real C64's can play this format by the application "Station64".

Since the original ASID player is outdated and doesn't work on newer macOS:es it would be really nice if ASID support could be implemented in DeepSID, allowing hardware SID playback directly from the huge database and without need to install anything.

Suggested functionality

  • Add a new plugin "ASID (MIDI)"
  • Make a setting for MIDI output
  • Play back regular non-digi files (since MIDI bandwidth maxes out at about 75 Hz in ASID)

Demo

I have actually already implemented the above as a proof of concept :) Demo available together with in-development TherapSID implementation here:

Feature Request: Modification to Sort filter to exclude personally-created playlists

I have a request. When using the sort filter for All/Personal I note that choosing Personal basically kills off all items except HVSC and Compute's Gazette. I'm wondering whether you could include the other non-personal playlists in the list of items that remain when choosing Personal. $11 Music Compo, X2016 etc aren't personal playlists but factual collections. Or perhaps if you could include a third option. Something like this:

All (includes HVSC + Compute, democompo collections, made-public and private playlists)
Master and Democompo Collections only
HVSC+Compute only

I'm just looking for a way to exclude playlists that people are making public. I don't mind seeing the democompo compilations, or of course the master compilations, but the contents of individual playlists are a crapshoot and IMO have already started to mess up the list of items shown in the root folder. Obviously I want my own personal favourites playlist displayed at all times though. :-)

Bad emulator URL switch

It's currently possible to specify a ?emulator="" URL switch that is incompatible with the ?file= folder switch.

Production environment should redirect to TLS

@Chordian thanks for such an awesome tool. Use it literally every day while at work :)

Not sure if there is a reason for this, but the live version of DEEPSID allows HTTP and also HTTPS, however, if you try and log into the HTTP version, at least under CHROME, it will cause a failure, throw up an alert to email you, and just stay logged out. A bit of investigation showed me that the security package I am using was blocking credentials being sent unencrypted... I would expect this issue will happen to other users for sure.

This issue does not occur when the site is loaded with HTTPS instead of HTTP protocol in the browser.

To solve this issue (and not pass user credentials unencrypted) it would make sense to simply redirect all HTTP calls to HTTPS in your Apache configuration which can be done in the website config file. Let me know if you require an example. Happy to help.

Regards
Joe
aka ZIGGY / DEFAME

Data: unescaped control character

hi,

hvsc.php is sometimes serving invalid characters with the file.name property of some songs.

Apparently it's always the last character of the same property and that character is always 0x7f so it should be easy to find the cause.

I collected some examples, not sure how many folders are affected:

SID_Happens/2020 folder:

{
  "filename": "Lightforce_in_E.sid",
  "substname": "",
  "playerraw": "GoatTracker_V2.x",
  "player": "GoatTracker_V2.x",
  "tags": [
    "Remix"
  ],
  "tagtypes": [
    "mixorigin"
  ],
  "lengths": "7:45",
  "type": "PSID",
  "version": "2.0",
  "clockspeed": "PAL 50Hz",
  "sidmodel": "MOS6581",
  "datasize": "4913",
  "loadaddr": "4086",
  "initaddr": "4086",
  "playaddr": "4099",
  "subtunes": "1",
  "startsubtune": "1",
  "name": "Lightforce in E�",  <<<<<<<< \u007f
  "author": "Eric Dobek",
  "copyright": "2020-11-22 Eric Dobek",
  "stil": "<br /><b>TITLE:</b> Lightforce\n<br /><b>ARTIST:</b> Rob Hubbard\n<br /><b>COMMENT:</b> Based on <a class=\"redirect\" href=\"#\">/MUSICIANS/H/Hubbard_Rob/Lightforce.sid</a>",
  "rating": 0,
  "hvsc": "0",
  "symid": 0,
  "videos": "0",
  "profile": "_High Voltage SID Collection/MUSICIANS/D/Dobek_Eric",
  "uploaded": "2020-11-27 11:03:55"
}

SID_Happens/2021 folder:

{
  "filename": "25_or_6_to_4.sid",
  "substname": "",
  "playerraw": "GoatTracker_V2.x",
  "player": "GoatTracker_V2.x",
  "tags": [
    "Demo",
    "Cover",
    "Chicago"
  ],
  "tagtypes": [
    "production",
    "origin",
    "suborigin"
  ],
  "lengths": "5:00",
  "type": "PSID",
  "version": "2.0",
  "clockspeed": "PAL 50Hz",
  "sidmodel": "MOS8580",
  "datasize": "4630",
  "loadaddr": "4096",
  "initaddr": "4096",
  "playaddr": "4099",
  "subtunes": "1",
  "startsubtune": "1",
  "name": "25 or 6 to 4 (Chicago cover)�",  <<<<<<<< \u007f
  "author": "Ari-Pekka Paljakka (Zardax)",
  "copyright": "2021 Artline Designs",
  "stil": "",
  "rating": 0,
  "hvsc": "0",
  "symid": 0,
  "videos": "0",
  "profile": "_High Voltage SID Collection/MUSICIANS/Z/Zardax",
  "uploaded": "2021-02-16 20:37:53"
}

folder SID_Happens/2022 folder:

{
  "filename": "4matted.sid",
  "substname": "",
  "playerraw": "GoatTracker_V2.x",
  "player": "GoatTracker_V2.x",
  "tags": [
    "Intro",
    "Conversion",
    "VIC-20"
  ],
  "tagtypes": [
    "production",
    "origin",
    "suborigin"
  ],
  "lengths": "5:00",
  "type": "PSID",
  "version": "2.0",
  "clockspeed": "PAL 50Hz",
  "sidmodel": "MOS8580",
  "datasize": "2304",
  "loadaddr": "4096",
  "initaddr": "4096",
  "playaddr": "4099",
  "subtunes": "1",
  "startsubtune": "1",
  "name": "4matted�",  <<<<<<<< \u007f
  "author": "Jani Joeli (Frostbyte)",
  "copyright": "2022 Artline Designs",
  "stil": "",
  "rating": 0,
  "hvsc": "0",
  "symid": 0,
  "videos": "0",
  "profile": "_High Voltage SID Collection/MUSICIANS/J/Joeli_Jani",
  "uploaded": "2022-02-14 07:21:20"
}

Have duplicate SID tunes in a playlist

Now that it's possible to specify sub tunes for a SID tune in a playlist, it opens up the need for having multiple rows of the exact same SID tune, each using different sub tunes.

Public API

Hi and thanks for that awesome platform 👍

I've been developing an HVSC-based SID Player for ESP32, it acts as the C64 and is designed to drive any type of SID Chip (preferably clones).

esp32-SID+hat.mp4

Now that everything appears to work fine with the filesystem, I would like to test with an online database, and the deepsid site appears to provide an excellent API although it seems some measures are in place.

image

I know this can be easily prevented by sending the extra headers, but before doing that I'd like to ask if using the site in such a way is acceptable.

Also I found that not all queries using $_GET are prepared in hvsc.php, this smells like SQL Injection waiting to happen.

Clicking a SID row doesn't mark it properly on mobile devices

This is not an issue on desktop computer as they use a custom scrollbar plugin that marks the row correctly. However, mobile devices use native scrolling instead of this plugin.

It's also possible it only happens in playlists.

The phenomenon can be observed at certain rows in e.g. Luca's Favorites, and only when touching rows directly. Using the SKIP buttons seem to mark the rows correctly.

I first thought it was tied to duplicate versions of the same SID tune in a playlist (each with different sub tunes) but it turns out that the problem also occurs in other places where the SID tunes are unique.

Upgrade to HVSC #70

Upgrade the file tree and the database to support High Voltage SID Collection update #70, when it has been released.

Context menu options to share on Facebook or Twitter

Sharing on Facebook requires an app ID for the API code. Creating and setting up the app is easy enough, but they require a privacy policy URL to enable it, and that's not acceptable for a mere share dialog. I don't have a privacy policy and I don't intend to create one.

I haven't investigated if Twitter have the same problem.

ASID output not working with some SID files

Hello! First let me thank you for this great tool! Really appreciate all that you've put in to it!

I'm the developer of the TeensyROM project and one of its features is the ability to pass along ASID data to a real C64. It works great, but a user identified a few SID files that don't seem to play back correctly.

The main one I've been reproducing the issue with is Miami Vice by Martin Galway (though there are others as well). When I try to send via ASID, nothing is output. I can verify that by looking at the Memo Visual view. To further prove it out, I downloaded the file and play it back via asidxp.exe and that does stream/play correctly. This confirms the problem is apparently in the DeepSID player.
Please let me know if you need any additional information. Thank you again!

Update CSDb links for new/changed SID files in HVSC #70

The SID ID numbers for all new and changed SID files in HVSC version 70 will have to be updated in the database for pages in the CSDb tab to appear.

However, this can't be done until these SID ID entries have been updated in CSDb itself.

Doesn't play the right channel file in stereo Compute! SIDs

Consider this file on your player website:

https://deepsid.chordian.net/?file=/Compute%27s%20Gazette%20SID%20Collection/Nick_Zelinsky/76_Trombones.mus

That song is actually a stereo tune, i.e. there is a *.str to go with it -- at least in the standard CGSC archive. I saw the stereo/mono dropdown (where it mentions enhance modes), but no matter what I try I can't get the web player to do anything more than standard 3-voice mono.

(works fine on Stereoplayer 10.x of course, but my local files came from the standard archive)

Display how many times a song/playlist has been played globally

It would be cool to show how many times a song was played - globally - so you can see how popular songs are.

It would be also be cool to show how many times a playlist has had songs played from it - globally - so you can see which playlists are popular. Of course, I may be biased since the 'Ziggy's funky booty slapper' playlist is the best. ;)

This would be very useful information to rank and sort playlists and tunes.

PS: thanks for making and maintaining such an awesome tool. Keeps me sane at work every day!

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.