jwktje / langorhythm

Prototype for text to music
117 stars 12 forks source link

Application requirements / first run issues #1

Open therebelrobot opened 8 years ago

therebelrobot commented 8 years ago

So I found you from an Andrew Huang video, and tried to get this up and running, though I'm running into some difficulties.

I got Meteor installed, and can successfully get the server up, but once inside the app, I'm not sure what is needed to run this. Here's the view I'm seeing:

I did receive a request for access to my "midi" devices, though I don't have any connected... Do you have any tips on getting this up and running from scratch?

jwktje commented 8 years ago

Do you get any errors in the Javascript console of your browser? You need to use the latests version of Google Chrome to make sure the Web Midi API is available. I don't check right now if this API is supported in the browser you are using. So that might play a role

therebelrobot commented 8 years ago

So here's the console error:

and where it is in the code

Maybe I'm just not understanding the MIDI API well enough. Does this application require hardware to be connected to use? The research I'm seeing on the web API makes it seem like that. I don't have any specific digital music peripherals currently, so if that's a requirement I may just be out of luck :/

jwktje commented 8 years ago

I'm pretty sure that just means there is no place for the Web Midi API to send the data out to. You could add a virtual midi bus. That's what I did. I used these steps. https://www.ableton.com/en/help/article/using-virtual-MIDI-buses-live/

On windows you need Loop Midi for this. If you still cant get it to work after setting up a midi bus just report back with your progress :)

therebelrobot commented 8 years ago

Kk. I'm getting closer. I have the virtual MIDI port set up now (I'm on Mac), and now when I press play, it gives me a 500 server error from Meteor, with the following showing up as the browser response:

Error: ENOENT, no such file or directory '/Users/therebelrobot/git/personal/langorhythm/.midifiles/genBuffer.mid' at Object.fs.openSync (fs.js:439:18) at Object.fs.readFileSync (fs.js:290:15) at [object Object].route.action (app/routes.js:8:27) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1) at packages/meteor/dynamics_nodejs.js:121:1 at [object Object].urlencodedParser (/Users/therebelrobot/.meteor/packages/iron_router/.1.0.9.h50v2o++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:84:40) at packages/iron:router/lib/router.js:277:1 at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)

and the following showing up in the meteor terminal:

=> App running at: http://localhost:3000/
I20160218-09:28:22.342(-8)? Exception while invoking method 'generateMidiFile' Error: /Users/jwktje/Development/Meteor/langorhythm/.midifiles/ does not exists
I20160218-09:28:22.343(-8)?     at [object Object].Meteor.methods.generateMidiFile (app/server/server.js:157:19)
I20160218-09:28:22.343(-8)?     at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1617:1)
I20160218-09:28:22.343(-8)?     at packages/ddp/livedata_server.js:648:1
I20160218-09:28:22.343(-8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160218-09:28:22.343(-8)?     at packages/ddp/livedata_server.js:647:1
I20160218-09:28:22.343(-8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160218-09:28:22.344(-8)?     at [object Object]._.extend.protocol_handlers.method (packages/ddp/livedata_server.js:646:1)
I20160218-09:28:22.344(-8)?     at packages/ddp/livedata_server.js:546:1
W20160218-09:28:22.405(-8)? (STDERR) Error: ENOENT, no such file or directory '/Users/therebelrobot/git/personal/langorhythm/.midifiles/genBuffer.mid'
W20160218-09:28:22.405(-8)? (STDERR)     at Object.fs.openSync (fs.js:439:18)
W20160218-09:28:22.405(-8)? (STDERR)     at Object.fs.readFileSync (fs.js:290:15)
W20160218-09:28:22.405(-8)? (STDERR)     at [object Object].route.action (app/routes.js:8:27)
W20160218-09:28:22.405(-8)? (STDERR)     at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20160218-09:28:22.405(-8)? (STDERR)     at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
W20160218-09:28:22.405(-8)? (STDERR)     at packages/meteor/dynamics_nodejs.js:121:1
W20160218-09:28:22.406(-8)? (STDERR)     at [object Object].urlencodedParser (/Users/therebelrobot/.meteor/packages/iron_router/.1.0.9.h50v2o++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:84:40)
W20160218-09:28:22.406(-8)? (STDERR)     at packages/iron:router/lib/router.js:277:1
W20160218-09:28:22.406(-8)? (STDERR)     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
W20160218-09:28:22.406(-8)? (STDERR)     at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)

The only file present in langorhythm/.midifiles/, from what I can tell is theTest.mid. Is there another midi file I'm missing? (I cloned the repo and am working in master)

therebelrobot commented 8 years ago

Also, that error stack references /Users/jwktje/Development/Meteor/langorhythm, which doesn't exist in my system. Is that the path it's trying to access?

Cowaii commented 8 years ago

I have the same problem, although im running Linux. It cant find the midi file :/ exactly same error message as Rebel. And your last comment Rebel, I think you have to go into the server.js and change the destination to your own.

therebelrobot commented 8 years ago

Good catch on that path. PR submitted for that.

jwktje commented 8 years ago

Merged it! Thanks for the fix. I'm quite busy so I appreciate the help.

Edit: Also, let me know if your issue is resolved by this so I can close the issue :)

therebelrobot commented 8 years ago

So that PR solved the second weird thing I saw in the call stack, the path not matching. Even after that update, though, I'm getting the issue of it failing on midi file generation. Here's the current error call stack:

=> App running at: http://localhost:3000/
I20160219-08:49:47.460(-8)? Exception while invoking method 'generateMidiFile' Error: /Users/therebelrobot/git/personal/langorhythm/.meteor/local/build/programs/.midifiles does not exists
I20160219-08:49:47.461(-8)?     at [object Object].Meteor.methods.generateMidiFile (app/server/server.js:158:19)
I20160219-08:49:47.461(-8)?     at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1617:1)
I20160219-08:49:47.461(-8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160219-08:49:47.461(-8)?     at packages/ddp/livedata_server.js:648:1
I20160219-08:49:47.461(-8)?     at packages/ddp/livedata_server.js:647:1
I20160219-08:49:47.461(-8)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20160219-08:49:47.461(-8)?     at [object Object]._.extend.protocol_handlers.method (packages/ddp/livedata_server.js:646:1)
I20160219-08:49:47.461(-8)?     at packages/ddp/livedata_server.js:546:1
W20160219-08:49:47.541(-8)? (STDERR) Error: ENOENT, no such file or directory '/Users/therebelrobot/git/personal/langorhythm/.midifiles/genBuffer.mid'
W20160219-08:49:47.541(-8)? (STDERR)     at Object.fs.openSync (fs.js:439:18)
W20160219-08:49:47.541(-8)? (STDERR)     at Object.fs.readFileSync (fs.js:290:15)
W20160219-08:49:47.541(-8)? (STDERR)     at [object Object].route.action (app/routes.js:8:27)
W20160219-08:49:47.541(-8)? (STDERR)     at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20160219-08:49:47.541(-8)? (STDERR)     at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
W20160219-08:49:47.542(-8)? (STDERR)     at packages/meteor/dynamics_nodejs.js:121:1
W20160219-08:49:47.542(-8)? (STDERR)     at [object Object].urlencodedParser (/Users/therebelrobot/.meteor/packages/iron_router/.1.0.9.h50v2o++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:84:40)
W20160219-08:49:47.542(-8)? (STDERR)     at packages/iron:router/lib/router.js:277:1
W20160219-08:49:47.542(-8)? (STDERR)     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
W20160219-08:49:47.542(-8)? (STDERR)     at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)

And this occurs when I type text into the text box below the drop down, as shown here:

-local langorhythm

Maybe I'm just not using the fields right? None of them are labeled, so I'm kinda just shooting in the dark a bit...

Cowaii commented 8 years ago

Im probably wrong but i think that box is for the BPM, the box below however. If you type in that one, and then press calculate tempo, then you should get the BPM in the 2nd :)

therebelrobot commented 8 years ago

@Cowaii tried that, no joy :/

KadetKai commented 8 years ago

Actually, I don't think it has very much to do with what you put in the fields. I just tried it without putting anything anywhere, and it still did the process with no errors.

screen shot 2016-02-19 at 8 37 03 pm

And I had a similar problem (Also on Mac) but my issue was solved the moment I changed the destination to Meteor.tempDir = "/Users/GameHead/Downloads/langorhythm-master/.midifiles/"; as Cowaii and jwktje mentioned. Maybe the code you added to make it a dynamic path is leading it to the wrong destination. When you check the server.js file, does the string for Meteor.tempDir match that second error, where it says "ENOENT, no such file or directory"?

That-Guy42 commented 8 years ago

I am having these exact same problems but unlike Sycadelikm Meteor.tempDir = "/Users/2015First/Downloads/langorhythm-master/.midifiles/"; is not helping. I just get a message saying: "'Meteor.tempDir' is not recognized as an internal or external command, operable program or batch file." No audio is going to my headset and it is simply not working. It is probably the ENOENT problem but I don't know. I am running it on windows 10 64bit in chrome with the loopMIDI app running alongside.

ekureina commented 8 years ago

I'm having a similar problem on debian jessie (linux) 64bit in chromium. Where in the code is the directory supposed to be created?

ekureina commented 8 years ago

@Sycadelik yeah, the dynamic path is going to the wrong loaction. The path expression should be: path.resolve(path.resolve('.'), "../../../../../.midifiles/"). Now it's saving the midi file to .midifilesgenBuffer.mid instead of .midifiles/genBuffer.mid.

jwktje commented 7 years ago

Hi everyone. Just letting you guys know. You van now try the web version if you have trouble running the Meteor version: http://kickthejetengine.com/langorhythm/