http://www.perlmonks.org?node_id=1003376

Hi, in the last few weeks I have been bugging you with several Perl and Perl/Tk related questions so I thought it would be only fair to share the result of this work with you.

Here is the program I was writing (and will still be continuing to develop further as this is only the 0.1 release): http://www.yamahaforums.co.uk/forum/viewtopic.php?f=9&t=5915

Please don't comment on my programming style, I'm not an experienced Perl programmer (and not a programmer in general) so my code will probably look 'funny/immature' to you. ;)
  • Comment on just wanted to show what I managed to write with your help

Replies are listed 'Best First'.
Re: just wanted to show what I managed to write with your help
by Arunbear (Prior) on Nov 12, 2012 at 11:58 UTC
    Do you use version control? If not, you may consider putting the code on Github (or similar site like Bitbucket or Google code). That way, it is easier for others to view the code (or even contribute to it).
      I might start using github or something like that once the code is a bit more mature. Right now I'm working so much on it still that the overhead of using a version control system would be a hindrance for me especially since I have no experience with them (other than some experience with cvs 10-15 years ago and I hated it! ;) ) so I would first have to learn how to use git.

      That said if you are offering to collaborate on the code, then let me know, I'm sure we can work something out! :)
        Believe me, the overhead of using a version control system is negligible compared to the overhead of not using it.
        لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        Your thinking is exactly backwards! Revision control systems are to help you and to save you arse when you do something dumb (and believe me, we all do dumb things). At the very least set up a git (or Mercurial) repository for each project you are working on right now. You don't need to share the repo now, or ever, but you get no benefit at all from it at the end of the project!

        You may find Mercurial easier to get your head around than git, especially if you can use TortoiseHg (Wikipedia article). Modern systems like git and Mercurial take a snapshot of the current state of your project and deal with your entire project as an entity. CVS was a file at a time system and made a lot of stuff hard to do and difficult to understand.

        True laziness is hard work
        How much overhead is it if you accidentally delete working code? Or if you change previously-working code and then you don't discover it for days and now you can't go back and figure out what your change was that broke it, and for that matter, you don't even know what your last working code looked like?

        xoxo,
        Andy

Re: just wanted to show what I managed to write with your help
by zentara (Archbishop) on Nov 12, 2012 at 12:13 UTC
Re: just wanted to show what I managed to write with your help
by marto (Cardinal) on Nov 12, 2012 at 10:14 UTC

    I don't have the Yamaha hardware to use it, but this tool looks very useful to those who do. Well done.

Re: just wanted to show what I managed to write with your help
by planetscape (Chancellor) on Nov 16, 2012 at 11:07 UTC

    Indeed, as GrandFather said, version control will save you arse when you do something dumb, and it has saved mined more times than I'd like to admit!

    In fact, you'd be hard-pressed now to find anything of the slightest worth that I do on a computer that is NOT in version control! Even (and especially) things I think will be "one-off."

    HTH,

    planetscape
Re: just wanted to show what I managed to write with your help
by ww (Archbishop) on Nov 14, 2012 at 00:20 UTC
    Nitpicking your comments as made on the yamahaforums (constructively, I hope):
    "Implementing Windows MIDI support should be possible but I have no experience with the Windows MIDI API (or with programming on Windows in general)."
    In fact, tho I have NOT yet read all the code, I suspect this is a minimal issue. OS identification is easy enough, at least at the gross-level of "*nix vs win." Use that to fork, to a win stub/sub/module, and let a grateful user deal with whichever of windoze' peculiarities you don't (yet) grok.

    re "VSTi functionality" you respond,

    "I'm not sure whether a program written in Perl can use the VST API, unfortunately I think it would need to be completely rewritten in C/C++...."

    I'm not clear whether the last phrase pertains to the API or your program. If the former... well, possibly (but remember, Perl can do almost anything, short of putting the toothpaste back in the tube); if your concern is a need to rewrite the program to accomodate a published API, no way would you need to rewrite in COBOL, C/C++, Ada, or any other language.

    Nice work; keep on learning and you'll not need to deprecate the "maturity" of your style, etc; and an extra ++ for crediting PM in your forum announcement.

      Thanks for your comment. I do know where the Windows related MIDI code has to go within my program (and I have already built in 'if ($WINDOWS) {}' sections in my current code) and what it needs to do, but I have no experience with the Windows MIDI API (which is available in Perl via the Win32API::MIDI module) and I'm not keen on spending time on a Windows PC to write and test the Windows MIDI code. That's why I said that I would ideally need a user to volunteer with that.

      Regarding VST: I guess I wrote that badly, I'm sure there is a way to implement that in Perl too, but right now it's way beyond my skills.