danfrz / plebtracker Goto Github PK
View Code? Open in Web Editor NEWNcurses based audio tracker program inspired by goattracker and milkytracker
License: MIT License
Ncurses based audio tracker program inspired by goattracker and milkytracker
License: MIT License
I don't think this will fix the issue all of the time, but it might improve it in a lot of cases.
Regardless it's something to check out.
This may help when adding waveforms together, may sound nicer. Investigate
I am trying to add a Dockerfile to this project, to ease installation (you can try it out by just installing docker)
I am having trouble getting it to run with this Dockerfile
:
FROM alpine:3.7
COPY . /usr/local/plebtrk
WORKDIR /usr/local/plebtrk
RUN apk add --no-cache alpine-sdk ncurses-dev fftw-dev alsa-utils inotify-tools
RUN cd ./Tracker/src && make && ./INSTALL.sh && cd ../../Interpreter/src && make && ./INSTALL.sh
ENTRYPOINT ["plebtrk"]
docker build .
Sending build context to Docker daemon 58.77MB
Step 1/6 : FROM alpine:3.7
---> 3fd9065eaf02
Step 2/6 : COPY . /usr/local/plebtrk
---> Using cache
---> e456797f511b
Step 3/6 : WORKDIR /usr/local/plebtrk
---> Using cache
---> bf0c1788b56e
Step 4/6 : RUN apk add --no-cache alpine-sdk ncurses-dev fftw-dev alsa-utils inotify-tools
---> Using cache
---> e9ba090f6443
Step 5/6 : RUN cd ./Tracker/src && make && ./INSTALL.sh && cd ../../Interpreter/src && make && ./INSTALL.sh
---> Running in d5036bb0b085
g++ -c -o ../obj/cmdbar.o cmdbar.cpp -std=c++11 -I../include
cmdbar.cpp: In function 'bool editor::getCommand(const char*)':
cmdbar.cpp:150:16: error: 'get_wch' was not declared in this scope
get_wch(&in);
^
make: *** [Makefile:23: ../obj/cmdbar.o] Error 1
The command '/bin/sh -c cd ./Tracker/src && make && ./INSTALL.sh && cd ../../Interpreter/src && make && ./INSTALL.sh' returned a non-zero code: 2
do I need to install ncurses differently in alpine, maybe?
renderPattern should use different buffers for each renderTick call. Then filters can be performed within those renderTick call. Finally renderPattern would mix all of the filtered buffers together.
There is a short click sound on the beginning of song playback, after the pulse table was implemented.
The click isn't present for the duration of a whole row segment so it's an artifact, doesn't seem to change when pulse parameters change so may not be directly related.
When I wrote some of them I wasn't really focussed on making them work perfectly, I was mostly focussing on perfecting Pulse1. Pulse2 and Hybrid were afterthoughts so their output should be verified.
Confirmed not working:
When I started the project I underestimated the value of stereo in music. When I get to live interpretation in the tracker (using OpenAL?) I should also add panning. These both will involve a number of infrastructural changes.
Goattrk uses a table for panning, and I think you can do some pretty cool stuff with that.
However there are so many tables visible all the time that you can barely see your composition within 80 character lines, and that's a use case I'd like to support.
Proposal: have filter and pan tables always hidden and provide a modifier key that when pressed displays pan and filter tables in place of the wave and pulse tables.
Bytes Per Row is exactly what the number is, "bytes" is vague.
Hold on. It's only bytes per row for 8 bit implementation. Shouldn't it be samples per row?
Regardless. Refactor this.
Use a window function before filtering, that should make filtering actually sound reasonable I hope.
Also, this turns out to be the proper solution to the problem, not adding more song data to the buffer of the filter operating. As a side note, keep the buffer larger than input data and power of 2n, but instead of copying song data in there, have zeroes. Apparently that can make filtering sound better.
This makes the fourier_buffer_size
byte within songs unnecessary.
Also, may end up making window_type option for tracks, set by a function within the filter table.
There's a bug with plebitp where pulse effects will not work properly sometimes. I've noticed it only happens in certain instruments and when it does happen, it happens 50% of the times you play the same segment of the song, which strongly suggests some sort of uninitialized malarkey. This was happening even before the pulse table was introduced.
N action in pulse table currently directly copies the functionality of the wave table's which is not correct.
Write documentation for pulse table,
Remove documentation for functions moved from wave table
Is there any plan to support any of popular tracker formats?
Thanks.
Currently I do not see any movement or position indication when playing a track using plebtrk's :play
function.
Would be nice to have.
Hello sir.
You have a great app, unfortunately this app does not have a logo yet, may I donate a logo for your app?
To reproduce:
Start plebtrk
Copy the order
Clone the pattern
Go to Order 0
Remove pattern 0
Go back to Order 1
Crash happens
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.