Introducing NODE!

Community Forums/Showcase/Introducing NODE!

Naughtical(Posted 2016) [#1]
Why is it called NODE? Well... you see... it just sounded cool, k?

So, NODE. It's a livestream friendly music player that I made and is now open source! I'd love some feedback on it, so if you're willing, give it a try!

Link:
https://github.com/adiaden/node

If you're new to GitHub, go into the releases folder and right click the .zip file and 'save link as'. And I would prefer feedback as an issue. Sure, it's meant for actual issues but... you see... it's just an easy way to leave a comment (I get emailed whenever there is an issue).

Anyway, thanks everyone! Have a nice day!


RemiD(Posted 2016) [#2]
Maybe post a screenshot and a brief video to demonstrate what is your program ?


virtlands(Posted 2016) [#3]
Hi adiaden, this Node player is fantastic. It does have a tiny app window.


----------------------------------------------------------------------------
Update!

As an app comparison,
NODE uses approx 15% CPU
VLC uses approx 1% CPU
----------------------------------------------------------------------------

Mysteriously, after running NODE for about 30 minutes the NODE window disappeared and the program crashed. (on Windows 10, 64bit)


MadJack(Posted 2016) [#4]
v

perhaps it should be called 'nope'?


...and I'll see myself out.


col(Posted 2016) [#5]
Sounds interesting.

https://github.com/adiaden/node/blob/master/files/build10/src.bb#L108
Now there's I've not seen in a long while.


virtlands(Posted 2016) [#6]
Yes,
adiaden's "Gosub logic" code is unusual, and may cause a stack imbalance.


Dan(Posted 2016) [#7]

adiaden's "Gosub logic" code is unusual, and may cause a stack imbalance.



He is using Gosub in the Right way.
He makes sure that each Gosub call is ended with return and thus he is using it similar as a function call.

Can you explain us what you mean with the Stack imbalance, because, when i run following code, there is no stack imbalance even after 10000 calls.

And in this way is his code written:




virtlands(Posted 2016) [#8]
You're right Dan, I didn't see the bigger picture.
There is no stack imbalance, (not in this case).

Any Gosub followed by a Return should work just fine.


Naughtical(Posted 2016) [#9]
Haha thanks for the input

Yeah, Node is still in development
I know it uses more CPU than VLC but it's supposed to be a program for streaming, not normal playback.

As for Gosub, I really don't want to deal with a lot of function calls. It's kinda frustrating and Gosub seems to do the job quite well.

EDIT: I looked through the code and found no trace of what could be causing it to crash on Windows 10. Since I don't have Windows 10, I probably won't find the cause any time soon.

EDIT 2: About CPU usage... why is it using 15%? That's a lot for an audio player, let alone most Blitz programs...

EDIT 3: WOAH... It uses 50% of my CPU without playing any music at all! Either I should slow down the Gosub calls or I should switch to functions. Or maybe perhaps BlitzMax...

I'm considering a rewrite.


Naughtical(Posted 2016) [#10]
Just found out why it used so much CPU... I needed a 60hz timer... *sigh*

xD


RustyKristi(Posted 2016) [#11]
cool program and even better with bb platform.

blitz3d or plus?


Naughtical(Posted 2016) [#12]
@RustyKristi Plus

I wouldn't be able to achieve that non-windows style GUI without using a GUI window and canvas.

Otherwise it would just take up more screen space which is the opposite of what I was going for :P


RustyKristi(Posted 2016) [#13]
nice. Actually, it makes no difference as they can be all achieved either in max,b3d,plus even monkey. :-)

That's why I'm asking because most bb code they can converted across these platforms if the code is not that complicated (at least for me).


Naughtical(Posted 2016) [#14]
Wait... you can't use GUI in B3D, can you? With the exception of 3rd party libs/dlls or rebuilds, of course.


virtlands(Posted 2016) [#15]
EDIT 3: WOAH... It uses 50% of my CPU without playing any music at all!...

Hmmm, maybe you can include some SetPriorityClass function into the NODE, to enable less CPU usage.


SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN);


Change own process priority in C: http://stackoverflow.com/questions/29621/change-own-process-priority-in-c

MSDN SetPriorityClass Function: https://msdn.microsoft.com/en-us/library/ms686219(v=vs.85).aspx

SetThreadPriority and SetPriorityClass on StackOverflow : http://stackoverflow.com/questions/13631644/setthreadpriority-and-setpriorityclass


(.. If necessary, allow the program to restart itself into a low-priority mode, especially if it does not have superuser status.)

SUPERUSER - Changing Windows process priority via command line : http://superuser.com/questions/620724/changing-windows-process-priority-via-command-line

In Windows, run command from batch file with reduced priority : http://superuser.com/questions/285840/in-windows-7-run-command-from-batch-file-with-reduced-priority

Okay, I'm out of ideas now.


RustyKristi(Posted 2016) [#16]
Wait... you can't use GUI in B3D, can you? With the exception of 3rd party libs/dlls or rebuilds, of course.


non Windows GUI, yes you can. Actually, blitz3d and blitzplus almost the same except blitzplus has native Windows GUI support but no built-in 3D and vice versa.


Naughtical(Posted 2016) [#17]
@Virtlands It's actually because the program is fast enough to cycle through the loop more than 20K times per second. I made a patch this morning, so now NODE uses only 1% of CPU on my end (60hz timer is what I used, in case someone has a 144hz or higher monitor.)

@RustyKristi That's cool, I'll try that out sometime.

EDIT: NODE version 0.14 (the latest one) now uses less CPU than VLC. I will be releasing the patch soon!


virtlands(Posted 2016) [#18]
I made a patch this morning, so now NODE uses only 1% of CPU.


That's very clever.

(I'm not familiar with "timers" in programs; It's the first time I've herd of it.)


RustyKristi(Posted 2016) [#19]
Yes try it and btw, it looks like you're new to github but there's a proper way to create releases instead of just committing exes and zips in a folder.

https://help.github.com/articles/creating-releases/

So they can find it here when you have created them: https://github.com/adiaden/node/releases

It's a good way to separate source code and binaries. It will also be easy for other github users.

Example Blitz3D and BlitzMax repo release are here:
https://github.com/blitz-research/blitz3d/releases
https://github.com/blitz-research/blitzmax/releases


But it's still up to you since it is your repo. ;-)

NODE Looks nifty and interesting btw, I will check it out


Naughtical(Posted 2016) [#20]
@virtlands It's a very useful command, especially when you want to limit the FPS or rather Hz of the game's logic and graphics controls. I recommend you try it out :)

@RustyKristi Thanks! That should be a lot nicer than what I have right now (right now the source code is bundled with the release, which I'd like to avoid in the future).


virtlands(Posted 2016) [#21]
THanks for all that information. I still have a lot to learn about GitHub, and those timer things. Will be back.

I have the username "Vitty" on VitHub.


RustyKristi(Posted 2016) [#22]
no prob, your player project looks good.