jakobkallin / rpg-ambience Goto Github PK
View Code? Open in Web Editor NEWBring your tabletop RPGs to life with sound and visuals.
Home Page: http://rpg-ambience.com
License: GNU General Public License v3.0
Bring your tabletop RPGs to life with sound and visuals.
Home Page: http://rpg-ambience.com
License: GNU General Public License v3.0
ActiveX might be used to solve this.
If it is possible with the Web Audio API and with a relatively simple algorithm, an option for automatically choosing overlap durations based on audio volume would be useful.
When an adventure is deleted, the previous adventure in the list is automatically selected. However, it should not do this if the previous adventure is also deleted. Instead, it should select the first adventure earlier in the list that is not also deleted, or create a new adventure if all other adventures are deleted.
This seems to happen because an element (the editor) is absolutely positioned above an element that is fading in (the theater).
When RPG Ambience is started, all media for the most recently created adventure is automatically loaded. If the user then switches to another adventure, or creates a new one, the loading of media for the previous one continues, which slows down the loading of media for the adventure that is currently being edited. Preferably the current adventure should somehow be given priority.
A media item added to a scene is immediately stored in the adventure object, even before the request to add it to IndexedDB has completed. If the application is terminated during this time, the adventure data links to a media ID that is not in the database. This is not a fatal error; it simply generates a request for a non-existing key in the database, causing errors when trying to reference properties of the dataURL variable inside MediaLibrary.load().
This can be done, for example, by making the browser window narrower than the screen and then dragging the splitter to outside the window.
The underlying problem is that the visual fade is handled in one location while the audio fade is handled in another. It might be possible to create a single animation object that manipulates the properties of several objects, assuming that used-defined volume levels (such as 40%) are also respected and not scaled from 0 to 100 as the opacity.
In order to make RPG Ambience more flexible for users with multiple monitors, the application should support detaching the editor into a new tab separate from the stage.
The library interface is now sufficiently general that adding support for a new storage service basically involves implementing auth, file selection, file download, and file upload.
There are at least two challenges in adding support for Dropbox:
At present, image and sound files can only be used in adventures by specifying their URL or file path. This is due to several factors:
<input type="file">
is notoriously difficult to style, making it inflexible to build a user interface around.This could be solved by replacing them with dropdowns including the most common choices. For background color, this is acceptable because white and black are the colors that will be used 99% of the time. For text color, however, it's a bit more difficult. Either way, some way will be needed to choose a transparent background color.
This happens when the effective text size of the small preview is less than 6 pixels. Apparently, Chrome has a minimum font size when sizing with ems. This does not happen in Firefox and IE.
Sometimes, opening the player in a new window in IE makes it impossible to play scenes.
I believe that this is a problem with the "sortable" library, but I'm not sure.
Firefox will fail pretty much silently if given an MP3 file to play. Most users will be surprised by this, so it should be explicitly signaled in some way. This could also be extended to unsupported image formats, providing that there is a programmatic way of determining support in the current browser. Image formats have better support across the board, however, so it's not necessary.
The duration is NaN or Infinity, and when the audio starts playing it is continuously equal to the current time, causing crossover to occur all the time. This seems to be an issue related to object URLs, but it's not very clear when the problem arises or why.
Playing a scene multiple times in very quick succession (by pressing the same key several times, for example) causes the earlier scenes to not stop properly and leaves multiple copies of the same track playing. These tracks can not be stopped in the usual manner and do not even show up in the document.
Firefox treats whitespace differently from Chrome, so unassigning a hotkey with Backspace is not possible in Firefox.
This is because Opera does not support IndexedDB, which makes it impossible to save media using the current system.
Currently, only audio pauses when the pause command is issued. A scene that is fading in our out when the command is issued should also stop fading.
Copying a scene in Opera only adds a new empty scene. This is due to a for loop over prototypal properties not working as it does in other browsers.
When a fading scene is started and then faded out, trying to play the scene again right away throws an exception. This is because a state variable in the animation object is not properly set right away when the scene ends. Instead, it is set later when a callback occurs after a timeout.
Scripting here refers to sequencing of scenes through some interface, not necessarily with a programming language.
It is not clear yet whether this is an error in the application or in the library.
Video should fade and loop as expected.
This is because text-overflow is difficult to master. Preferably the track name should take up all the space that is not used by the removal button. This should be easier with flexbox but that is not stable or widely supported yet.
This behavior seems to only appear on rpg-ambience.com, not when testing locally.
This could be solved by simply falling back to the regular text input. Hopefully, at least Firefox will catch up soon enough. Using polyfills is tedious and should be avoided unless crucial.
I haven't figured out how to do this but I may have just misunderstood.
I want to be able to have the audio from scene to scene crossfade from one to the next. I've found a way to get this working but it's clunky, I'm wondering if there's a way to improve this.
Assumptions :
The result of my work around is that I maintain two copies of every scene, one as a foreground and one as a background. This way I can fade between any two scenes by picking the opposite type (foreground for background, background for foreground).
Is there a way to be able to fluidly crossfade from any scene to any other scene?
My use case is that I'm establishing scenes based on theme/emotion of a scene. I've got
Ideally I'd like to be able to setup these scenes (only once, not having 2 copies of each), and just hit a single hotkey to crossfade from one to the next. I'd like to also retain the cool functionality of using background for music and foreground for things like the dragon roar in your example. This would mean being able to crossfade from background to background and then play over the background a foreground sound effect.
This is because Google Drive is queried for files with the mime type application/json
, and then filtered by extension. The Google Drive API does not appear to allow queries based on file extension. Unfortunately, this means that manually created files will not be downloaded.
The GUI needs hints (such as mouseovers) and/or a help section.
This means that adventures cannot be uploaded and media cannot be downloaded after a certain amount of time.
Google Drive integration was adapted from examples in Google's documentation that for some reason use the scope granting full access to the user's Drive. This is despite their documentation in other places pointing out that apps can only access files created or opened with the app itself.
The scope should be changed from https://www.googleapis.com/auth/drive
to https://www.googleapis.com/auth/drive.file
.
Users who only use audio scenes or have multiple monitors might want to control scene playback visually instead of memorizing keyboard shortcuts. A new "Playback" tab in the user interface would allow for this without affecting the rest of the interface.
This can be solved in at least three ways:
Setting shuffle to true and repeat to false for a playlist causes it to continue until the last track in the playlist happens to play, which is not very useful. Preferably, it should play each track exactly once but in random order.
While IE 10 does support IndexedDB, there are some peculiarities that prevent other parts of the code from working. They can probably be fixed after some debugging.
The reason is that the polyfill delivers values to a native color input, which in browsers supporting it does not allow for transparency.
The "Hide Editor" button is automatically hidden when pressed, but it can be pressed twice by using the keyboard while the hidden button still has focus. Doing so hides the editor permanently, likely because the hide button saves the current editor width, which is 0 when the editor is hidden.
Although they have received a bad reputation due to being overused in slideshow applications, animations done right can make scenes more immersive. At present, fading scenes in and out is the only supported type of animation.
It should be possible to save adventures to cloud storage services like Dropbox and Google Drive.
This is because a download is added to the download queue even if there are no other downloads.
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.