Git Product home page Git Product logo

bassoontracker's People

Contributors

0xflotus avatar dependabot[bot] avatar drsnuggles avatar hunt3rdotme avatar idontbyte avatar jpnance avatar steffest avatar xibe 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  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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

bassoontracker's Issues

XM Bugs - Global Volume Slide

Split from #8

Some songs wont play at all due to unimplemented Global Volume Slide:

reed-yet another discoism.xm
cerror-for funky fish.xm
radix-sunstreak.xm

Request: Ability to render the song to wav or Ogg file

Right now it is pretty awesome, but it lacks the fundamental ability to export the music data to something that other software can read.

I am requesting this, because I am actually interested in embedding bassoon into gdevelop- to be used as a music tracker by game devs.
https://github.com/4ian/GDevelop
I already did that with piskel and it worked out quite well. :)

Bundling a copy of bassoon with gdevelop can be beneficial to both projects imo - giving exposure to bassoon and getting it in the hands of more users.
I will like to keep the vanilla version of the editor- so it will retain all of its original charm. The only thing that I will need to do is inject a button 'Save back to Gdevelop' somewhere in the UI of my copy.

Unfortunately without the ability to actually export the data as a music file, gdevelop will not be able to use it.

Our other option is sonant or soundbox, but I like bassoon more.

Build process broken

Build process is actually broken due to use of ES6.
Could be avoided by using babel for ES6 -> JS which then can be uglified again

XM Bugs - Crashes and other problems

Split from #8

Some others that have miscellaneous problems:

dalezy-ghosts 'n goblins.xm (envelope sustain forever)
dubmood-kolobki vodka dance.xm (wrong pattern jump in Pattern 2)
kenet-chip or not.xm (delay/feedback effect not working as it should)
dragoon-far rising sun.xm (pad samples not playing)
mystic cloud-for old times sake.zip (Crashes on pattern 3)
dubmood - cybernostra weekends.zip (Crashes on open - this is a weird custom file but opens fine in FT2/milky)

Tracker crashed on Firefox 63 on Linux Debian 9 with Gnome

Hello.

I tried your fantastic memory bringer tracker and it freezed and get stucked in a sound loop.

I was playing Stardust Memories, and it happened on the 63th step.

I copy you what lies in my syslog around when it happened (might not be all relevant, nor connected to the problem, but if it can helps !)

Jan 30 15:11:57 debianjm firefox[16482]: Theme parsing error: <data>:1:77: Expected ')' in color definition
Jan 30 15:13:36 debianjm org.gnome.Shell.desktop[3485]: libinput error: client bug: timer event0 debounce short: offset negative (-9ms)
Jan 30 15:13:46 debianjm gnome-shell[3485]: Object St.BoxLayout (0x55f3d5518890), has been already deallocated — impossible to set any property on it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
Jan 30 15:13:46 debianjm gnome-shell[3485]: Object St.BoxLayout (0x55f3d54ec810), has been already deallocated — impossible to set any property on it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: == Stack trace for context 0x55f3d36991d0 ==
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #0   55f3ded2b618 i   resource:///org/gnome/shell/ui/status/volume.js:101 (7fe7638091f0 @ 49)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #1   7ffe954afcf0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #2   55f3ded2b568 i   resource:///org/gnome/shell/ui/status/volume.js:284 (7fe763809c10 @ 259)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #3   7ffe954b0c60 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #4   55f3ded2b4e0 i   /home/jeanmarc/.local/share/gnome-shell/extensions/[email protected]/widget/volume.js:422 (7fe762745af0 @ 91)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #5   7ffe954b1fb0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #6   55f3ded2b420 i   self-hosted:979 (7fe79c0f01f0 @ 440)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: == Stack trace for context 0x55f3d36991d0 ==
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #0   55f3ded2b618 i   resource:///org/gnome/shell/ui/status/volume.js:101 (7fe7638091f0 @ 49)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #1   7ffe954afcf0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #2   55f3ded2b568 i   resource:///org/gnome/shell/ui/status/volume.js:284 (7fe763809c10 @ 259)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #3   7ffe954b0c60 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #4   55f3ded2b4e0 i   /home/jeanmarc/.local/share/gnome-shell/extensions/[email protected]/widget/volume.js:422 (7fe762745af0 @ 91)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #5   7ffe954b1fb0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7fe79c0b0b80 @ 71)
Jan 30 15:13:46 debianjm org.gnome.Shell.desktop[3485]: #6   55f3ded2b420 i   self-hosted:979 (7fe79c0f01f0 @ 440)

Nice work !

JM

Url parameters: files with special characters like # & - broken?

How to correctly encode the filename in the URL?

normal filename works:
https://www.stef.be/bassoontracker/?file=https://modland.ziphoid.com/pub/modules/Protracker/Dizy/conspiracy2.mod

with special chars like # & it doesn't
https://www.stef.be/bassoontracker/?file=https://modland.ziphoid.com/pub/modules/Protracker/Dizy/chiptune#2.mod

Am I wrong or your code?
https://mod.schugo.de
-> Bassoon Tracker

from there you can load modland files...

XM Bugs - Lowpass Filter gets stuck

Split from #8

Some songs have a bug where a lowpass filter is enabled and remains even after loading new songs (gets "stuck"):

vogue-ambient light.zip (Pattern 9)
lesnik-hot dogs 3.xm (happens immediately in Pattern 1)
lamb-happiness.xm (happens at very end of Pattern 1)
That requires refreshing the page to fix, so pretty bad.

Protracker: notes above B-3 are not displayed but still played

The highest note you could play on ProTracker was B-3. But there are numerous MODs around that have been made in FastTracker which didn't have that limitation but made them unplayable on ProTracker - PT just displays ??? and chokes.

I guess you could argue it's better to replay them instead of just choking and Bassoon Tracker actually plays them like they were supposed to from a FT2 view but doesn't show any note value at all in the pattern view - it just shows the respective sample in the sample column.

In my opinion the right way to go for a modern tracker would be to play them but display a warning when saving a .MOD containing high notes.

XM Bugs - ADSR release

Split from #8 : A bunch of songs have issues with ADSR release, similar to springmellow p.II.xm above (seems to be the same issue in all).

sinny-sky sunday.xm
amove-lupo.xm
ghidorah-dark december.xm
xerxes-hesse's sovesang.xm
jeroen tel-stranglehold.xm

Player API

I preloading all my musics in an array of songs. How to change the current song of player, without to reload each music file?

And I to load a music from an ArrayBuffer ?

Possible to have the unminified JS of BassonTracker Player?

Thanks

Cap Framerate to 60 fps in rendering engine

On some systems with high refresh rate screens, the rendering engine consumes too much CPU ,causing audio hickups.
The rendering engine should be limited too 60 fps max.

Some effects lacking a "continue" mode.

Effects 3, 4, 7, 9 should use the last values given to them in a channel, if they show up in a pattern with 00 as parameter; testing showed that at least the Set Offset effect currently doesn't do this.

signia.mod (3rd & 4th channels, pattern 3 in 3rd order) - 900 doesn't retain the first value of 0x14.

feature: Add Midi keyboard support

Testing my keystation 32 mini here:
http://www.multiplayerpiano.com
and
https://pianu.com/intro/ode-to-joy

Works. All the keys are detected and so is their pressure sensitivity.

Trying the same here
https://www.stef.be/bassoontracker/

My midi keyboard simply doesn't exist to bassoon tracker. Pressing all the keys on various instruments - nothing.

Can you add support for midi keyboards please? I will help with testing if need be. Using a standard laptop laptop keyboard is just subpar when compared to using a midi keyboard with pressure sensitivity

Not sure exactly how some of these web apps get their midi support. I assume they use some open source js library to achieve it
https://github.com/djipco/webmidi
or see many others here
https://www.npmjs.com/search?q=midi%20keyboard

this one is popular and well maintained
https://www.npmjs.com/package/jzz
also works! test here
https://jazz-soft.net/demo/SelectMidi.html

Midi keyboards are pretty cheap these days - especially on ebay. Having one greatly enhances the experience of music making with a tracker. To me a tracker without support for midi keyboards is not complete - it is crippled. Thus why I really need this feature before I can use bassoon

The "EFx" command - Invert loop - is not implemented

First of all: great project!

I took it for a test drive with a few tunes and noticed it is not quite there yet for the tune mentioned above. The same probably goes for some of WOTW's intro tunes which use very similar sounds and a similar technique, where this tune has borrowed them from.

Available here: https://modland.com/pub/modules/Protracker/Radix/nowhere.mod

Check out the playback on the real thing or with Bubsy's Protracker clone, comes a lot closer.

More player bugs

Here is a list so far of modules that are played wrong in some way. I'll add more as I find them

XM

  1. Xerxes/minors&majors.xm (Notes cut a bit too early)
  2. Lamb/among the clouds.xm (Ambient SFX not playing properly)

MOD

  1. Muttley/zo zad.mod (xmplay also plays wrong, sorcery is going on here)

STK

  1. SLL/high byte.mod (since you support STK, here's a headache to rethink that decison ;) )

I'm not sure if any of these use quirks that you don't wish to support, so just cross any out that are intentionally broken. :-)

Mix of hex and decimal number systems, zero-based and not zero-based

I am not sure how FastTracker handled this, although I used it for years but the mix of using decimal numbers in the upper right 'instrument' window and using the corresponding hex numbers in the instrument column of the pattern view is a bit irritating to me.

Also it seems odd to me that patterns start counting from 00 but the song positions start at 01. (In ProTracker they both start at 00 - while samples start at 01.)

Feel free to purge this right away as I am aware this is probably by design... And don't get me wrong, once again I think this is a great project - I just wanted to leave some feedback while I am checking it out, as I have spent a lot of time in trackers in my youth days.

Sample editor indexing is decimal, tracker view uses hex

The sample numbers in the tracker view are in hex (00..0F,10..1F,etc) but the sample editor selector displays in decimal. (00..09,10..19,etc).

The sample editor should probably be in hex as well. It makes finding the right sample a bit tricky. ;)

GUI: Knob doesn't take effect when turned on without adjusting

This one was hard to summarize for the title. ;)

If you start up playback the tracker, the first time you turn on an EQ adjustment in the FX panel of a voice, it will not apply the knob's setting until you adjust it a little.

reproducing this:

  1. Reload the page
  2. Load and play a mod (I was using "go cryo go" by U4IA )
  3. Select one of the voices, preferably one with a high-hat (third voice for this mod)
  4. Select FX
  5. click on the "HIGH" eq adjustment, but do not drag. The light on the knob will light up
  6. Audio is unaffected.
  7. drag to adjust the knob, and it will pop up to a higher level.

Adjusting it back to the center position has more "brightness" than when it was off.

Some modules won't load because served from http

It seems bassoontracker attempts to load some of the built-in modules from http. Since the site is hosted on https, the request is blocked by the browser with this kind of error message:

bassoontracker-min.js?v0.3.2-build20190131.0828:1 Mixed Content: The page at 'https://www.stef.be/bassoontracker/?file=demomods%2Fdemomusic.mod' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://www.stef.be/amiga/mod/enigma.mod'. This request has been blocked; the content must be served over HTTPS.

Example of modules: Guitar Slinger, Enigma.

On the fly sample swapping is not implemented

The lead coming in at position 07 remains 'stale' and it seems it's not re-triggered in the same way it is when you use ProTracker - the alternating "0a, 0b, 0c, 0d, 0e"s in the sample/instrument column should switch to the respective sample, even when there is no new note triggered.

XM files compressed by optimizing tools cause issues

XM files optimize" by tools like "BoobieSqueezer" (Yes, that a real thing: http://battleofthebits.org/lyceum/View/BoobieSqueezer/) cause crashes.
These optimised files have stripped-down instrument data (like missing envelope points when envelopes are not used etc.)
BassoonTracker should validate module-structure after parsing, filling in missing values when needed.
An example of such a file is https://modarchive.org/index.php?request=view_by_moduleid&query=167786

XM Bugs - Arpeggio

Split from #8

Some have issues with arpeggios:

maniac-disco zax.xm
carter-dead feelings.xm
med-halloween 2002.xm (seems that a 'note-off' technique isn't working here)
lhs-brd keygen #2.mod and brd keygen #2.xm both don't work properly!

Note held in weird situation

U4ia's "U4ic Nightmare" (attached), position 8, pattern 4 holds a note at the end.
u4ic_nightmare_2.mod.zip

Protracker, where he originally composed it, doesn't do it, but every mod player (including mikmod, on which i had tried to fix it) holds that note.

It would appear that the pattern attempts to trigger a new sample (#2) but still has the '300' effect on the line. Which is likely an error by U4ia; but at least shows the behavior difference. ;)

I think it needs basically a case where if the sample is changing that should have priority over the portmanteau/other effects? I'm not sure how your engine works yet. ;D

Sound triggered by input doesnt play during play+record mode

First of all - WOW! This is the most feature complete html5 tracker I have ever seen. I love the retro vibes to it too!

The biggest problem with it for me atm is the fact that sound triggered by keyboard keys during play+record mode does not play at all. The recorded notes play on the replay of the loop though.

Is this something that you plan to address or it is a genuine bug? It really makes the tracker unusable for live record mode for me

XM Bug - The "M" Volume command should also continue the "3" tone porta command

First of wow this is spectacularly awesome!! Extremely well done. I'm impressed across the board, but especially about the amazing mobile support. I couldn't have imagined that an oldschool style tracker UI could be user friendly (ish) on a tiny touch screen. Hats off!

That said, I don't think all the XM bugs have been fixed yet; I found an old (pretty bad) song of mine that's pretty different in Bassoon Tracker vs FT2 or XMPlay, especially in the first few patterns. Something with the pitch bend and also something with the timing I think.

https://www.stef.be/bassoontracker/?file=https%3A%2F%2Fapi.modarchive.org%2Fdownloads.php%3Fmoduleid%3D142113

https://modarchive.org/index.php?request=view_by_moduleid&query=142113

Originally posted by @eteeselink in #8 (comment)

Feature: S3M support

Ability to load S3M files would be most excellent. Not sure what else to put here. Bananas.

Feature: Visualization api

I have a bunch of visualizers from my iOS mod player that i'd love to fly in to this codebase. Perhaps a button to switch the pattern view into a visualizer view (like the way it is replaced with sample editor, etc.

It'd be great to have a visualizer api, with a few entry points:

  • initialization/startup
  • shutdown
  • poll for screen update

It would need to have access to some bits of data to be able to do fun stuff with the content:

  • graphics context/bitmap to render into
  • current song metadata
  • pattern, position, speed, tempo, number of voices, etc
  • for each voice: current volume, waveform, pan position, frequency

I'm sure all of this is in there somewhere, as it's currently used for the main display.

I think a great first-version would be a single visualizer built in to the codebase... in fact all visualizers can be compiled-in. they don't need to be plugins at all.

Perhaps a way to have one or two configuration values using the exisiting widgets in the future would be nice as well. (select a number using up/dn buttons, 7 segment display, etc)

I haven't looked through the code at all yet to begin to delve into this myself, but i might if nothing is planned along these lines....

BPM adjustment doesn't work

The BPM field doesn't seem to work to set the BPM while a mod is playing.
(Testing with "Milano's Theme" by U4IA, but seems to happen on all mods.)

XM Bugs - Finetune

Split from #8

Some have an issue with fine tune:

svenzzon-blizzard.zip (Error: unable to find finetune for note 0)
strobe-balloons and shit.xm (Error: unable to find finetune for note undefined)

Command Speed "F00" should be ignored

The file "dirt.mod" has F00 commands in the song at which point Bassoon Tracker stops playback. Other players (OpenMPT, FLOD) seem to ignore setting the speed to zero, which seems okay to me.

XM bug: solo on channel 9 also solos channel 1

Reproduction steps:

  1. Load Ambrozia XM demo song
  2. Browse to sequence 06 (pattern 05)
  3. Click [S] button on channel 9 to solo

Expected:
Only channel 9 should be audible.

Actual:
Both channel 9 and channel 1 are audible.

Notes:
No other channel solo function seems to exhibit this bug, at least on this demo song.

Feature: Playlist support

It would be really great to have a way to enter a url for a playlist/file source.
Perhaps to a specific format json file that could have groups of files listed.
Sort-of the way that it does the hierarchical view of modarchive.
I've got my favorites at http://umlautllama.com/mods and would be 100% into adding the required file to list out the files for testing, etc.

Loading a new song doesn't clear all previous data

Loading a new song doesn't clear all previous data.
This causes corrupt data when saving the new song.

To reproduce: Load Ambrozia.xm , then load SpaceDeb.mod, then save the mod.
(it appears the instrument list is not cleared 100%)

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.