Git Product home page Git Product logo

max-mxj's People

Contributors

benbrackenc74 avatar cassiel avatar jeremybernstein avatar jkcmusork avatar pslack avatar tap avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar  avatar

max-mxj's Issues

Verify Jitter Java JNI works

There are some potential issues regarding jitter java JNI stuff (which is inside jitlib currently) and I guess it's worth some testing with the Java 1.8 JDK. Essentially we include explicitly a very old JNI header and make all calls through a global jvm pointer.

I don't know how this works or doesn't work with the new Java 1.8 JDK, but it is working with Java 1.6 JDK. If there are binary incompatibilities with this Jitter JNI stuff, we might need to do some extraction of the jitter JNI stuff out of jitlib too.

mxj net.maxhole errors and does not work

From a user:

I have a computer running 10.11 and Java 1.6 and this seems to run mxj net.maxhole fine.

I have another computer running 10.12 and Java 1.8 (Sierra won’t run the deprecated 1.6 runtime anymore) and mxj net.maxhole throws a couple errors and refuses to work:

net.maxhole: socket error. java.net.SocketException: Can't assign requested address
Have you already joined that group?

net.udp.send/receive is working.

@pslack any ideas on this one?

Select java version that Max uses

From the beta list:
I saw that in may use an option to select java version in max.java.config.txt

max.java.jvm.version 1.7.0_45

It produces a message at max startup:
(mxj) attempting to to set java version to 1.7.0_45

But fails to do so, as I'm getting at the end:
Plateform=Apple Mac, Java Language=fr, Java version=1.8.0_102, System version=10.11.6

(I have the following java versions:
/Library/Java/JavaVirtualMachines//1.6.0.jdk
/Library/Java/JavaVirtualMachines//jdk1.7.0_45.jdk
/Library/Java/JavaVirtualMachines//jdk1.8.0_102.jdk

My question/request :

In MXJ, you're probably using some stuff to detect the location of java.
Is it possible to add an option in max.java.config.txt, to select ourself, statically the location of the java JRE or JDK ?

For example:
max.java.jvm.path /Users/myself/Documents/MyProjectsMax7/jdk1.7.0_45.jdk

If this variable is not present, you just do as you're doing now to detect java, and if it is present, you try to load java from the given location. If it fails, then failure error and that's it. If the java version is not compatible (32/64) with the max version, then error failure and that's it. After failure, it may (or not) fallback to your original way of finding java.

The path should be either absolute, or relative to Max Runtime (or anything else specified).
This way, we may also use this WONDERFULL functionnality to distribute our generated runtime applications.
It eliminates the problems of asking users to install the proper version of java and to be able to set it as default java version, .....
It is important to be able to specify a relative path.

This will be wonderful and I don't think it will cost too much time, as it's just another way to find the java home.

max-mxj~ package - update and fix the readme

Some updates can be made to the max-mxj~ package readme

  • The max-mxj~ package needs to be updated to include a line that tells you to navigate to https://www.java.com/en/download/ to get it running on Windows to download the JRE. The SE Development kit alone will need the JRE downloaded as well, or mxj~ object will come up bogus. Perhaps this doesn't need to be in the readme and can be in the "requirements."

  • For the sentence regarding the renaming of the JDK, it is not necessary as the folder is named jdk1.8.1 when downloaded from https://www.oracle.com/java/technologies/downloads/

  • It says "Build as on MacOS" , but Windows doesn't use Xcode.

  • There are a few typos, "embedded" is consistently spelled incorrectly.

  • Also, the s3 link under continuous integration is currently broken

And from Alex:

A user was unable to open MaxScore on their Windows machine. I could repro on my windows 11 machine, and ultimately found that I needed to download a fresh JRE in addition to the JDK 18 in order to get MaxScore (and in fact, any mxj classes) working.

This was surprising to me, as I thought that the JDK included the JRE.

However, I could confirm that this could get mxj working on Windows 11, and it worked for the user as well. I recommended the user also update to JDK 18 from the JDK 17 that shipped with MaxScore.

max.java.config.txt generation

This doesn't seem to be noted anywhere (apart from email threads) so adding here to ensure it isn't lost.

@cassiel wrote this a few years ago to improve the maintenance of the dreaded max.java.config.txt file:

    https://github.com/cassiel/topherizer

Whether you think it’s an improvement depends very much on your opinion of Clojure, but it gives some indication of the complexity of classpaths we were building (we regularly blew the 4K length limit).

need to provide link for java-missing notification

Currently we use object_error_obtrusive() in the mxj_safe extension.

Instead we should do something like the following:

            if (patcher) {
                char message[512];
                char dontshowid[512];
                char url[512];
                snprintf_zero(message, sizeof(message), "Max %d.%d.%d is available", x->m_reported_version_major, x->m_reported_version_minor, x->m_reported_version_revision);
                snprintf_zero(dontshowid, sizeof(dontshowid), "maxversion_%d.%d.%d", x->m_reported_version_major, x->m_reported_version_minor, x->m_reported_version_revision);
                snprintf_zero(url, sizeof(url), x->m_reported_target_url->s_name);
                jpatcher_error_obtrusive((t_jpatcher*) patcher, NULL, message, "Learn more...", url, gensym(dontshowid));
            }

But to do this we need a version of Max that exports jpatcher_error_obtrusive() from the kernel.

Reference files moved to package and updated with OS/Arch/JDK compatibility info

Unless, there is a reason to leave the reference files inside the Max application, it seems like moving these to the package for update and maintenance would be preferable. I'm not sure if there are any Java specific vignettes, but if there are I guess that would be good too.

Some additional description of installing JDK and compatibility versions, or link to wiki page, etc would probably be good to put in the reference files.

You need to install Java!

in Max 44ffa21 on Mac, when Java is not present, the user is forwarded to

https://github.com/Cycling74/max-mxj/wiki/Install-Java

instead of

https://cycling74.s3.amazonaws.com/support/java_install.html

{
"version" : "Beta Version 7.2.5 (44ffa21) (64-bit mac)",
"platform" : "mac",
"arch" : "x64",
"osversion" : "Mac OS X Version 10.11.6 x86_64",
"samplerate" : 44100,
"iovs" : 512,
"sigvs" : 64,
"scheduler_in_audio_interrupt" : "on",
"audio_drivername" : "Core Audio",
"audio_driver_subname" : "",
"license" : "permanent full",
"machine_id" : "d16fc902021a959b7520e4a76cc84fa1",
"eventinterval" : 2,
"overdrive" : "on",
"mixerparallel" : "on",
"mixercrossfade" : 1,
"mixerlatency" : 30.0,
"mixerramptime" : 10.0,
"videoengine" : "viddll",
"packages" : {
"Max" : {
"name" : "Max",
"domain" : 1,
"domains" : 1
}
,
"MSP" : {
"name" : "MSP",
"domain" : 1,
"domains" : 1
}
,
"Jitter" : {
"name" : "Jitter",
"domain" : 1,
"domains" : 1
}
,
"Max for Live" : {
"name" : "Max for Live",
"domain" : 1,
"domains" : 1
}
,
"Gen" : {
"name" : "Gen",
"domain" : 1,
"domains" : 1
}
,
"BEAP" : {
"author" : "Matthew Davidson, Peter McCulloch",
"description" : "BEAP (Berklee Electro Acoustic Pedagogy) Modular is a synthesis pedagogical tool.",
"displayname" : "",
"extends" : "",
"extensible" : 1,
"homepatcher" : "",
"max_version_max" : "none",
"max_version_min" : "6.1.10",
"name" : "BEAP",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "1.0.0",
"website" : "https://github.com/stretta/BEAP/wiki",
"domain" : 32,
"domains" : 32
}
,
"max-mxj" : {
"name" : "max-mxj",
"author" : "Cycling '74",
"description" : "Max Java Support",
"version" : "7.0.4",
"domain" : 32,
"domains" : 32
}
,
"MaxDefaultContent" : {
"name" : "MaxDefaultContent",
"domain" : 32,
"domains" : 32
}
,
"MaxIntroLessons" : {
"name" : "MaxIntroLessons",
"domain" : 32,
"domains" : 32
}
,
"Mira" : {
"name" : "Mira",
"author" : "Cycling '74",
"description" : "Mira automatically connects to Max and mirrors your interface.",
"version" : "1.1.8",
"domain" : 32,
"domains" : 32
}
,
"VIDDLL" : {
"author" : "Rob Ramirez",
"description" : "The VIDDLL package installs a Jitter video engine adapter for jit.movie, allowing file playback via the VIDDLL library.\n\nVIDDLL is an interface and set of utilities for cross platform, high performance, random access video playback. VIDDLL is copyright Paul Bamborough and Julian Storer. \n\nThis software uses code of FFmpeg - http://ffmpeg.org - licensed under the LGPLv2.1 - http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html - and its source can be downloaded here - https://cycling74.s3.amazonaws.com/download/ffmpeg-3.0.2.tar.gz",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : "",
"max_version_max" : "none",
"max_version_min" : "7.1",
"name" : "VIDDLL",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "10.9.x"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "7"
}

        }

,
"version" : "1.0.5",
"website" : "https://cycling74.com",
"domain" : 32,
"domains" : 32
}
,
"Video and Graphics" : {
"author" : "Cycling '74",
"description" : "Video and Graphics programming tutorials",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : "",
"max_version_max" : "none",
"max_version_min" : "7.2",
"name" : "Video and Graphics",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "7.2.3",
"website" : "http://www.cycling74.com",
"domain" : 4,
"domains" : 36
}
,
"Vizzie" : {
"author" : "Cycling '74",
"description" : "With VIZZIE, you just grab a few simple modules, connect them together and almost instantly have a VJ rig or interactive video work, complete with real-time effects.",
"displayname" : "",
"extends" : "",
"extensible" : 1,
"homepatcher" : "",
"max_version_max" : "none",
"max_version_min" : "6.1.10",
"name" : "Vizzie",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "1.0.2",
"website" : "http://cycling74.com/2010/11/19/introducing-vizzie/",
"domain" : 32,
"domains" : 32
}
,
"CNMAT Externals" : {
"author" : "CNMAT",
"description" : "A collection of Max tools created by researchers at CNMAT in Berkeley, CA.",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : null,
"max_version_max" : "none",
"max_version_min" : "none",
"name" : "CNMAT Externals",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "10.7.x"
}
,
"windows" : {
"platform" : [ "ia32" ],
"min_version" : "7"
}

        }

,
"version" : "1.0.1",
"website" : "http://cnmat.berkeley.edu",
"domain" : 4,
"domains" : 4
}
,
"imp.midi_v1_0" : {
"name" : "imp.midi_v1_0",
"domain" : 4,
"domains" : 4
}
,
"imp.push" : {
"name" : "imp.push",
"domain" : 4,
"domains" : 4
}
,
"jit.mo" : {
"author" : "Cycling '74",
"description" : "Easy motion graphics",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : "jit.mo-AudioVisuals.maxpat",
"max_version_max" : "none",
"max_version_min" : "7.1",
"name" : "jit.mo",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "0.0.4",
"website" : "https://cycling74.com",
"domain" : 4,
"domains" : 4
}
,
"link" : {
"author" : "Cycling '74",
"description" : "Experiments with Ableton Link.",
"homepatcher" : "link.phasor~.maxhelp",
"max_version_min" : "7.2.2",
"name" : "link",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "0.2.0",
"website" : "http://www.github.com/Cycling74/link",
"domain" : 4,
"domains" : 4
}
,
"min" : {
"name" : "min",
"domain" : 4,
"domains" : 4
}
,
"min-api" : {
"name" : "min-api",
"domain" : 4,
"domains" : 4
}
,
"Miraweb" : {
"author" : "Cycling '74",
"description" : "Miraweb miraweb miraweb",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : "miraweb-laucher.maxpat",
"max_version_max" : "none",
"max_version_min" : "7.2.2",
"name" : "Miraweb",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "1.0.0",
"website" : "http://www.cycling74.com",
"domain" : 4,
"domains" : 4
}
,
"PGS-1" : {
"author" : "Cycling '74",
"description" : "From the dark days of Pluggo comes the big fat sound of PGS-1, fully updated with support for MPE controllers.",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : "PGS1-Overview.maxpat",
"max_version_max" : "none",
"max_version_min" : "7.2",
"name" : "PGS-1",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "0.0.5",
"website" : "http://www.cycling74.com",
"domain" : 4,
"domains" : 4
}
,
"RNBO" : {
"author" : "Cycling '74",
"description" : "RNBO",
"displayname" : "",
"extends" : "",
"extensible" : 0,
"homepatcher" : null,
"max_version_max" : "none",
"max_version_min" : "none",
"name" : "RNBO",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "10.7.x"
}
,
"windows" : {
"platform" : [ "ia32" ],
"min_version" : "7"
}

        }

,
"version" : "0.1",
"website" : "http://cycling74.com",
"domain" : 4,
"domains" : 4
}
,
"roli-content" : {
"author" : "Cycling '74",
"description" : "Patches, externals, and BEAP modules for use with Roli Seaboard RISE and other MPE enabled MIDI devices",
"displayname" : "",
"extends" : "BEAP",
"extensible" : 0,
"homepatcher" : "roli_launch.maxpat",
"max_version_max" : "none",
"max_version_min" : "7.2",
"name" : "roli-content",
"os" : {
"macintosh" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}
,
"windows" : {
"platform" : [ "ia32", "x64" ],
"min_version" : "none"
}

        }

,
"version" : "1.0.3",
"website" : "https://cycling74.com/",
"domain" : 4,
"domains" : 4
}

}

}

JRE versus JDK in OSX

JRE on OSX does not work with the new MXJ , users must install the larger JDK for OSX for MXJ to work properly at run time.

NO_INLETS subclass bug

When subclassing MaxObject and using the NO_INLETS helper definition, this can cause a hard crash in max , in my specific case this caused a crash when entering patching mode from presentation mode

in the constructor for a MaxObject subclass we can use the helper function like this to describe an object with no inlets:

public MyMaxObjectSubClass () {
super();
declareInlets(NO_INLETS);
}

When switching to patching mode it seems that the method getInletAssist(int inletIdx) in MaxObject is called from native code without checking first if there are no inlets and thus throws an index out of bounds error in the java system and bringing down the Max process.

This is evident in OSX but not reproduced in Windows as of the writing of this issue

A work around is to declare at least one inlet even if it is not used.

The native crash report (OSX) can look like this as an indication, and this is also an indicator of where the getInletAssist is being called from the native code.

Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff205e2462 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff20610610 pthread_kill + 263
2 libsystem_c.dylib 0x00007fff20563720 abort + 120
3 libjvm.dylib 0x000000012df89aa1 os::abort(bool) + 25
4 libjvm.dylib 0x000000012e0b1e9e VMError::report_and_die() + 2306
5 libjvm.dylib 0x000000012df8b6e6 JVM_handle_bsd_signal + 1131
6 libjvm.dylib 0x000000012df8792b signalHandler(int, __siginfo*, void*) + 47
7 libsystem_platform.dylib 0x00007fff20654d7d _sigtramp + 29
8 ??? 0x00000001405e6d18 0 + 5374897432
9 com.acme.${PRODUCT_NAME:rfc1034identifier} 0x000000012dac04fe maxjava_assist + 222
10 com.cycling74.Max 0x0000000109aff67c assist_getstring + 476
11 com.cycling74.Max 0x000000010986fa29 BoxComponent::paintFrame(t_jgraphics*, _jboxdrawparams*) + 1513
12 com.cycling74.Max 0x000000010986eda8 BoxComponent::paintOverChildren(juce::Graphics&, juce::AffineTransform const&) + 1784

maxchecker dependency isolation

Currently maxchecker poses a problem for embedding Java.

Ideally the code used by maxchecker for Java would be a part of the mxj package. Perhaps maxchecker could be refactored to load a DLL (plug-in), if it is present, for this case.

javadoc

Generated every time by script, or static? Jitter seem to be static with no source? Need to figure out.

c74excludefromcollectives broken

To reproduce:

  1. Use the bb_mxj_less branch of Max
  2. Open the mxj help patcher.
  3. From the File menu choose to build an Application
  4. mxj.mxo will be in the collective (bad)

Optional:

  1. hack the mxj.mxo Info.plist and change c74excludefromcollectives to c74factoryexternal
  2. mxj.mxo will not be in the collective (good)

This problem is of critical importance because it borks the standalone if the standalone is opened on a machine that doesn't have Java installed.

Apple Java not fully functional in some cases

I built this standalone this morning with Max ( f3830e41 ). It is the mxj help patcher.

https://drive.google.com/file/d/0BytN0hS3iGQ2ZkFKU08ydlU5MjQ/view?usp=sharing

It works as it should with no java install. With the Apple Java install ( 2015-001 ) it exhibits problems:

  1. Open in 64-bit: Unable to create JVM
  2. Open in 32-bit: Partially functional, but the "viewsource" does not work and it gives the error about starting on Thread-1 for AWT that is referenced in #25.

This is on OSX 10.11.6

incorrect doc on how to include java and custom classes in a standalone

The documentation for how to include java and custom classes in a standalone on a Mac is incorrect.

It states that to include java:

"Copy the file java/lib/max.jar from the Cycling ’74 folder inside the Max application folder to {Package}/Contents/support/java/lib/max.jar"

...but there is no Cycling74 folder or application folder any more. Also, it turns out that max.jar is already included in a standalone by default, in the ... folder.

I assume that this is where any custom libs and classes should go too? It would be helpful to have some updated documentation on this.

Please note the tutorial and vignette on standalones is also incorrect to the same tune.

Logelloop StartOnFirstThread error

The developers of Logelloop are seeing an error with the latest build using this package.

Here is the link to download the Logelloop SDK package :

http://ftp.logelloop.com/Beta/Logelloop_SDK.zip

You may download and install to try and see yourself.

Once it’s installed and enabled in the package manager, open the following patch:
My_LFX.Logelloop_Track_LFXi.maxpat.

In the console, the following error is posted:

java.lang.InternalError: Can't start the AWT because Java was started on the first thread. Make sure StartOnFirstThread is not specified in your application’s Info.plist or on the command line

Using:
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468-11M4833)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)

Max Beta Version 7.2.5 (1e6b1ae) (32-bit mac)

JavaVM.Framework is statically bound to MaxForLive

Hi I discovered a problem with launching Max inside Live that is stopping me in my tracks from testing the new MXJ with the resources I have. I am reporting stuff I find, apologies in advance if this is redundant, I am not sure if this is already addressed or not so will put it out there.

When launching Live it launches a maxchecker.bundle in a separate process

Apple's JavaVM framework is statically bound to the MaxForLive executable that is bundled inside maxchecker.bundle,

otool -L MaxForLive
MaxForLive:
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0)
/System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

This cannot be statically bound in the new Java handling world, I cannot proceed with any MXJ testing in Live without Java 6 being installed because of maxchecker bringing in Apple's JVM framework. what happens for me in my current scenario is it brings up the "Java 6 not installed" even though I have Java 1.8 installed.

Below is the partial dyld profiling of a Live launch

dlopen(/Applications/Max.app/Contents/Resources/C74/support/maxchecker.bundle/Contents/Resources/MaxForLive.bundle/Contents/MacOS/MaxForLive, 0x00000115)
dyld: resolver at 0x7fff8f5db691 returned 0x7FFF8F5DBFA0
dyld: lazy bind: libsystem_c.dylib:0x7FFF79F11710 = libsystem_platform.dylib:__platform_memmove, *0x7FFF79F11710 = 0x7FFF8F5DBFA0
dlopen(/Applications/Max.app/Contents/Resources/C74/support/maxchecker.bundle/Contents/Resources/MaxForLive.bundle/Contents/MacOS/MaxForLive, 0x00000106)
dyld: Mapping /Applications/Max.app/Contents/Resources/C74/support/maxchecker.bundle/Contents/Resources/MaxForLive.bundle/Contents/MacOS/MaxForLive
__TEXT at 0x10655C000->0x10655CFFF with permissions r.x
__LINKEDIT at 0x10655D000->0x10655D19F with permissions r..
dyld: loaded: /Applications/Max.app/Contents/Resources/C74/support/maxchecker.bundle/Contents/Resources/MaxForLive.bundle/Contents/MacOS/MaxForLive
dyld: Mapping /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
__TEXT at 0x10655E000->0x106563FFF with permissions r.x
__DATA at 0x106564000->0x106565FFF with permissions rw.
__LINKEDIT at 0x106566000->0x10656AAEF with permissions r..
dyld: loaded: /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
dyld: Mapping /System/Library/PrivateFrameworks/JavaLaunching.framework/Versions/A/JavaLaunching
__TEXT at 0x10656B000->0x106570FFF with permissions r.x
__DATA at 0x106571000->0x106571FFF with permissions rw.
__LINKEDIT at 0x106572000->0x10657633F with permissions r..
dyld: loaded: /System/Library/PrivateFrameworks/JavaLaunching.framework/Versions/A/JavaLaunching

classpath problems

Hi @cassiel -- you mentioned via Skype this morning that there are some problems in the latest with classpath. Could please add the details to this issue? Thanks!

Java 9 compatibility

Java 9 has some structural changes, we would want to run the test suites of MXJ on java 9 platforms. This will also be a good indicator of compatibility with later java releases.

mxj and JDK version reporting

It'd be great if we were able to easily know mxj and JDK version information somehow (including max-mxj respos git hash), either listing into the Support Information dictionary that gets sent to support, and/or the max window where the class path is reported (which would also be cool to add to the support information dictionary FWIW).

For reference, this dictionary is bound to gensym("#max:supportinfo")->s_thing

warnings on mac

FR to warn users about the fact that there is no 32 bit support for Java 8 on Mac

It would help us a lot in support

Thank you very much @pslack

mxj.maxhelp (net.udp.send) causes hangs if loaded first

JKC:

  1. launch Max
  2. new patcher
  3. type mxj without any arguments (results in bogus object)
  4. option click to open help file

result: spinning wheel o death

If I instead for #3 type mxj classpath, all is fine. And I can then do everything listed above.

FWIW, I've narrowed down the issue to net.udp.send on my end, which is in the helpfile. The stripped down attached patcher exhibits this problem as well.

Peter:

I'm immersed in the RAII paradigm and so I am naturally curious about the order of operations and who owns what in the startup and teardown of things. Is it possible the udp object can start up after java attaches but not the other way around? does the startup of native UDP tie up some resource that can't be used afterwards (or vice versa)?

I suspect that java has to load before UDP if this is the case, the evidence I have is that I have managed to get Liquid Music running on Sierra 10.12 with max beta 7.2.5 august 4 build, with mxj from August 25th, but in order to do so I had to create what I'm calling a "tickler" patch that simply has an "mxj classpath" object in a simple AMXD patch. When I run this patch (thus firing up java) I'm able to then launch Liquid Music, however, when I just try to launch Liquid Music alone it demonstrates a similar freeze up condition.

JKC:

Yeah, I'm not sure what Java is doing under the hood with native networking code. There are no Cycling '74 JNI dependencies for this case, so it's not the kind of thing that is really under our control or easy to debug. However your analysis sounds essentially correct.

For the time being, I am happy with a (hack) solution of internally the first time always instantiating some kind of "tickler" class that prevents this and potentially other such stalls, if in fact that works synchronously within our mxj object constructor.

It could be that we actually need to service the main thread for Java to actually complete its full initialization process, and that might be what we're seeing here. In such a case, we are in a bit of a bind, since we can't really introduce asynchrony into the construction of objects and patchers, and we would need a way to service whatever RunLoop or other tasks that it needs, without us ending up servicing the queue, scheduler and other such things that we are relying upon waiting until the patcher has fully loaded for proper patcher loading.

package-info.json inclusion

We need to include package-info.json at some point in the creation of the new package.

We also need to arrive at a determination of what the version numbers are going to be

Currently the mxj package version number has been tied loosely to the Max version number, so we need to start at a point above that.

Problem passing String to and from MXJ with Unicode codePoint over 0xFFFF

Hello,
is it possible to pass a String with characters that has a Unicode codePoint over 0xFFFF? It seems to me like the characters get truncated both when received or send over the MXJ objects. Interesting it works when posting from MXJ objects to the Max window.
Any suggestions would be much appreciated.
With best regards,
Mathias

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.