MixedInKey in beaTunes

Konrad Scherb's Avatar

Konrad Scherb

29 Jun, 2016 10:08 AM

I am using beaTunes for a while and i noticed that the key-results differ from MixedInKey.
The problem is that sometimes, beatues is paring tracks that aren´t compatible with each other, according to MixedInKey (and my hearing).
Is it possible to "override" the key results of beatunes by showing the "initial key" instead (like in rekordbox, tractor, etc)?

  1. Support Staff 1 Posted by hendrik on 29 Jun, 2016 10:21 AM

    hendrik's Avatar

    Hey Konrad,

    Actually, beaTunes does show the "initial key" (id3 TKEY).
    Have you tried to synchronize beaTunes? Via File -> Synchronize?

    Cheers,

    -hendrik

    PS: If you want beaTunes to use a different format to display keys, see http://blog.beatunes.com/2014/08/beatunes-404-configurable-key-form... Especially the example for the custom renderer may be something you'd like to try out: https://www.beatunes.com/en/beatlet-keytextrenderer.html Installation of beaTlets is described on https://www.beatunes.com/en/beatlet-getting-started.html

  2. Support Staff 2 Posted by hendrik on 29 Jun, 2016 10:23 AM

    hendrik's Avatar

    That all aside: Do you use an iTunes-based library? And do you have embedding non-iTunes fields on or off (in beaTunes general prefs)?

    You might want to read http://blog.beatunes.com/2013/10/so-where-exactly-does-beatunes-sto...

  3. 3 Posted by Konrad Scherb on 29 Jun, 2016 11:11 AM

    Konrad Scherb's Avatar

    Than you for the fast reply.

    I use an iTunes-based library.

    I synched the files, but beaTunes still shows me the keys in another notation:

  4. Support Staff 4 Posted by hendrik on 29 Jun, 2016 11:16 AM

    hendrik's Avatar

    You don't have embedding turned on: "Schreibe nicht-iTunes-Felder in Audiodateien" is off.
    This means, beaTunes never writes keys to the files.

    but beaTunes still shows me the keys in another notation:

    Oh — is the notation the issue?
    Notation being how you display/render a key value.
    I was under the impression you had issues with different keys.

  5. 5 Posted by Konrad Scherb on 29 Jun, 2016 11:24 AM

    Konrad Scherb's Avatar

    No,

    my problem is that beaTunes does´t show the keys I analyzed with MixedInKey before.
    MixedInKey stores the key-values in the "initial-key" tag.
    I don´t want beatunes to analyze the keys, i want it to show the results from MixedInKey.

    As the process for analyzing keys used by beaTunes isn´t as reliable as MixedInKey, it is creating different values. I already disabled the option to analyze keys inside beaTunes, I now want it to show the results from MixedInKey.

  6. 6 Posted by Konrad Scherb on 29 Jun, 2016 11:31 AM

    Konrad Scherb's Avatar

    Mixed in Key offers this option:

  7. 7 Posted by Konrad Scherb on 29 Jun, 2016 11:44 AM

    Konrad Scherb's Avatar

    But why isn´t it viewable in beaTunes?

  8. Support Staff 8 Posted by hendrik on 29 Jun, 2016 04:45 PM

    hendrik's Avatar

    What happens when you make a small change for one of those tracks in iTunes (like change the name slightly), what a few seconds and the run synchronize I'm beaTunes again.

    Does beaTunes update the key to the value you expect?

    -hendrik

  9. 9 Posted by Konrad Scherb on 29 Jun, 2016 11:01 PM

    Konrad Scherb's Avatar

    I changed some names without any effect.
    I also added a new Track in order to see if beaTunes is able to read the MixedInKey Tag from new files, but no. The key-field which should display "4A" is still empty. It looks like beaTunes isn´t able to read initial Key-Tags at all?

  10. Support Staff 10 Posted by hendrik on 30 Jun, 2016 04:55 AM

    hendrik's Avatar

    Hey Konrad,

    I can assure you that beaTunes is very capable of reading the initial key.
    Can you please send me one of those files that don't show a key in beaTunes. I'd very much like to see what's going on.

    Thank you,

    -hendrik

  11. 11 Posted by Konrad Scherb on 30 Jun, 2016 08:29 AM

    Konrad Scherb's Avatar

    I also checked the file with rekordbox. It displays "4A", but beaTunes keeps showing the key as F Minor, which is correct but not the notation I want it to appear.
    Does beaTunes convert the Camelot notation due to licensing problems?

  12. Support Staff 12 Posted by hendrik on 30 Jun, 2016 08:52 AM

    hendrik's Avatar

    It displays "4A", but beaTunes keeps showing the key as F Minor, which is correct but not the notation I want it to appear.

    I'm sorry, but you confuse me:

    • In your earlier message you claimed that beaTunes is not showing the key at all.
    • Now you say that the notation is not the one you like (implying that a key is shown).

    I guess that "not showing" problem magically solved itself?

    Thanks for the file you sent. I have tested it and after a synchronization, beaTunes correctly displays the key as F minor, equivalent to 9m in OpenKeyNotation or 4A in Camelot notation. As mentioned in http://help.beatunes.com/discussions/problems/45171-mixedinkey-in-b... , you can choose how beaTunes displays keys in its tables. If you need this to be Camelot, I can highly recommend to install the sample beaTlet from https://www.beatunes.com/en/beatlet-keytextrenderer.html#groovykeyt... simply by placing this file into your plugin directory (more about installing a beaTlet, here). After a restart of beaTunes, choose the new "Tonart Anzeige Format" named "Custom.groovy" in the general preferences.

    This will change how beaTunes displays keys. Note that the rules for writing are different: For writing the "Tonart-Export Format" is used. For interoperability reasons only specification-conform ID3 tags or OpenKey strings are allowed.

    Hope this helps,

    -hendrik

  13. 13 Posted by Konrad Scherb on 30 Jun, 2016 09:23 AM

    Konrad Scherb's Avatar

    Is this the right directory? I can´t get it to work.

  14. Support Staff 14 Posted by hendrik on 30 Jun, 2016 09:31 AM

    hendrik's Avatar

    Is this the right directory?

    No. That's the System's library folder (/Library).
    You need the User's library folder (~/Library).

    The easiest way to get there is to open Finder, then open Go and Go to Folder (also available under Shift-⌘-G). Then enter ~/Library/Application Support/beaTunes/Plug-Ins in the dialog. The ~ is essential.

  15. 15 Posted by Konrad Scherb on 30 Jun, 2016 09:59 AM

    Konrad Scherb's Avatar

    Ok, thank you for helping me. I am one step closer. I changed var ab = key.isMajor() ? "A" : "B" to var ab = key.isMajor() ? "B" : "A" to fit it in the camelot notation, however some keys differ from each other.

  16. 16 Posted by Konrad Scherb on 30 Jun, 2016 10:05 AM

    Konrad Scherb's Avatar

    beaTunes obviously gets it´s key-information somewhere else.

  17. Support Staff 17 Posted by hendrik on 30 Jun, 2016 10:17 AM

    hendrik's Avatar

    beaTunes obviously gets it´s key-information somewhere else.

    Unless you run some analysis: Definitely not.

    I don't know what you did, but is a scenario like this possible?

    • You analyzed some songs with beaTunes (incl. the key) or the songs already had some keys set, when you created the beaTunes library.
    • Then you analyzed the same songs with MixedInKey and some results were different
    • Or you changed the key with some other external software
    • These external changes are not reflected in beaTunes

    The reason for this kind of behavior would be that beaTunes is not made for picking up on external changes to the key field when used in iTunes mode. It's optimized for picking up changes in the iTunes-supported fields, though.

    You are probably better off using a folder-based library, if you want that kind of behavior. Please see http://blog.beatunes.com/2015/01/different-libraries-for-different-... and create a folder-based library. Does that work better for you?

    Cheers,

    -hendrik

  18. 18 Posted by Konrad Scherb on 30 Jun, 2016 10:41 AM

    Konrad Scherb's Avatar

    It does work with a folder-based library, however some files are missing even though the directories of the tracks are the same, the mood and color information is also missing in the new folder-based library.

    Isn´t there any way to refresh the key information in "iTunes-mode"?

  19. 19 Posted by Konrad Scherb on 30 Jun, 2016 10:45 AM

    Konrad Scherb's Avatar

    I am probably better off changing the different keys inside beaTunes manually, let´s just hope it isn't that much to change...

  20. 20 Posted by Konrad Scherb on 30 Jun, 2016 10:48 AM

    Konrad Scherb's Avatar

    Download new Tracks => analyze with MixedInKey => add to iTunes => sync with beaTunes I think that´s the best work order

  21. Support Staff 21 Posted by hendrik on 30 Jun, 2016 12:24 PM

    hendrik's Avatar

    It does work with a folder-based library, however some files are missing even though the directories of the tracks are the same,

    Folder-based libraries support some file types the iTunes library does not support and vice versa. iTunes for example does not support OGG or FLAC, beaTunes 4 in folder mode does not support AIFF.

    the mood and color information is also missing in the new folder-based library.

    If you haven't checked the "embed non-iTunes fields" box before analysis, the values have not been written to the files and therefore cannot be read.

    Isn´t there any way to refresh the key information in "iTunes-mode"?

    No. Currently there is no way to achieve that except for re-creating the entire library.

  22. 22 Posted by RobG on 27 May, 2020 10:39 AM

    RobG's Avatar

    Hi,

    Is this functionality available to beaTunes 5? (Mac OS X 10.13.6, Folder-based library)

    I'm a new beaTunes user, with a new library on a clean OS X build. My music files are a mix of filetypes but mostly Flac and Mp3. ID3 tags have been updated from Discogs via Yate app and non-ASCII characters in filenames replaced by ATGR's "TrT" Track Rename Tool.

    I want to manage my library with beaTunes rather than iTunes due to the file limitations of iTunes (and Music) and my DJ software is Traktor Pro 3 on Mac and Algoriddim DJ on iOS.

    I use Mixed In Key and the Camelot system, but since overhauling my library the files have not yet been processed by MIK. My beaTunes 'Key Display Format' is currently Traditional (OK).

    I've followed the instructions on this page...
    https://www.beatunes.com/en/beatlet-keytextrenderer.html#jythonkeyt...
    ... using each of the different code/file options, trying one at a time in the correct plugin folder in my home library (ie: ~/Library... not /Library) and restarting beaTunes. The following issues are seen:

    CustomKeyRenderer.py

    javax.script.ScriptException: SyntaxError: no viable alternative at input 'nsi' in /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.py at line number 1 at column number 8
    
    Uploaded files: CustomKeyRenderer.py

    CustomKeyRenderer.groovy

    javax.script.ScriptException: unexpected char: '' @ line 1, column 2. in /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy at line number 1
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.a(SourceFile:245)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:213)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.createInstance(SourceFile:252)
        at com.tagtraum.core.app.ScriptEngineAdapter.createInstance(SourceFile:88)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:122)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:65)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at com.tagtraum.core.app.ScriptPluginLoader.load(SourceFile:66)
        at com.tagtraum.core.app.PluginManager.init(SourceFile:1500)
        at com.tagtraum.beatunes.BeaTunes.<init>(SourceFile:327)
        at com.tagtraum.beatunes.BeaTunes.a(SourceFile:1989)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy: 1: unexpected char: '&#39; @ line 1, column 2.
       {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf610
        ^


    1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:139)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
    at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:194)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:205)
    ... 31 more</code>
    
    
    
    
    Uploaded files: CustomKeyRenderer.groovy

    CustomKeyRenderer.rb "A fatal error occurred during initialization: java.lang.NoClassDefFoundError: sun/misc/Unsafe"
    Uploaded files: (Ruby attempt 1)CustomKeyRenderer.rb Ruby attempt 1.zip

    CustomKeyRenderer.rb "A fatal error occurred during initialization: java.lang.NoClassDefFoundError: sun/misc/Unsafe"
    Uploaded files: (Ruby attempt 2)CustomKeyRenderer.rb Ruby attempt 2.zip

    CustomKeyRenderer.js beaTunes now opens again, but the plugin is not listed in Preferences - Plugins - Installed (whereas CustomKeyRenderer.py and CustomKeyRenderer.groovy did appear in the Installed list, but appeared ~struckthrough~ )

    Lastly, after closely re-reading the thread in case I'm missing something, I tried the linked file: https://raw.githubusercontent.com/beatunes/beaTlet-samples/master/g...
    (NOTE: This file defaults to filename r.html, so had to be renamed on download)

    javax.script.ScriptException: unexpected token: < @ line 1, column 1. in /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy at line number 1
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.a(SourceFile:245)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:213)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.createInstance(SourceFile:252)
        at com.tagtraum.core.app.ScriptEngineAdapter.createInstance(SourceFile:88)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:122)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:65)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at com.tagtraum.core.app.ScriptPluginLoader.load(SourceFile:66)
        at com.tagtraum.core.app.PluginManager.init(SourceFile:1500)
        at com.tagtraum.beatunes.BeaTunes.<init>(SourceFile:327)
        at com.tagtraum.beatunes.BeaTunes.a(SourceFile:1989)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy: 1: unexpected token: < @ line 1, column 1.
       <html>
       ^


    1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
    at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:194)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:205)
    ... 31 more</code>
    
    
    
    
    Uploaded files: Download Linked File As.jpg
    (Downloaded file)CustomKeyRenderer.groovy

    Very lastly (I hope!), I noticed the downloaded file is blank (!!!) so I opened the link in my browser and pasted the text in via TextEdit.app

    javax.script.ScriptException: unexpected token: < @ line 1, column 1. in /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy at line number 1
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.a(SourceFile:245)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:213)
        at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.createInstance(SourceFile:252)
        at com.tagtraum.core.app.ScriptEngineAdapter.createInstance(SourceFile:88)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:122)
        at com.tagtraum.core.app.ScriptPluginLoader.a(SourceFile:65)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at com.tagtraum.core.app.ScriptPluginLoader.load(SourceFile:66)
        at com.tagtraum.core.app.PluginManager.init(SourceFile:1500)
        at com.tagtraum.beatunes.BeaTunes.<init>(SourceFile:327)
        at com.tagtraum.beatunes.BeaTunes.a(SourceFile:1989)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    /Users/Web/Library/Application Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy: 1: unexpected token: < @ line 1, column 1.
       <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
       ^


    1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
    at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:194)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.tagtraum.core.app.ScriptEngineAdapter$GroovyScriptEngineAdapter.evalFile(SourceFile:205)
    ... 31 more</code>
    
    
    
    
    Uploaded files: (pasted from link)CustomKeyRenderer.groovy Again, this file appears in Preferences - Plugins - Installed, but is ~struckthrough~

    I've now spent about 3 hours just trying to get beaTunes to show Camelot keys! Please help!

  23. Support Staff 23 Posted by hendrik on 29 May, 2020 10:14 AM

    hendrik's Avatar

    When downloading the file, your browser apparently fails to save it as plain text, but instead chooses some HTML format.

    To work around this, please do the following:

    • Go to https://raw.githubusercontent.com/beatunes/beaTlet-samples/master/g...
    • Select All using ⌘-A
    • Copy to clipboard using ⌘-C
    • Create a new file with TextEdit
    • Make sure it's plain text with Format -> Make Plain Text (this option does not exist, if it's already plain text)
    • Paste the code using ⌘-V
    • Save the file as CustomKeyRenderer.groovy in the beaTunes plugin directory.
    • Ensure that TextEdit did not add a (hidden) .txt extension to the file name. If it did, remove the extension so that .groovy is the extension. You can check using Get Info for that file in Finder.
    • Restart beaTunes.
    • In the Key Display Format options you should now be able to select Custom.groovy

    Alternatively, if you have wget installed, you could also just execute:

    wget -O ~/Library/Application\ Support/beaTunes/Plug-Ins/CustomKeyRenderer.groovy https://raw.githubusercontent.com/beatunes/beaTlet-samples/master/groovy/CustomKeyRenderer.groovy
    

    in the Terminal.

  24. 24 Posted by RobG on 29 May, 2020 07:57 PM

    RobG's Avatar

    OK, we're good to go. Followed all of that and restarting beaTunes in 5...4...3...

  25. 25 Posted by RobG on 29 May, 2020 08:09 PM

    RobG's Avatar

    It's ALIVE!

    Thank you!!! It worked. Maybe it was the plain text thing? No clue.

    Maybe at some point I might need to edit the .groovy so the 'A' and 'B' are swapped, like Konrad did?

    var ab = key.isMajor() ? "A" : "B" to var ab = key.isMajor() ? "B" : "A" to fit it in the camelot notation

    But I'll leave things as-is for now. Once my test library is in a state I'm happy with I'll see what MiK does and make some comparisons

  26. Support Staff 26 Posted by hendrik on 30 May, 2020 09:42 AM

    hendrik's Avatar

    Maybe it was the plain text thing?

    Most likely.

    Maybe at some point I might need to edit the .groovy so the 'A' and 'B' are swapped, like Konrad did?

    Yep... that needs to be swapped. In fact, I just did the swap on GitHub.

  27. 27 Posted by RobG on 30 May, 2020 10:47 AM

    RobG's Avatar

    This works perfectly! Thanks

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Already uploaded files

  • Problem.png 375 KB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac