Giter VIP home page Giter VIP logo

opennoteblockstudio's Introduction

Open Note Block Studio logo

Latest version

An open-source continuation of Minecraft Note Block Studio with exciting new features!

Download

You can download Open Note Block Studio here! (Windows-only. Support for other platforms is coming soon!)

Project Status

The current version is considered stable and feature-complete; as such, it's no longer accepting contributions or new features other than minor bug fixes.

In order to future-proof the project and allow us to make further improvements, we're currently in the process of rewriting the program using the Qt framework. You can read more about this and our future plans regarding the project in this discussion!

Issues

To report issues, please head over to the Issues page. You can also join our Discord server to get support and share your creations!

Contributions

This project is written in GameMaker Language (GML). You must have GameMaker Studio 2 in order to open the project and make changes.

Since OpenNBS relies on 32-bit DLLs, you must use GameMaker runtime version 2022.6 as 32-bit support was removed in further versions. Scroll down this page and click 'Older versions' to find the appropriate installer.

If you'd like to contribute, please open an issue before making a pull request!

More

For everything else, please visit our website. You can also follow us on Twitter and YouTube!

opennoteblockstudio's People

Contributors

bentroen avatar chenxi050402 avatar encode42 avatar fluxcapacitor2 avatar heyitsdoodler avatar hielkemaps avatar hielkeminecraft avatar karl-police avatar pf94 avatar user670 avatar yabberish 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

opennoteblockstudio's Issues

Feature: Option to choose priority

It'd be neat to add an optional box in the Preferences to choose what processor priority to run on to reduce slowdowns. (If the program is running as admin)

Datapack export enhancements

Datapacks are amazing and was what NBS2CBS (this thing https://www.youtube.com/watch?v=ADPJg3_KsCM, with visualizer seen here https://www.youtube.com/watch?v=orHr7S1HE9k) was planned to become in 1.13+. I'm so glad someone was able to make a note block player in this thing now.

There are a few enhancements that NBS2CBS has over the datapack export, which I think can be implemented.

The notes playing should adhere to the set volume on the layer they were playing in the NBS file. /playsound supports volume, so I got it working by editing the playing.mcfunction file manually and changing the /playsound commands there. If it could be generated with layer volume values in mind, that would be great.

There should be the ability to add custom instruments to the game, as they can be played via resource packs. The /playsound command simply plays the name of the custom instrument (e.g block.note.trumpet) and, a resource pack that uses that sound ID will play the notes. Else, it is simply inaudible without a resource pack.

This can be extended to actual minecraft sounds, which don't need a resource pack at all to be heard.
Minecraft_Note_Block_Studio_PmUZu81aUU

Stereo support can also be added by playing the sounds a set distance to the left or to the right of the character's head. NBS2CBS did this on a world axis, but 1.13 and up now can do it relative to where the player head is looking, so it should work even better now.

Stereo is currently done through python arguments in the layer names, but this can be changed to a stereo knob which the updated nbs format can include.
Minecraft_Note_Block_Studio_PUad5pMWR6

If you want to reference how NBS2CBS does things, you can download the script here:
Documentation: https://drive.google.com/file/d/1xmLqNz3W82YwYvbVFOAkSULaVRdxfuE7/view
Download: https://drive.google.com/file/d/1ZclKU8HmQqwXoERVak5_32V2VmjsBc3K/view

Feature Request: Compile for Linux.

I use Ubuntu and I'm tired of using wine to run this software but I do understand you need the developer version of GameMaker to compile for Ubuntu.
EDIT: Found out this is a clone of #4.

FATAL ERROR when I open

I installed using the .exe installer and I checked the checkbox to open it and I get this error:


############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_controller:

Attempting to read from outside the buffer, returning 0
at gml_Script_buffer_read_byte
############################################################################################

stack frame is
gml_Script_buffer_read_byte (line -1)
gml_Script_buffer_read_string_int
gml_Script_load_settings
gml_Script_control_create
gml_Object_obj_controller_Create_0

20 tps compatibility for schematic

by alternating the notes played between the lines you could make songs that work with 20tps in survival
noteblock stuff

i think this would be good as you could make the 20tps tempo compatible with survival/schematica

Fatal Error...

Minecraft_Note_Block_Studio_S7xI5ObB1D
Not sure what else to say... I just installed it and opened it up

Bad MIDI conversion (v3.3.8)

In an older version I converted a MIDI containing Cipher by Kevin MacLeod and it sounded somewhat good. After updating to 3.8.8 I converted it again because Minecraft got new noteblock sounds but this time it sounded completely awfull.
Here is what it looked before: http://www.mediafire.com/file/6eft5w281nu2u70/Cipher.nbs/file
And here is what it looks like now: http://www.mediafire.com/file/btl0c0qxeqj2rcb/Bad_Cipher.nbs/file
And this is the MIDI I used: http://www.mediafire.com/file/ldmfa7l820llk78/Cipher.mid/file

The version I used before is the one that is still on the Stuff By David website.

fatal error on start up please help


############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_controller:

Attempting to read from outside the buffer, returning 0
at gml_Script_buffer_read_byte
############################################################################################

stack frame is
gml_Script_buffer_read_byte (line -1)
gml_Script_buffer_read_string_int
gml_Script_load_settings
gml_Script_control_create
gml_Object_obj_controller_Create_0

Crash!

I'm use 60fps mode and playing in stereo.
This is log:


############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_controller:

Push :: Execution Error - Variable Index [0,23] out of range [1,18] - -1.layerstereo(100112,23)
at gml_Script_control_draw
############################################################################################

stack frame is
gml_Script_control_draw (line -1)
gml_Object_obj_controller_Draw_0

Preferences Saving

Currently, the only way to turn fade animations on again after disabling them in the settings is to delete the "settings.onbs" file. A similar issue exists for stereo disabling, except opening a song that includes stereo values will automatically turn it back on.

Doing it the normal way, for some reason, isn't working. I'll try again in a future version, but for now it is a bug.

Feature Request: Smooth horizontal scrolling.

making the memes is hard without a good look of what you've accomplished.

the scrolling scrolls about 1 whole "workspace" screen. i want it to do it a lil smoother m9
at least add a scrolling setting thing for us pl0x

Schematic export must be rewritten to support 1.13+

When exporting a song, it works fine, however... with how Minecraft works, if you have a large enough song, some note blocks have sand and gravel, but are in the air... When playing the song, the sand or gravel (or any other gravity following block) will fall after the note block plays.

The fix? Include a solid block under any blocks that can fall.

trying to import a midi, but always give me a fatal error

i already uninstalled and installed again, i don't know why is this happening to me


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_controller:

Push :: Execution Error - Variable Index [0,15] out of range [1,14] - -1.layerstereo(100112,15)
at gml_Script_toggle_playing
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_toggle_playing (line -1)
gml_Script_control_draw
gml_Object_obj_controller_Draw_0

Dark theme

Playlists: Allow a user to select .nbs files, and the program will play those in order or shuffle.
Mass export: Export many .nbs files in a playlist to .mp3, .midi (from previous request), or any other common formats.
Mass import: Import many .midi files.
Song tabs: A tab system to easily switch between songs.
Dark theme: We need this!

These are just a bunch of suggestions I thought of.

long song broke when i tried to export a midi song to a datapack

___________________________________________ ############################################################################################ FATAL ERROR in action number 1 of Draw Event for object obj_controller: Push :: Execution Error - Variable Index [0,17] out of range [1,15] - 0.(100200,17) at gml_Script_dat_generate ############################################################################################ -------------------------------------------------------------------------------------------- stack frame is gml_Script_dat_generate (line -1) gml_Script_datapack_export gml_Script_draw_window_datapack_export gml_Script_draw_windows gml_Script_control_draw gml_Object_obj_controller_Draw_0

The song:
nbs.zip

Crash on startup


############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_controller:

Attempting to read from outside the buffer, returning 0
at gml_Script_buffer_read_byte
############################################################################################

stack frame is
gml_Script_buffer_read_byte (line -1)
gml_Script_buffer_read_string_int
gml_Script_load_settings
gml_Script_control_create
gml_Object_obj_controller_Create_0

Similar to other cases, but a little different, like #8

Issue with compressing a selection of blocks

Program version 3.4.0


############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_menu:

Push :: Execution Error - Variable Index [0,14] out of range [4144,14] - -1.selection_exists(100089,14)
at gml_Script_selection_code_update
############################################################################################

stack frame is
gml_Script_selection_code_update (line -1)
gml_Script_selection_compress
gml_Script_menu_click
gml_Script_menu_draw
gml_Object_obj_menu_Draw_0

this project has over 10000 blocks so that might be what's causing it

FATAL ERROR in action number 1 of Draw Event

___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_controller:

Variable obj_controller.<unknown variable>(100203, -2147483648) not set before reading it.
at gml_Script_draw_window_midi_import
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_draw_window_midi_import (line -1)
gml_Script_draw_windows
gml_Script_control_draw
gml_Object_obj_controller_Draw_0

When importing from any Midi.

A reinstall fixed the issue. This only happened about a week after use.

Datapack suggestion: sequential playing

Taking a look at the source here, I have a bit of a suggestion for the generation of the data pack. (I'd test it myself but it appears to crash -- not the issue I'm reporting here though :P)

From what I can tell, it generates a function with one /playsound command for each note in the song, and it plays as a score increases, with every note mapped to the time during which it should play. Ultimately, this isn't very efficient for long songs, as tons of score checks are happening every tick.

I have a more optimal solution here which utilizes a sequence of functions with command blocks (sorry, organization not great in this project of mine):
https://github.com/tryashtar/nbs-functions/blob/master/nbsreader/Model.cs#L154

There is one function for every time division, and it plays the notes necessary at that time. Then, it does a /data merge to insert the next function into the command block. The next notes then play next tick, and prepare the next function, and so on. It only runs as many commands per tick as there are notes that tick, instead of one command per note in the entire song.

Anyway, I think an option like this would be more optimal for the data pack. The tick tag and pause/play/looping functions would no longer be necessary, as the playback would be handled by a single repeating command block, which could be powered or depowered to pause or play the song. The only potential disadvantage to my knowledge is the fact that lots of functions are generated, however they can be coalesced somewhat (I have some methods in my project that do as much).

About .nbs

Sorry about I don't know all the function about OpenNoteBlockStudio. How to export the song to .nbs file? I just saw the datapack, mp3 and schematic only.

Show/Hide Piano

In NBS Mod 1.5 you had the option to toggle the piano so you could see/use more layers at once on the screen.

As some of my files use over 100 note block tracks (for note volume and stereo control purposes), I find it hard to traverse the file on a smaller monitor when there is less space to display the notes.

As you can set the notes while scrolling, or via midi keyboard, it would be good if this can be toggled so I have more space for tracks.

Code Error

07 09 2019

This error occurs in the new release version of NBS 3.5.0 when importing the midi file and playing it.
This error was not in NBS 3.4.0 when importing midi files and then playing the imported one.

I stick the used midi file on error.
midi_file.zip

Feature request: Mac/Linux support

Would it be possible to include a Linux port of Open Minecraft Note Block Studio? Perhaps in the form of a .deb package or something.

Changes in file structure are needed

Hi!

There is big issue in current .nbs file format structure. As new instruments are comming to Minecraft the index of first custom instrument changes. There is the problem:

Minecraft version | Instrument count | Custom instrument index
     < 1.12       |      5 (0-4)     |            5
     < 1.14       |     10 (0-9)     |           10
    >= 1.14       |     16 (0-15)    |           16

When you open .nbs file with custom instruments from older version in new version. Custom instruments are changed to regular instruments in new version.

Suggested solution: Add structure version info to first bytes of header and first custom instrument index information near custom instruments count. This way it will be easy for parser to recognize old files and determine from which version the file comes.

FATAL ERROR after updating? Fix here!

When updating to a new version, it may give a FATAL ERROR when you load NBS.
Like here:

image

To fix this, you can either:
1. Remove Note Block Studio completely and install it again
2. Delete the settings.onbs file located inside the Data folder.

In both cases, your settings will unfortunately be reset.

Huge Issue. FATAL ERROR


############################################################################################
ERROR in
action number 1
of Create Event
for object obj_controller:

Attempting to read from outside the buffer, returning 0
at gml_Script_buffer_read_byte
############################################################################################

stack frame is
gml_Script_buffer_read_byte (line -1)
gml_Script_buffer_read_string_int
gml_Script_load_settings
gml_Script_control_create
gml_Object_obj_controller_Create_0

This is the error I am getting. I had the original version of nbs but then I installed your version, about 6 hours later the original version turned into your version, and wouldn't work. When I try installed your version or the original version, I get that error.

Interface is very small on high DPI displays

On high resolution displays the UI is tiny.

image

It would be nice if there were an option to increase UI scale, or otherwise detect DPI and scale everything accordingly. Not sure if it's doable with GML but a UI scale slider might work.

Ability to choose original version for old structure .nbs

New structure of .nbs file solve the future problems, but when somebody decide to upgrade his .nbs file with custom instruments to new structure it will be broken. It would be helpful to add a dialog that pop-up when somebody try to open old file and let him select what is the origin Minecraft version of the file. Then it will be easy to choose right first custom instrument index and save the file in new format.

Feature Request: Unicode Character Support

I'm not sure GMS/GMS2 supports unicode character
but it's nicer to have unicode chars in NBS song name/interface (especially the file names because some languages like Chinese, Japanese or other have a lot of unicode characters which can't be displayed in Note Block Studio)

also it should support unicode characters/default windows right click popup in song name/description field and other input box.

I'm sure GameMaker 8.0 doesn't support unicode characters but I don't know about unicode characters in new GameMaker Studio and Studio 2. So please make this if possible

Change Note Block Sprites

There is an option to change it from using colors to displaying the note block instrument already, but it is ugly.

A lot of the new sounds use similar colours to other instruments (like Bit looking similar to Double Bass, and Xylophone looking similar to Harp), and this inconveniences people who are color blind or under poor light conditions.

What could be done would be altering the shapes of the note blocks, to help differentiate each instrument further. Double bass could be a circular sprite, and xylophone could be a diamond shape. Didgeridoo could be a half-slab.

Example image:
mcnbs_u9RbmueiBC

Support request regarding new .nbs format

I'm currently maintaining a plugin for minecraft. But it uses the old .nbs file format.

If possible, could you contact me on discord? (Stefano#7366). That would be very nice!

Feature request: Export to command block schematic

This would be useful for versions of Minecraft that don't support datapacks yet, and are nice in some old servers. I'd suggest looking at SethBling's MCEdit plugin that would convert the note blocks into command blocks for looking into.

Issue when playing Datapack functions.

Whenever trying to play a command in a command block, it doesn't happen, I've looked through the commands and the only reason its happening is everything is to @s. I'd request it to put it to @p so you can run it through command blocks.

Loop

Suggestion: Loop button to toggle whether playing NBS forever or only once

Feature Request: Export as MIDI

The title is pretty self-explanatory, a feature to export your NBS creations as MiDi files.

This would be useful for people that want to use their creations for different things outside of noteblocks.

Crash when deleting custom instruments

If a custom instrument note block is placed on the timeline, and you remove the custom instrument from the instrument table, the program will crash.

Steps to replicate:

  1. Start a new project
  2. Create a custom instrument (no need for sound)
  3. Place the custom instrument onto the timeline.
  4. Remove the custom instrument from the instrument settings (without deleting the note on the timeline).
Unable to find any instance for object index '100031' name '<undefined>'
at gml_Script_draw_block
######
stack frame is
gml_Script_draw_block (line -1)
gml_Script_control_draw
gml_Object_obj_controller_Draw_0

Crash when trying to open any MIDI (v3.3.8)


############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_controller:

Variable obj_controller.(100203, -2147483648) not set before reading it.
at gml_Script_draw_window_midi_import
############################################################################################

stack frame is
gml_Script_draw_window_midi_import (line -1)
gml_Script_draw_windows
gml_Script_control_draw
gml_Object_obj_controller_Draw_0

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.