Home of the Squeezebox™ & Transporter® network music players.

View Poll Results: What platform do you want to use LMS Remote on?

Voters
49. You may not vote on this poll
  • Mac OS X

    34 69.39%
  • Windows

    15 30.61%
  • Linux

    8 16.33%
Multiple Choice Poll.
Page 2 of 7 FirstFirst 1234 ... LastLast
Results 11 to 20 of 69
  1. #11
    Senior Member
    Join Date
    Feb 2008
    Posts
    4,114
    Quote Originally Posted by leolabs View Post
    Hello everyone,
    I've continued to work on the next version of LMS Remote, so here it is:

    • Added a new Settings Window
    • Added advanced Server Settings like ports or username/password
    • Added Growl-specific settings
    • Added setting for default width and height of the artwork window
    • Added setting that allows you to set whether the artwork window should stay on top of other windows
    • Added the possibility to open the node-webkit Developer Console for better debugging
    • Added two new Function-buttons: Favorites and Quick Search, functionality is coming in the next version
    • Many, many bug fixes


    The new version can be downloaded here: http://cdn-new.leolabs.org/lms-remote.zip

    I've started a poll asking what platforms (Linux, Mac, Windows) you want LMS Remote to be available on, so I can see which platform will come next.
    As always, It'd be great if you would try the new version and give some feedback so I can see what I should work on next.

    Many Regards,
    Leo Bernard
    Windows and Android?
    Touch, Logitech Radio, Logitech UE Radio, O2 Joggler + SqpOS
    UPnPBridge - 2 paired Sonos Play1 speakers; Rocki - Sony SRS-BTM8 speaker; Pioneer WX-SMA1 speaker; - PURE One Flow internet radio: PURE Jongo S3x ; Jongo T2; Libratone Zipp
    Castbridge - Chromecast 1 + Chromecast Audio
    AirplayBridge - Loewe Airspeaker
    SB Player - Fire TV
    ------------------------------------------------------------------------------------

  2. #12
    Junior Member
    Join Date
    Mar 2014
    Posts
    21
    Hello castalla,
    I've packaged the App for Windows, you can download it at http://cdn-new.leolabs.org/lms-remote-win.zip. I'm not sure if everything is working, but I would be happy if you would try it out and give some feedback

    Regarding Android, I'm not sure how well the UI will work on touch-enabled devices, but I'll see if I can get an Android device to test it. When everything works UI-wise, it shouldn't be that difficult to port LMS Remote to Android.

    Many Regards,
    Leo Bernard
    Last edited by leolabs; 2014-03-15 at 16:41.

  3. #13
    Senior Member
    Join Date
    Feb 2008
    Posts
    4,114
    Quote Originally Posted by leolabs View Post
    Hello castalla,
    I've packaged the App for Windows, you can download it at http://cdn-new.leolabs.org/lms-remote-win.zip. I'm not sure if everything is working, but I would be happy if you would try it out and give some feedback

    Many Regards,
    Leo Bernard
    thanks! I'll try it ....

    feedback - confusing setup pages. Then just responds with 'server took too long to respond'
    Last edited by castalla; 2014-03-15 at 16:48.
    Touch, Logitech Radio, Logitech UE Radio, O2 Joggler + SqpOS
    UPnPBridge - 2 paired Sonos Play1 speakers; Rocki - Sony SRS-BTM8 speaker; Pioneer WX-SMA1 speaker; - PURE One Flow internet radio: PURE Jongo S3x ; Jongo T2; Libratone Zipp
    Castbridge - Chromecast 1 + Chromecast Audio
    AirplayBridge - Loewe Airspeaker
    SB Player - Fire TV
    ------------------------------------------------------------------------------------

  4. #14
    Senior Member erland's Avatar
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    11,010
    Some bugs in the latest version:
    - If I enter the IP address of my server and don't select player immediately, the display just shows "Uncaugut node.js Error, TypeError: Cannot call method "jsonRequest" of undefined at eval (file:///Users/erland/Downloads/LMS%20Remove.app/Contents/Resources/app.nw/js/script.js:256:39). It works if I'm fast enough to select player. It might be a good idea to let it automatically select one of the player after connecting to a new server.
    - The <-> button seems to close the app if I click it when the app is maximized, I assume this shouldn't happen ?
    - The x button just turns the whole screen gray when clicked when the app is in maximized mode

    And some more improvement suggestions/ideas:
    - Not sure if it's possible, but if it's possible to show the album cover in the growl notification instead of the "note" icon, that would be really great.
    - I wonder if it would be preferred to show the artist name and maybe also the album name below the track title in the artwork window, currently if the track has a long title it's barely possible to see the artist.
    - It could be a good idea to provide a settings options from the tray menu so one doesn't have to open the artwork window to reach the settings dialog
    - I wonder if it would make sense to offer it as a dashboard widget in OSX. Not sure how people use the OSX dashbaord but this feels like something that could fit there. Note, I'm not requesting this functionality myself because I've not yet realized how/when/how I should take advantage of the OSX dashboard.
    - To make configuration easier, it should auto discover the LMS server, this will make it do the right thing for 95% of all users and will avoid the initial configuration completely. The Java code related to this from my Squeeze Display Android app follows below in case it helps you how to do it. Basically you need to do a UDP broadcast on port 3483 and then the LMS server will respond with IP-address, port, name and version and this should be enough information to configure it in LMS Remote app. You still need the manual configuration for people using LMS Remote from a remote location, but for most people using LMS Remote on the local network automatic discovery should work.
    - Maybe you could make it possible to launch LMS from LMS Remote app ? This way I can use LMS Remote as my main controller and just launch LMS from it to browse/search for new music to play.
    - It's a bit confusing then the LMS Remote app launch in "Always on top" the first time and the first thing it does is to ask you for configuration of the server and it opens the server configuration behind the LMS Remote app window. This isn't a big issue, especially if you implement auto discovery, but I thought I'd mention it as it would probably be preferred to launch it initially with "Always on top" disabled and let the user choose if he/she wants to use it in Always on top mode.

    Code:
    package info.isaksson.squeezedisplay;
    
    import android.util.Log;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketTimeoutException;
    
    public class ServerDiscoverer {
    
        public static interface ServerManager {
            void registerServer(Server server);
    
            void discoveryFinished();
        }
    
        public static class Server {
            private String ipAddress;
            private int port;
            private String name;
            private String version;
    
            public Server(String ipAddress, int port, String name, String version) {
                this.ipAddress = ipAddress;
                this.port = port;
                this.name = name;
                this.version = version;
            }
    
            public String getIpAddress() {
                return ipAddress;
            }
    
            public int getPort() {
                return port;
            }
        }
    
        private static final int DISCOVERY_PORT = 3483;
        private static final int TIMEOUT_MS = 5000;
        private static final String DISCOVERY_PACKET = "eIPAD\0NAME\0JSON\0VERS\0";
        private static Thread discoveryThread;
    
        public static void start(final InetAddress broadcastAddress, final ServerManager serverManager) throws IOException {
            if (discoveryThread != null) {
                try {
                    discoveryThread.join();
                } catch (InterruptedException e) {
                    // If it's interrupted we handle it the same way as if it's finished
                    Log.d(ServerDiscoverer.class.getName(), "Interrupted discovery");
                }
                discoveryThread = null;
            }
            discoveryThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    DatagramSocket socket = null;
                    try {
                        socket = sendDiscoveryRequest(broadcastAddress);
                        listenForResponses(socket, serverManager);
                    } catch (IOException e) {
                        Log.e(ServerDiscoverer.class.getName(), "Failure when discover servers", e);
                    } finally {
                        if (socket != null) {
                            socket.close();
                        }
                        discoveryThread = null;
                    }
                }
            });
            discoveryThread.start();
        }
    
        private static DatagramSocket sendDiscoveryRequest(InetAddress broadcastAddress) throws IOException {
            DatagramSocket socket = new DatagramSocket(DISCOVERY_PORT);
            socket.setBroadcast(true);
            socket.setSoTimeout(TIMEOUT_MS);
            DatagramPacket packet = new DatagramPacket(DISCOVERY_PACKET.getBytes(),
                    DISCOVERY_PACKET.length(), broadcastAddress, DISCOVERY_PORT);
            socket.send(packet);
            return socket;
        }
    
        private static void listenForResponses(DatagramSocket socket, ServerManager serverManager) throws IOException {
            byte[] buf = new byte[256];
            try {
                while (true) {
                    DatagramPacket packet = new DatagramPacket(buf, buf.length);
                    socket.receive(packet);
                    buf = packet.getData();
                    int i = 1;
                    int l;
                    String t;
                    String v;
    
                    if ((char) buf[0] == 'E') {
                        String ipAddress = packet.getAddress().getHostAddress();
                        String version = null;
                        String name = null;
                        int port = -1;
    
                        while (i < packet.getLength()) {
                            t = new String(buf, i, 4);
                            l = (int) buf[i + 4];
                            v = new String(buf, i + 5, l);
                            i = i + 5 + l;
                            if (t.equals("JSON")) {
                                try {
                                    port = Integer.parseInt(v);
                                } catch (NumberFormatException e) {
                                    e.printStackTrace();
                                }
                            } else if (t.equals("NAME")) {
                                name = v;
                            } else if (t.equals("VERS")) {
                                version = v;
                            }
                        }
    
                        if (port > 0) {
                            serverManager.registerServer(new Server(ipAddress, port, name, version));
                        }
                    }
                }
            } catch (SocketTimeoutException e) {
                // No more servers, let's return to caller
                serverManager.discoveryFinished();
            }
        }
    }
    Erland Isaksson (My homepage)
    Lead platform developer of ickStream Music Platform - A world of music at your fingertips

    (Also developer of many plugins/applets)

  5. #15
    Senior Member jimbobvfr400's Avatar
    Join Date
    Aug 2012
    Location
    Harrogate, UK
    Posts
    615
    Regarding versions for other OS, I agree a Windows version would be very welcome by me. however I'm not sure how necessary an Android (or iOS for that matter) version would be. We already have quite a few options for phones and tablets although If it retains the elegant simplicity the screenshots seem to show with relatively basic options it might work very well as a widget in Android.

    Sent from my Nexus 7 using Tapatalk

  6. #16
    Junior Member
    Join Date
    Mar 2014
    Posts
    21
    Hi erland,
    thanks for your great feedback!

    Here are the responses to your points:
    If I enter the IP address of my server and don't select player immediately, the display just shows "Uncaugut node.js Error, TypeError: Cannot call method "jsonRequest" of undefined at eval (file:///Users/erland/Downloads/LMS%20Remove.app/Contents/Resources/app.nw/js/script.js:256:39). It works if I'm fast enough to select player. It might be a good idea to let it automatically select one of the player after connecting to a new server.
    Fixed in the new version.

    The <-> button seems to close the app if I click it when the app is maximized, I assume this shouldn't happen ?
    This was a bug in node-webkit, but I managed to create a workaround, so it shouldn't happen anymore.

    Not sure if it's possible, but if it's possible to show the album cover in the growl notification instead of the "note" icon, that would be really great.
    This is a great idea. I've implemented it in the new version.

    I wonder if it would be preferred to show the artist name and maybe also the album name below the track title in the artwork window, currently if the track has a long title it's barely possible to see the artist.
    With this point, I don't really know what looks better. When the window is small (< 200x200 pixels), two rows of text would hide too much of the artwork. If the window is bigger, you don't need two lines as everything fits just fine mostly. I'll see what I can do there.

    It could be a good idea to provide a settings options from the tray menu so one doesn't have to open the artwork window to reach the settings dialog
    Yep. Implemented

    I wonder if it would make sense to offer it as a dashboard widget in OSX. Not sure how people use the OSX dashbaord but this feels like something that could fit there. Note, I'm not requesting this functionality myself because I've not yet realized how/when/how I should take advantage of the OSX dashboard.
    I don't know if it is possible to let this app run as a widget in Mac OS X as it runs on node-webkit. If node-webkit doesn't support it, I'm afraid I can't implement this feature

    To make configuration easier, it should auto discover the LMS server, this will make it do the right thing for 95% of all users and will avoid the initial configuration completely. The Java code related to this from my Squeeze Display Android app follows below in case it helps you how to do it. Basically you need to do a UDP broadcast on port 3483 and then the LMS server will respond with IP-address, port, name and version and this should be enough information to configure it in LMS Remote app. You still need the manual configuration for people using LMS Remote from a remote location, but for most people using LMS Remote on the local network automatic discovery should work.
    Thanks for your code snippet! I've implemented auto discovery in the new version. However, I still can't seem to get the CLI port automatically. Is there a way to find it out using either the JSON API or UDP?

    Maybe you could make it possible to launch LMS from LMS Remote app ? This way I can use LMS Remote as my main controller and just launch LMS from it to browse/search for new music to play.
    I've added a button for that in the header bar and in the tray menu in the new version.

    It's a bit confusing then the LMS Remote app launch in "Always on top" the first time and the first thing it does is to ask you for configuration of the server and it opens the server configuration behind the LMS Remote app window. This isn't a big issue, especially if you implement auto discovery, but I thought I'd mention it as it would probably be preferred to launch it initially with "Always on top" disabled and let the user choose if he/she wants to use it in Always on top mode.
    This issue shouldn't happen anymore

    I'll upload the new version and let you know when it's online.

    Many Regards,
    Leo Bernard

  7. #17
    Junior Member
    Join Date
    Mar 2014
    Posts
    21
    Hello everyone,
    Version 0.4 of the LMS Remote App is now online. Here are some things that I've changed:

    • Settings are now accessible through the Tray Menu
    • Added a button to open the Logitech Web UI to the header bar and the tray menu
    • The Server's IP address and HTTP port are now automatically discovered on the first start
    • Notifications now show the currently playing cover instead of the note icon
    • When possible, Artist Fanart is fetched from fanart.tv and used as a background instead of the cover. This also works for online radio stations. However, it doesn't work for many artists yet...
    • When there's a better artwork available online, it will be shown as the background when no fanart is found
    • Many bugfixes and stability improvements


    You can download it at http://cdn-new.leolabs.org/lms-remote.zip, the Windows version will be available later...

    Many Regards,
    Leo Bernard

  8. #18
    Senior Member jimbobvfr400's Avatar
    Join Date
    Aug 2012
    Location
    Harrogate, UK
    Posts
    615
    Excellent I was just about to try the windows version but think I'll wait for 0.4 now. I'll post back with feedback once I've tried it.

    Sent from my Nexus 7 using Tapatalk

  9. #19
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    19,700

    Announcing: LMS Remote Controller Appfor Mac OS X

    Leo,

    Thanks a lot for the quick updates! And thanks for giving us access to
    the dev console. This will help us a lot to help you figure out issues
    like the one I'm seeing.

    > Version 0.4 of the LMS Remote App is now online. Here are some things
    > that I've changed:


    This still says 0.2 in the settings screen, doesn't it?

    I just downloaded the latest and greatest I could get using your
    download link (which doesn't come with a version number). Unfortunately
    it still fails to show remote artwork. I'm running LMS 7.8 and use its
    new internal image proxy for some of my plugins. These seem to cause
    problems with LMS Remote Controller:

    Failed to load resource
    file:///Users/mh/Downloads/LMS%20Remote%202.app/Contents/Resources/app.nw/iůs%2Fthumb%2Fe%2Fee%2FRadio_SRF_3.svg%2F500px-Radio_SRF_3.svg.png/image.png

    It seems your app does not recognize relative URLs. The data sent in the
    status update is:

    artwork_url:
    "imageproxy/http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fco mmons%2Fthumb%2Fe%2Fee%2FRadio_SRF_3.svg%2F500px-Radio_SRF_3.svg.png/image.png"

    This request should be sent to LMS. Please check those URLs whether they
    are fully qualified URLs or not. The following lines need to be improved:

    if(res.result.playlist_loop[0].artwork_url != undefined){
    $("#background-cover,
    #background-cover-front").css({"background-image": "url('" +
    res.result.playlist_loop[0].artwork_url + "')"});

    Keep up the excellent work!

    --

    Michael

  10. #20
    Junior Member
    Join Date
    Mar 2014
    Posts
    21
    Hello jimbobvfr400,
    I've just uploaded the Windows version. You can download it at http://cdn-new.leolabs.org/lms-remote-win.zip

    Hello mherger,
    This still says 0.2 in the settings screen, doesn't it?
    I've overseen this one, but it should be fixed in the newest version (0.4.2)

    I just downloaded the latest and greatest I could get using your
    download link (which doesn't come with a version number)
    I usually like to keep my links like that so that I don't need to update them everywhere. However, I will include a text file named after the version in the zip files of the next versions, so you can see which version you just downloaded.

    It seems your app does not recognize relative URLs.
    Thanks for the tip
    This bug should be fixed in the newest version.

    You can download the newest version at http://cdn-new.leolabs.org/lms-remote.zip

    Many Regards,
    Leo Bernard

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •