Coder Social home page Coder Social logo

8bitbubsy / ft2-clone Goto Github PK

View Code? Open in Web Editor NEW
672.0 19.0 43.0 31.12 MB

Fasttracker 2 clone for Windows/macOS/Linux

Home Page: https://16-bits.org

License: BSD 3-Clause "New" or "Revised" License

CMake 0.10% Shell 0.09% C 96.64% C++ 2.87% Objective-C 0.30% Batchfile 0.01%

ft2-clone'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  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

ft2-clone's Issues

A question about the XM pattern volumn column byte

I'm using an XM converter and noticed that it gets the note volumes (volume column byte) wrong. The converter assumes that the values are in the 00-64 range, but they are actually offset by 16, i.e. in the 16-80 range. The same is true for XMs produced by MilkyTracker. I cannot find any information that suggests using this range in the XM specs that I have looked at.

The first spec doesn't really specify any range. The second one suggest a volume column byte in the 00-64 range:

+2 1 byte Volume column byte 00 (0..64, 255)

I'm assuming that the converter is the one that gets it wrong, but I'm curious about why. So I'm wondering if I'm missing something in the spec.

"Diagonal" editing?

Stupid question, might be a user error :-)

I'm using v1.68 build, fresh install.

I click space to edit, then start pressing buttons. Strangely, it is not recording a single block, but rather a diagonal pattern. See picture below, easier. Is that the intended behaviour? :-) Looks pretty strange to me.

image

REGRESSION: Size of mouse being smaller on Linux as of 1.77

Hello! I would like to report a bug. I run FT2 on a fullscreen vsync'd setup, on Debian 11 running XFCE (AMD64). The application compiles fine and all, but I am having an issue where the size of the mouse is half as big as it was before, reaching the size of the normal one on non-FT2 setups (though you can change the type of the mouse in FT2 settings, just that it still looks wrong size-wise). I tried running the software mouse and it reverts back to the original position, albeit with obviously a bit of a delay due to vsync. This behavior didn't happen in previous releases of FT2 (Had 1.71, upgraded to 1.77)

Cheers!
MetalMaxMX

Software mouse should be ON by default

Hello,

I've recently tested the latest revision of ft2-clone on my machine. I'm running Arch Linux with the i3 window manager.

When ft2-clone uses the hardware mouse, the cursor position doesn't match with what I'm clicking on, if I do the following:

  1. Running ft2-clone in windowed mode.
  2. Going fullscreen by pressing Super+F.

Activating the software mouse fixes the issue… and it looks better in my humble opinion, since the cursor position have to be aligned with the pixels drawn on the screen.

Fast Tracker 2 Clone crashes on launch, gives BSOD

Hello. I tried to use a version FT2C that I downloaded many months ago. Whenever I would launch it, it would open a blank window which instantly crashed. And then a minute later, my Windows 10 64 OS would get a BSOD with the message IRQL_not_less_or_equal, and then my PC would reset. I tried the program multiple times and each time the same thing would happen.

I've now downloaded the latest version of FT2C. When I launch it, the program window loads, and it appears like it should (it isn't blank), but it still crashes within a second of launching. However, I don't get the BSOD as frequently with the latest version. I was able to launch it, and watch it crash, multiple times without getting the BSOD. But then on another launch it gave me the same BSOD. And after my PC restarted, I did the same thing: Launched it and watched it crash multiple times without getting a BSOD, but then on another try getting the BSOD after it crashed.

Attached is a photo of the BSOD. By the way, your ProTracker 2 clone hasn't crashed on launch or caused a BSOD on my system during the time that I've tested it out.

My system is running Windows 10 LTSC 1809 with 16 GB of RAM on an i7 2600k, and has an Auzentech Prelude sound card.

FT2C BSOD

Saved instrument reload doesn't recall keyboard split / map

I set up a basic instrument where I mapped different samples to keyboard notes.
For example I made a simple drum patch with kick, hat, snare, on 3 notes on keyboard. See screenshot of mapping.

But when I reload the saved instrument, the key split mappings are lost and rest to all 0s.

What am I doing wrong?

Will ft2 support FM sound source in the future?

For example, take the first 16 channels as FM and the last 16 channels as PCM? Just like the chord mobile phone sound source equipped with YMU762MA-3 sound chip, FM timbre instruments can be customized? Will this idea come true?

Missing files in `CMakeLists.txt`

Some files are missing in CMakeLists.txt. After adding these two lines, it works.

    "${ft2-clone_SOURCE_DIR}/src/modloaders/*.c"
    "${ft2-clone_SOURCE_DIR}/src/smploaders/*.c"

Strange issue with ghost notes

Found strange issue: ghost note played pitched up. Too difficult to explain, but here mod in witch i found issue. Best to hear in first
pattern, track 3. Tested in others trackers, including your protracker clone, all plays same not pitched sound.
mod.zip

Support Android? 支持安卓?

尊敬的開發者大大:請問FT2可以順利的移植到移動安卓設備上嗎🤔?如果可以的話就讓他在移動設備上再次大放廣彩吧😊!

Dear developer: Can FT2 be successfully ported to mobile Android devices🤔? If possible, let him show off again on mobile devices😊!

Link problem on Fedora 33 for 1.44

I compile ft2 1.44 on Fedora 33.
At the end of the compilation, I've got a link problem:

/usr/bin/ld: /tmp/ft2-clone.wMgGnp.ltrans2.ltrans.o: in function `doLoadMusic.lto_priv.0':
/home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:187: undefined reference to `loadDIGI'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:184: undefined reference to `loadSTM'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:183: undefined reference to `loadS3M'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:185: undefined reference to `loadMOD'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:182: undefined reference to `loadXM'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_module_loader.c:186: undefined reference to `loadSTK'
/usr/bin/ld: /tmp/ft2-clone.wMgGnp.ltrans5.ltrans.o: in function `loadSampleThread.lto_priv.0':
/home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_sample_loader.c:107: undefined reference to `loadWAV'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_sample_loader.c:106: undefined reference to `loadIFF'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_sample_loader.c:109: undefined reference to `loadRAW'
/usr/bin/ld: /home/collette/rpmbuild/BUILD/ft2-clone-1.44/src/ft2_sample_loader.c:108: undefined reference to `loadAIFF'
collect2: error: ld returned 1 exit status

No stereo output

Does not play stereo .mod files in stereo.
Does FT2 support stereo output?

CMakeLists.txt change in order to compile in Linux

Dear developer,

I was trying to compile ft2-clone in Linux (I am using Arch Linux) and I had to replace two lines inside CMakeLists.txt:

The lines that had to be replaced where:

target_link_libraries(ft2-clone
    PRIVATE m asound pthread ${SDL2_LIBRARIES})

And they were replaced by:

target_link_libraries(ft2-clone PRIVATE asound SDL2::SDL2)

Without this change, Linux is unable to build ft2-clone, it does not find SDL2 libraries.

Packaging for Fedora / non-free graphics

Hi!

I recently wanted to add ft2-clone to Fedora, and it was pointed out to me (and I indeed missed that) that ft2-clone includes some non-free graphics unlike pt2-clone:

https://github.com/8bitbubsy/ft2-clone/blob/master/src/gfxdata/bmp/LICENSE.txt

This raises several questions:

  • From the LICENSE.txt, it is unclear which file is under which license. Is it that only "ft2AboutLogo.bmp" and "midiLogo.bmp" are under the same license, or what files are those "the rest of the graphics"?
  • Were there any attempts to convince the original author to release under a different license?
  • If the original author agrees to release under a different license, would you agree to release your changes under a different license, too?
  • Would you consider it acceptable to swap these graphics with different, free graphics?

Thanks.

Link against LIBCMT.lib (/MT) instead of MSVCRT.lib (/MD)

Hi @8bitbubsy

First I must congratulate your for the brilliant and excellent work you are doing.

I am sure you may have looked at this. However, I want to understand your choice of linking against the DLL version of MSCRT instead of the static version.

I see that you have a text file explaining folks to download and install the Microsoft Visual C++ Redistributable. However, you could avoid this by just linking against LIBCMT.lib (/MT) in the VS Solution. This will allow you to get rid of the above text file and save your users one step.

Volume slide up command key?

Hello,
can't find a key to enter "volume slide up" command in volume column. '+' nor "shift + '+'" not work for me. US keyboard layout.

Make CMakeLists.txt work on mac os too

In NixOS we use cmake to build this package, and I noticed that it'd only require a few CMakeLists.txt modifications to make it work on mac os too, namely:

  • define __MACOSX_CORE__ instead of __LINUX_ALSA__ when building on mac os
  • add the -framework CoreAudio -framework CoreMIDI -framework CoreServices -framework Cocoa linking flags when building on mac os (not sure how this is done in cmake)
  • only link asound when building on linux

this would make it possible to drop the ad-hoc make-*.sh scripts

wayland mouse offset

on wayland, when using hardware mouse, the mouse click is not registered where the mouse cursor is.

i tinkered a bit and this could be a good fix:

diff --git a/src/ft2_video.c b/src/ft2_video.c
index 026a8e6..49b4f79 100644
--- a/src/ft2_video.c
+++ b/src/ft2_video.c
@@ -1006,10 +1006,10 @@ bool setupRenderer(void)
 	else
 		SDL_ShowCursor(SDL_FALSE);

-	// Workaround: SDL_GetGlobalMouseState() doesn't work with KMSDRM
+	// Workaround: SDL_GetGlobalMouseState() doesn't work with KMSDRM/Wayland
 	video.useDesktopMouseCoords = true;
 	const char *videoDriver = SDL_GetCurrentVideoDriver();
-	if (videoDriver != NULL && strcmp("KMSDRM", videoDriver) == 0)
+	if (videoDriver != NULL && (strcmp("KMSDRM", videoDriver) == 0 || strcmp("wayland", videoDriver) == 0))
 		video.useDesktopMouseCoords = false;

 	SDL_SetRenderDrawColor(video.renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);

i've tested above change in:

  • i3 (xorg)
  • sway (wayland)
  • weston (wayland)

and it seems to fix the issue (and not break on xorg).

Clicking with mouse increments settings too fast

I'm running Pop_OS! and whenever I click on a setting to increment it up or down it increments far too fast for me to be precise. Settings such as BPM, speed, pattern, anything to do with the GUI is incredibly difficult to get to a specific value. I've tried both the pre-compiled binaries and building it from source myself and they both yield the same result.

1.41 build faild

I try to build 1.41 on Fedora 32 64 bits and the build fails with the following error:

[ 15%] Building C object CMakeFiles/ft2-clone.dir/src/ft2_events.c.o
/usr/lib64/ccache/cc -D__LINUX_ALSA__ -isystem /usr/include/SDL2  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DNDEBUG   -o CMakeFiles/ft2-clone.dir/src/ft2_events.c.o   -c /home/collette/rpmbuild/BUILD/ft2-clone-1.41/src/ft2_events.c
/home/collette/rpmbuild/BUILD/ft2-clone-1.41/src/ft2_config.c: In function 'setConfigFileLocation':
/home/collette/rpmbuild/BUILD/ft2-clone-1.41/src/ft2_config.c:636:4: error: 'result' undeclared (first use in this function)
  636 |    result = chdir(".config");
      |    ^~~~~~

TAB key puts cursor in a weird place when having more than 8 channels

How to reproduce:

Start FT2 clone, add 2 channels (making it 10) and keep pressing TAB. On the last channel, the view does not wrap around to channel 1 and the cursor is stuck in a weird place in between channels 9 and 10.

Something like this (where the square brackets should represent the cursor):

CH9         CH10
--- -- 0[00 -]-- -- 000 

Note inputs then end up on channel 1.

This is with v1.28 on Win64.

weird behaviour with Touchscreen

I am using FT2 Clone with a Windows 8 tablet, and it works great except the touchscreen has one issue: when I touch to click, the click appears always in the last position I touched the screen, not the one I am currently touching. Basically if I touch twice in the same place it will click the button under the touchscreen, but if I try to touch something else, it always click first on the last position. A sort of workaround is to not click (touch) but drag and position where I want to click, then touch twice and goes ahead, which makes all the experience ultra slow and cumbersome. Is there a reason for this? I only have this issue with FT2 Clone and with PT2 Clone, all other app works as expected with touchscreen

thank you

Regression: v1.80 -> 1.81 on FreeBSD

After updating from version v1.80 to v1.81, the following regression occurs:

ft2-clone /tmp/some.xm

The audio track plays normal but 'Error' box appears:

image

As soon as OK is pressed the player crashes:

Segmentation fault (core dumped)

Here is what I get from gdb:

$ gdb /usr/local/bin/ft2-clone 
GNU gdb (GDB) 14.1 [GDB v14.1 for FreeBSD]
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd14.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/ft2-clone...
(No debugging symbols found in /usr/local/bin/ft2-clone)
(gdb) r
Starting program: /usr/local/bin/ft2-clone 
[New LWP 213570 of process 72069]
[New LWP 213571 of process 72069]
[New LWP 213572 of process 72069]
ALSA lib seq_hw.c:529:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory

MidiInAlsa::initialize: error creating ALSA sequencer client object.


Thread 4 received signal SIGSEGV, Segmentation fault.
Address not mapped to object.
[Switching to LWP 213572 of process 72069]
0x00000000002e414c in ?? ()
(gdb) continue
Continuing.
Audio write: Invalid argument
[Detaching after fork from child process 72269]
[LWP 213571 of process 72069 exited]

Thread 4 received signal SIGSEGV, Segmentation fault.
Address not mapped to object.
0x00000000002e414c in ?? ()
(gdb) bt
#0  0x00000000002e414c in ?? ()
#1  0x000000000027c7a1 in ?? ()
#2  0x000000000027cddf in ?? ()
#3  0x000000080045a2ad in ?? () from /usr/local/lib/libSDL2-2.0.so.0
#4  0x00000008004e83f9 in ?? () from /usr/local/lib/libSDL2-2.0.so.0
#5  0x0000000800518a75 in thread_start (curthread=0x804f70900) at /usr/src/lib/libthr/thread/thr_create.c:290
#6  0x0000000000000000 in ?? ()
Backtrace stopped: Cannot access memory at address 0x7fffdfbfc000

The following SDL versions are present on the system:

sdl2-2.30.1
sdl2_gfx-1.0.4
sdl2_image-2.6.3_5
sdl2_mixer-2.6.3_1
sdl2_ttf-2.20.2

ALT F4 doesnt copy ??

Seems like the copy paste keybindings dont work. When I ALT + F4 it prompts me if I want to exit or not. When I try to paste nothing happens.

Im using the version in Linux Mint software repository.

Sound Recording not working on Big Sur

Is there a way around this? It has to do with permissions to use audio input
also would be great a way to stop audio recording without keyboard
thank you

Invisible obstacles in nibbles

When setting the desktop color to black, all the obstacles in nibbles are invisible. Could be a case of "it's not a bug, it's a feature" (aka blind mode), but maybe a warning message would be nice if the desktop color/luminance is set too low to play without surprises. :)

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.