Giter Club home page Giter Club logo

lmms.io's Introduction

LMMS Logo LMMS

Build status Latest stable release Overall downloads on Github Join the chat at Discord Localise on transifex

What is LMMS?

LMMS is a free cross-platform alternative to commercial programs like FL Studioยฎ, which allow you to produce music with your computer. This includes the creation of melodies and beats, the synthesis and mixing of sounds, and arranging of samples. You can have fun with your MIDI-keyboard and much more; all in a user-friendly and modern interface.

Homepage
Downloads/Releases
Developer Wiki
Artist & User Wiki/Documentation
Sound Demos
LMMS Sharing Platform Share your songs!

Features

  • Song-Editor for composing songs
  • Pattern-Editor for creating beats and patterns
  • An easy-to-use Piano-Roll for editing patterns and melodies
  • A Mixer with unlimited mixer channels and arbitrary number of effects
  • Many powerful instrument and effect-plugins out of the box
  • Full user-defined track-based automation and computer-controlled automation sources
  • Compatible with many standards such as SoundFont2, VST(i), LADSPA, GUS Patches, and full MIDI support
  • MIDI file importing and exporting

Building

See Compiling LMMS on our wiki for information on how to build LMMS.

Join LMMS-development

If you are interested in LMMS, its programming, artwork, testing, writing demo songs, (and improving this README...) or something like that, you're welcome to participate in the development of LMMS!

Information about what you can do and how can be found in the wiki.

Before coding a new big feature, please always file an issue for your idea and suggestions about your feature and about the intended implementation on GitHub, or ask in one of the tech channels on Discord and wait for replies! Maybe there are different ideas, improvements, or hints, or maybe your feature is not welcome/needed at the moment.

lmms.io's People

Contributors

5idereal avatar acid-chicken avatar ahohnmyc avatar ahstro avatar csimons avatar dependabot[bot] avatar domclark avatar duangsuse avatar gurugray avatar jasp00 avatar jengamon avatar kerastinell avatar liushuyu avatar lmmsservice avatar lukas-w avatar m374lx avatar mingcongbai avatar panquesito7 avatar physsong avatar qrchackofficial avatar quatran avatar rubiefawn avatar secondflight avatar slapkev avatar spekular avatar trebmuh avatar tresf avatar umcaruje avatar

Stargazers

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

lmms.io's Issues

New navbar breaks forums

template->_php_include(): File ./../navbar.php does not exist or is empty

Separate from yesterday's issue. @lukas-w the new Navbar lib breaks the forums, likely because they're hard-coded to use the old navbar.php file. Here's the old instructions, note that the HTML comment is actually the include statement which is parsed by phpBB:

https://github.com/LMMS/lmms.io/wiki/Forums-:-Install-Theme-and-Navbar

If you don't mind, please update these instructions to accommodate the new fix you come up with.

Shortened navbar items are never active

image

Relevant bits in navbar.php:

function get_page_name() {
    $uri = trim($_SERVER["REQUEST_URI"], "/");

    switch($uri) {
        case '':
        case 'header.php':
        case 'index.php':
            return 'Home';
        case 'download/artwork':
        case 'download/samples':
        case 'download':
                    return 'Download';
        case 'lsp':
            return 'Share';
        default:
            return preg_replace('/\.[^.]*$/', '', ucfirst($uri));
    }
}

function menu_item($text, $url = NULL, $dropdown = NULL, $disabled = NULL, $class = NULL) {
    $class .= mini_me($text, $url, $dropdown, $disabled, $class);

    // Determine the "Active Tab
    if ($text == get_page_name()) {
        $active = 'active';
    } else {
        $active = '';
    }

    .
    .
    .
}

Change default licence on LSP

Default licence (what is selected if you don't change it) could be some other than Artistic Licence 2.0, cause that doesn't allow remixing(?) and is less free than others. LMMS aims to promote freedom? Artistc licence is chosen as default now cause it is in alphabetical order.

Also updating the licences (add more of them? like v2, v3) cause some of them is rarely used and perhaps not used at all for music projects?

Cache download counts, display in release notes via sparkline

The idea is to offer a simple graph displaying our download counts (by day, week, whatever).

image

Here's a library called "Sparkline" that will give us a graph very similar to what we had through sourceforge:

http://www.jamiebicknell.com/20-Jun-2014/Sparklines-via-PHP

What we would need is some way to cache the download count once a day/week/month so we could dynamically create this chart for our downloads page. We could probably hack this together by doing a quick command line grep / sed / awk on a daily wget of our downloads page and appending it to a plain text file:

I currently store the download count in the button in a data field:

image

The text file may look like this:

21758,24928,30293,40054,

Or we could make it a bit more robust and just read it back in with JSON:

{"download_count": {
  "version": "1.0.3",
  "total": "40054",
  "items": {
    "win32": "20145",
    "win64": "19909"
  }
}}

Since the graph itself is extra info that's not necessarily needed for the end-user, I would consider hiding it in the release notes div, or perhaps renaming "release notes" to "more information".

screenshots bugs

  1. Navbar.php incorrectly links to "screens.php" on small screens (quick fix)
  2. Small screens hide screenshots on screenshots page due to the visible-lg class stuff (quick fix)

Wanted to log these so they don't get forgotten since they affect small screens only.

"Typing Keyboard" alternatives

The first time I read lmms.io I found the phrase "typing or midi keyboard" pretty confusing, both because of the formulation and because of the use of "typing keyboard". Does anyone else think it should be changed? I think "computer keyboard", or "regular keyboard" might make more sense.

SoundCloud "Play" Button

Anyone interested in tackling this? @Umcaruje comes to mind.... :)

The idea is to have an HTML5 play button embedded into the soundcloud feed. I found a few libraries for this, all seems to leverage HTML5, CSS, JavaScript and sometimes have a flash-player fallback.

The HTML could be appended to the feed body on this line: soundcloud.php#L20

The stream is in the JSON data as stream_url, or more specifically $item->stream_url. Here's an example stream_url for reference:

https://api.soundcloud.com/tracks/164168248/stream?client_id=<BASE64_DECODE_SOUNDCLOUD_CLIENT_ID>

To grab this URL with the secret sanely from soundcloud.php, you can do:

PHP

// echo some html tags, etc
get_secrets('soundcloud', $item->stream_url);
// echo more html tags, etc

This will automatically append the decoded API client id to the end of the URL (The disadvantage of course is it exposes the secret to the clients loading that web page)


Mock-Up

image

The Wiki Rehaul

So, I've been doing a lot of categorizing of the articles on the wiki. I categorized all the Pages that need work into 3 categories:

So if you are planning to work on the wiki (hint hint: @Spekular) you should work on the articles from those categories.

The second thing I wanted to talk about is that we should probably remove most of the old articles. They are full of non-working pictures and weird structure that does not fit in the current wiki structure. Since we are having a new site, I think that the wiki should start with a clean slate (only 1.0+ articles).

I'd love to hear your guys's opinion on this. ๐Ÿบ

Primer Video

@HDDigitizerMusic proposed a dedicated YouTube channel. I think we need a good primer video. Something quick and dirty which showcases the software at a glance. This would be a nice addition to the front page, as the current link points to a rather boring unfa spoken screen grab.

Migrate LSP

Code can be found here:
https://github.com/tresf/lmms.io/tree/master/public/lsp

Steps to migrate the LSP (from sourceforge to our new lmms.io site hosted at networkredux)

  1. Backup sourcecode/uploads/database, import to local php/mysql instance (done)
  2. Theme LSP with new navbar, bootstrap theme, etc (done)
  3. Convert LSP from mysql_connect to DBO (50% complete)
  4. Protect LSP against XSS (started)
  5. Import DB to network redux (NOT started)
  6. Push php changes to network redux, true-up DB/uploads, redirect old LSP (NOT started)

Optional:

  1. Create shim to allow forum authentication into LSP (NOT started)

Updated 2014-09-08

image

YouTube feed broken

Some log:

(1) PHP Notice:  Undefined property: stdClass::$items in public/feed/json_common.php on line 193
    PHP Stack trace:
    PHP   1. {main}() public/community/index.php:0
    PHP   2. include() public/community/index.php:81
    PHP   3. get_json_data() public/feed/youtube.php:12
    PHP   4. has_children() public/feed/json_common.php:167
(2) PHP Warning: file_get_contents(public/../tmp/.json_youtube_UCzGxut7RTCfln1ym1Q-sXkQ_playlistItems): failed to open stream: No such file or directory in public/feed/json_common.php on line 173
    PHP Stack trace:
    PHP   1. {main}() public/community/index.php:0
    PHP   2. include() public/community/index.php:81
    PHP   3. get_json_data() public/feed/youtube.php:12
    PHP   4. file_get_contents() public/feed/json_common.php:173
(3) PHP Warning:  Invalid argument supplied for foreach() in public/feed/youtube.php on line 15
    PHP Stack trace:
    PHP   1. {main}() public/community/index.php:0
    PHP   2. include() public/community/index.php:81

Show required LMMS version on lsp

With all the new instruments and new versions it would be good to see if a project on the lsp require a higher LMMS version than the one you perhaps have. I don't know exactly how it could be implemented. The "best" way would perhaps be to look for presence of one of the new plugins, as you could have made songs in newer versions of LMMS without using any of the new features. This would mean you had to update every time there was a new version though.
The easiest way is probably to save the LMMS version together with the project file, and instead show "created with LMMS version X.X.X" on lsp. I don't know if I should file an enhancement on this on the LMMS repo.

Edited 11/19/2014 @tresf, added link, php code
http://linux-multimedia-studio-lmms.996328.n3.nabble.com/is-it-possible-to-decompress-an-mmpz-file-without-lmms-dump-td3491.html

Just in case someone is interested down the road, reading .mmpz files is possible via php via:

$x = fopen($file);
fseek($x, 4);
zlib_decode(fread($x, filesize($file)-4));

d9b53d4

-Tres

Migrating to new hoster

As you may have noticed, the website is now running on our new hoster as well, as you can see at http://lmms.io/ or http://198.72.81.22/. Because of some changes I wanted to make (using Composer for handling external dependencies) that for some reason wouldn't work on tuxfamily, I created a separate branch for doing this, called redux. I set up automatic deployment from that branch.

In order to concentrate development, I'd like to merge the branch redux into master again, which would imply dropping tuxfamily. The new hoster may still be "unstable" though, as I'm planning to adjust and improve the way the automatic deployment works. So we have three options here:

  1. We drop tuxfamily, focus on our new hoster, as described above. Things may not always work as expected, that's why I'm asking you to agree on this.
  2. I give making the redux branch work on tuxfamily a second try. If it works, we merge the branches so that both hosters are running the same branch, and can then slowly migrate to networkredux.
  3. We keep both branches and drop tuxfamily as soon as networkredux is fully ready. This is the least favorable option, as I think development should mainly take place on the master branch, and I don't want to spend half of my time on merging the branches.

Let me know what you think ;)

backup strategy

Seeing as we are migrating everything to our new hosting provider. I would like to start the discussion about backup strategy.

My idea is that since we are on a VPS, I have a script that would compress particular directories and put them in a tmp location if i remember correctly. What I can add is the ability to send an email to certain individuals alerting them that the backup is ready for download. All archives would be deleted after 7 days or how ever many days we decide. What do you guys think?

Search function in forum

Right now there is no easy way to find the search function in the forums, but it exists. If you click one of the four buttons at the top, you come to a site where you can click on a button saying "return to advanced search", and thus finding the search function.
image

However it is widely known that the search function in phpbb, quote: "sucks dead bears".
image
So what about adding a google search instead? Here is a post on how. https://www.phpbb.com/community/viewtopic.php?f=46&t=1344605#p12679825

Facebook Feed Formatting Issue

Per 8413c93#diff-c74fb9f5847116a260beb4109475e583R44 the facebook feed seems to be broken from a formatting perspective.

I chose SimpleHtmlDom to format some of the text to clean it up for the community page however in recent versions of the community page it seems to be broken.

I'm not sure what caused this (composer, underlying data changes from facebook or some other changes to the json_common.php in general, but I want a placeholder for it to be fixed. :)

PHP can't read from /home/lmms

As title states, on tuxfamily, php can't read from any of the secrets files located in /home/lmms likely due to file permissions. This has likely been happening right along possibly related to #4 and #6.

As a temporary workaround they've been moved to htdocs/../tmp.

Google+ Feed 403 Forbidden on TuxFamily.org

So I got it working from my PC by whitelisting my ip address here:
https://console.developers.google.com/project/apps~lmms-api/apiui/credential

I added the subnet in the recommended CIDR notion I believe tuxfamily is using: 212.85.158.0/21
... which should cover what they have registered here:
http://myip.ms/info/whois/212.85.158.2/k/938534357/website/tuxfamily.org

212.85.152.0 - 212.85.159.255

But the page won't load, i get 403 forbidden

I'm disabling the Google+ feed until I can sort this out. @lukas-w Please let me know if you are able to figure it out before me.

-Tres

Linux download page improvments

I propose using a radio button style that illustrates which page you are on (i.e. Debian vs. Fedora).

I also propose we consume the hashtag i.e. #linux-debian and switch accordingly.

image

Google+ feed broken

Google+ feed is broken on network redux hosting. Likely due to the need to whitelist the IP range for networkredux so that it can access the Google+ JSON API.

screen shot 2014-08-17 at 3 03 48 pm

-Tres

LMMS Commercial Progress

Hi, I am making this issue so I don't spam issue #29 . Here I will share my progress in making the Video for the LMMS Youtube channel.

First, let me share a Raw test shot I did. Thats about how the shots will look in the commercial.

If you have any suggestions and ideas, feel free to leave comments

P.S. If you know a better place to put this rather than here, please state it. I am open to ideas.

Add cron job to git repo

As suggested in #5.

โ”
โ”œโ”€โ”€ cron # private cron scripts that are regularly run by the server
โ”‚   โ”œโ”€โ”€ minutely # Community feed would go in this directory for example
โ”‚   โ”œโ”€โ”€ hourly
โ”‚   โ””โ”€โ”€ daily

Just having this issue as a reminder until I set up everything on the server.

Ideas for preventing blocking on feeds

Currently when the feeds are outdated they make a syncronous request on page load.

PHP likes synchronous activity and it is the default behavior, but I think this extra 500ms makes it appear the site is running slow, when it's actually waiting on a new JSON feed.

I think the feeds should instead read the JSON data from the local file system only, and then later, set some trigger/flag to grab a new version in the background.

A standard approach for something like this is crontab, where we do a wget every 20 minutes or so, but I don't see it available on tuxfamily.

Open for ideas.

Forums "Reply" Button Broken

As reported by @musikBear, intermittently the "Reply" button displays a blank white page.
This may be:

  • Caused by a change to the theme files when I was fixing the navbar
  • It may be something specific to a user status
  • It could be something broken in the database.

Unfortunately the phpBB logs don't show any errors.

image

LSP MySQL Issue

The subcategory ID's for some items i.e. Presets\Basses vs. Samples\Basses are swapped in the mysql database causing incorrect counts for certain files. Example:

http://lmms.sourceforge.net/lsp/index.php?action=browse&category=Presets&subcategory=Basses

Corrective action needs to be taken in MySQL to properly map the Subcategories to their appropriate Category parent as illustrated by the files which represent them. (Edit: Done. SQL commands are below)

Edit: Oct 27 Code has been fixed moving forward per commit c219d05

Will complete this once the conversion to our new hosting is complete as we'll just have to clean it up again after new files are uploaded.

update files set subcategory = 13 where category = 3 and subcategory = 9;
update files set subcategory = 44 where category = 3 and subcategory = 36;
update files set subcategory = 14 where category = 3 and subcategory = 10;
update files set subcategory = 16 where category = 3 and subcategory = 12;
update files set subcategory = 46 where category = 3 and subcategory = 19;
update files set subcategory = 45 where category = 3 and subcategory = 35;

update files set subcategory = 24 where category = 4 and (subcategory = 15 or subcategory = 57 or subcategory = 58 or subcategory = 11 or subcategory = 5);
update files set subcategory = 15 where category = 3 and (subcategory = 24 or subcategory = 57 or subcategory = 58 or subcategory = 11 or subcategory = 5);
update files set subcategory = 57 where category = 5 and (subcategory = 15 or subcategory = 24 or subcategory = 58 or subcategory = 11 or subcategory = 5);
update files set subcategory = 58 where category = 6 and (subcategory = 15 or subcategory = 24 or subcategory = 57 or subcategory = 11 or subcategory = 5);
update files set subcategory = 11 where category = 2 and (subcategory = 15 or subcategory = 24 or subcategory = 57 or subcategory = 58 or subcategory = 5);
update files set subcategory = 5 where category = 1 and (subcategory = 15 or subcategory = 24 or subcategory = 57 or subcategory = 58 or subcategory = 11);

Edit: Sept 23 I'd assume this is caused by a bug with the upload screen, so that needs fixing as well to prevent further problems down the road.

@lukas-w, do you think you could fix this on sourceforge mysql so that it makes it downstream when the LSP is complete?

image

LSP not saving login sessions

http://lmms.io/lsp/

As the title describes, logins are working, but the login sessions are immediately clearing preventing file uploads, ratings, comments from working. Users are presented with a login form even after a successful login ad depicted below:

screen shot 2014-10-19 at 4 46 29 pm

Change time for login

Think the forum logs out too soon
In our previous forum, an option existed, that would let a user stay logged in over the day. (24 h)
This is a minor annoyment, but if its simple to alter, i would recommend it.

Indent style

I think we should agree on what character to use for indentation? I suggest just using tabs. (Let the holy war begin!)

YouTube "Play" Button

Similar to SoundCloud, it would be nice to offer the ability to play YouTube videos directly through the YouTube feed on our community page.

Fortunately for us, YouTube has a very nice embed object that we can leverage... probably by injecting the iframe code directly using JavaScript.

<iframe width="640" height="390" src="//www.youtube.com/embed/NloB3v__Ebw" frameborder="0" allowfullscreen></iframe>

"Follow" buttons on main page

Opinions wanted for follow buttons on the home page.

I personally hate them because they just put a bunch of buttons people rarely click on right in the middle of our home page (or in the case of the Digg example below, at the bottom of the page) however some services such as Google+ will only allow the pages to have a verified URL if we link them on our home page (they then crawl our home page for a link).

My proposal is to put one in the footer that's style="display:none;" so we can get the verification without the interface bloat but maybe people actually use them and I'm a bit old school?

Please share your opinion. ๐Ÿ˜ˆ

image

Add link to mailing list

I assume the community page would be a place for this but I'd like to have a clear and concise place for the mailing list. I'm actually wondering how much of the feed stuff should actually take up the community page as it's sort of an experimental design and I want to make it intuitive to the user.

One option would be to add an envelope icon to the toolbar for a link to sign up for the mailing list? ... although I can't find an easy way to feed the "mailman" content in a similar fashion so people can quickly preview the convos before signing up. (mailman is the mail service that sourceforge uses)

Another option is to instead keep the community page simple like the old community page and just have links to the appropriate services with perhaps an accordion style preview activated on click so that we can keep the feed functionality?

... and another unrelated topic is the whole idea of leaving sourceforge for their mailing list and using another provider since we're ditching them anyway... Thoughts?

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.