Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Welcome to our site

Take a moment to join our board


Popular Content

Showing content with the highest reputation on 01/13/2019 in all areas

  1. 3 points
    Hi all, I realized recently that we have a few new members who don't know much about me, so I thought I'd take some time to re-introduce myself after so-many years. My real name is Gareth, but I prefer to be called "Spirited" online. I'm 27 years old, straight, male, occasionally attractive at best. I don't really post many details about myself these days, but you can find me on most platforms by the name Spirited, accompanied by a picture of a smug snow leopard. I tried to change up the snow leopard thing for Cooldown, but at the end of the day, I can appreciate a bit of familiarity. These days, I mostly work and hang out with friends. Sometimes I program in my free time, experimenting with different technologies, architectures, and project ideas. Game programming is a fun hobby of mine, but dangerously shares the same creativity / motivation pool as a lot of my other hobbies, such as photography and painting. I hope to get some inspiration through this board and the talented members we have here. I'm always available to chat, for that reason. I like to hear what people are up to. My current project is Chimera, but it's taken a lot of activation energy to get off the ground. I'm hoping I'll get some more motivation next weekend now that the holidays are over. Offline, I feel like I'm pretty average. I have an apartment that I like to keep clean, a car I like to keep fast, and a family I like to keep at a distance. I enjoy my work, especially now that I'm more settled in and done with college. I work mostly in cloud architecture and cloud computing, but I'm being moved to machine learning next week, which I look forward to. I've done a lot of odd software jobs in the past in cybersecurity, web programming, point of sales, industrial automation, test automation, etc. I tend to take interest in a lot of different topics, and I'd be interested to hear from anyone who works in machine learning, since that's what I'll be doing for the next few months. If I haven't said it already, welcome to the board, everyone. I'm happy to have you, and I'm happy to be here. Best, Spirited
  2. 2 points
    So early this morning I did a live lesson on WPF that basically touched on design, MVVM, data-binding and commands. This video is definitely considered long, however my goal was not just to teach my viewers a certain way of doing it and leaving it at that, but to also go through other ways and why it's wrong. For example one thing I touch on is why the ideology that no code should exist in your code-behind is a good one. So here's the YouTube version of the lesson with the only edits being done to the start/end times. 😁 C# - WPF Basics (In-Depth Lesson/Stream) Source as of current lesson: https://github.com/reikotechnology/chatty
  3. 1 point
    So this is a pretty neat project I intermittently work on. This is a discord bot using the Discord.NET wrapper from RogueException. It makes use of the onion architecture and I tend to think while indeed a small project at this time, is the best showcase of my growth as a programmer and knowledge of OOP. One really neat feature I love to draw attention to is the command system. I sometimes get called out for overengineering the solution, but I highly disagree. One thing I've really bought into is the idea of future-proofing your application. Most discord bot command systems use hard-coded strings somewhere to dictate what command is being parsed. Something many programmers do is use a switch statement. This is fine, however I understood that as the needs for the discord server I administrate grow so will the scope of this project. I needed a more... automated solution. The idea came to me to use reflection for this so I could create/delete classes that were prefixed with the command and compiled at run time in order to be parsed and executed. Long night made short, I evolved from using Activator to compiling lambda expressions which displayed a HUGE performance increase (almost near raw hardcoded performance). This allowed me to have a solution where I don't need to manually maintain a switch block or refactor strings in the event commands change. Hope y'all dig it! https://github.com/reikotechnology/projekt-analytix Blog Writeup: https://reiko.tech/Blog/View/8
  4. 1 point
    Small suggestion, lower the volume of the music a little bit more. Sometimes the music gets louder and it can get annoying to focus on your voice. But nice tutorial, btw
  5. 1 point
    Nice videos, I remember watching one of your videos about sockets a long time ago. I have not used WPF in quite some time. When I did I remember using caliburn micro as my binding library. It was very convention based though. Everything had to be named certain ways to expect things to work. That enforces a standard convention, but also may be confusing when you are just look in from the outside. Keep up the great work!
  6. 1 point
    Wow, you're really easy to listen to for this kinda stuff. I wasn't expecting it to be so fluid. Good job, man.
  7. 1 point
    I tried using Microsoft's new DevOps service, since I get it for free through my work, but eh. Once GitLab introduces multiple files for snippets (which they already have a commit ready for / has been merged into the main branch), then I'll be happy. So far, GitLab has been a lot of fun for me. I enjoyed having Comet hosted there and having that automated build fire off for unit testing on checkin. It'll be even cooler once I get Chimera working with automated deploys and rolling server updates. Ahhh! It's going to be siicckk!
  8. 1 point
    About me My name is Jacob, more commonly known as "Bauss" around different communities. I'm 25 years old and been a professional software developer for about 6 years, but started coding back in like 2006. I have been working with many different fields such as game development, networking, financial applications, housing applications, AI, UI, web and mobile apps etc. I've never really written any blog posts, so I apologize if it's boring and not very well written. This blog posts isn't so much technical as future blog posts will be and there is a lot more theory than coding. Future blog posts may disclose more coding than theory to explain how Melodyc is going to work. For some of my open-source projects see my Github: https://github.com/bausshf/ The attached image are a preview of what the chord/melody generator of Melodyc currently looks like. What's my experience with music? Around 2007 some friends and I were watching a lot of different YouTube channels and we stumbled across this guy who made his own music using FL Studio so we all decided to just try it out. For a while it was just a toy to us and we didn't really use it much or understood all the aspects of it. Then around 2008 we started getting an interest in making our own music so we started making some beats. A couple years after I was the only one left from the group who still kept a liking to making music. So for around a decade I've been a music producer on the side-line and only working with some private clients and friends from my network. That's until around February 2018 when a friend of mine pitched an idea to me to go public with my business and so I've been working for the past year on setting up my record label and business. It has finally come to a point where I can say that it's going to be finished around March. I have never applied my technological knowledge to my music production until late 2018 where I started experiment with VST development, FL Studio plugins and lately an AI that can generate any type of music and that's what this post is all about. Using artificial intelligence to generate music. Why I decided to make the project? Around a week ago I was empty for motivation and inspiration to make music. Basically I had been trying for hours that day to come up with something and nothing that I liked came up after jamming on my MIDI keyboard. I guess I was in the hole and had a hard time climbing out of it. Then it came to me that I could try to just generate some random chords based on some different scales given. And it happened ... it gave me some pretty good results and I decided to just take the project further and kept adding minor features to it. Then after being satisfied with the prototype because it was anything but pretty then I pitched it to a private community of producers and there seemed to be an interest in the project. At first it was just some JavaScript that generated images that looked like a piano-roll which displayed the chords/melodies generated. After the interest I decided to make it a product that's part of my record label when its website opens. That also meant I had to rethink the whole product, the design and the process of it as what existed now was really just a quick mash-up but I had to make it better, much better. I had to make it something that would be unique, but prove itself useful. After a lot of brainstorming and planning I started to develop it. Since the website is written in The D Programming Language and uses my own web framework Diamond: https://diamondmvc.org/ then I decied to go with D for the implementation of the project because that would save me a lot of time when having to implement it on the website. What's the purpose of the project? The purpose of Melodyc (Yes, that's the name I gave it. It's a mash up of "Melody" and "Melodic".) is to generate music based on given options such as bars, progression, scales, moods, instruments and genres. Of course that all sounds simple and it's not very hard to generate "random" music. I didn't just want "random" music. I wanted good music, no... beautiful music is what I wanted. That's why Melodyc will not just be a music generator, but an AI that teaches itself music theory and analyzes hit songs to figure out how the music should be generated. What sets Melodyc apart from other similar services is how easy it is to use and configure and that it'll have a free plan! Also its flexibility and that it's based on the input from actual producers around the world, so it's not just a theoretical product, it's a product based on factual needs of producers and it'll always expand that way. Not only is the purpose to create a useful product for producers, but it's also a way for me to expand my technological experience and music theory knowledge. Melodyc will not be an open-source project however, I want to keep the algorithms and in-depth technical details to myself since it's a product that I'm going sell commercially. That doesn't mean I won't explain certain aspects of Melodyc's technical details though as I reckon there's a lot of learning for not just me, but also people reading these posts. What are Melodyc's goals? To be user-friendly To always expand according to industry necessities of producers Generate beautiful music based on hit songs Flexibility Completely configurable but without complexity How does Melodyc work? This is where we get a little technical, since this is meant to be a technical blog posts. I apologize if it took a while until we got here. The UI part of Melodyc lives on the website, but in the future it might have an offline version or even be a part of a VST. Since Melodyc is a part of the website then the UI part is writte in D using Diamond as disclosed earlier. It also uses Javascript to perform XHR calls to the API which is the one responsible for generating the music. The Chord/Melody Generator The chord/melody generator is what Melodyc was built around and is basically an extension of the original JavaScript-only prototype. Basically this is where you give the inputs on how the chords and melodies generated should progress. You specify an octave/pitch which is the start octave/pitch of the chord/melody generated. It doesn't mean that all notes for the chord/melody will be within that octave because it depends on the progression. Next you specify a maximum progression. The maximum progression decides how many semitones there maximum can be between the lowest and the highest note. By default the maximum progression is 12, which means that the lowest and highest note can only be a single octave a way from each other. Ex. if the lowest note is E5 then the highest note cannot be higher than E6. After specifying a maximum progression the amount of bars to generate music for must be specified. By default that's 4. Only a limited set of bars can be specified such as 1, 2, 4, 8, 16 and 32. After that you gotta specify the chord options which are all the base for how the chord and melody progresses since the melody will be based on the chord and its scale. First you specify the scales to be used. Ex. "c,em,dm,a#" which tells Melodyc to use the C-major, E-minor, D-minor and A#-major scales. Next you select an instrument and a genre. This tells Melodyc to progress the chord and melody according to the given instrument and genre since each instrument and genre have different progressions. Instead of specifying a range of scales then you can give it a specific mood. Moods are basically some pre-selected scales based on two major/minor scales and a semitone space between them. Ex. let's say you've selected the mood "M4m (Sad / Depressing / Emotional)." Now you give Melodyc a note that it has to start at ex. "e" What Melodyc does when creating the chord and melody now is to start with the e-major scale and then next after that it will do a g#-minor scale. That's because between the first note of the e-major scale and the g#-minor scale there are exactly 4 semitones. So basically "M4m" means start with a major scale, skip 4 semitones then end with a minor scale. It's possible to use one of the preset moods, but you can also specify a custom mood say you want M4M for some reason then you just specify that. After the basic chord options you have to specify the melody options which basically tells how the melody should progress. You can specify up to 4 progressions, where 1 progression is used per bar specified. The melody progressions basically selects what kind of algorithm will be used to generate the melody of the given scale. Ex. if you select the "Swinging Upwards" progression then the melody will progress by start on a low note, then a high note, then another low note etc. There are many possible progressions to choose from and each will generate different results. What you select should all depend on what type of melody you're looking for. When all your configurations are done then basically you just press the "Generate" button and it'll make an XHR call to the API which then generates a set of chords and melodies. After that it returns the result as a set of piano-roll images and midi files that you can save and use. Those are the basics of how Melodyc works, but there are going to be a lot more things to it such as presets, sequence generator (For drums, percussion etc.), instrument configurations, genre configuration, mood configuration and an archive (saved results etc.) Those will all be explained in future blog posts. The following song was created with the help of Melodyc: Release of the project The project will be opened along with the rest of Underground Rekordz website in March. It's still in development and as of now there aren't much more than just basic chord/melody generating done. The plan is to write more blog posts that are way more technical and goes in-depth with the development as the project progresses. This means explaining how it generates the music and how the analysis of songs goes and how Melodyc will improve itself over time to create better chords and melodies without further development. This blog post is merely an introduction to the project and what's in store. When the project is finished you'll be able to find it here: https://undergroundrekordz.com/ You can read the second part here.
  9. 1 point
    inb4 necro I love coffee, but haven't been exposed to many teas. Anybody got recommendations for essentially a first-time tea drinker and how to make a good cup of tea?
  10. 1 point
    Oof thought I replied to this long ago my bad. I never really was into producing, it was mostly just writing music be it for vocals or guitar. While having a 6-year investment into hip-hop, I've actually fairly recently put that dream to rest to pursue programming. I'll likely continue making music in other forms, for example I want to expand on my piano skills. Largely uninterested in music creation now though.
  11. 1 point
    I got a bit bored this evening while waiting for a download, and so I got Conquer Online working on a spare Linux machine. If playing a dead game on an operating system it wasn't meant for sounds right up your ally, maybe your laptop can't support Windows 10 or something for the latest security updates, then start by installing Ubuntu Desktop 18.04. Once you're up and running, update your system. Once rebooted after updating, install Wine and PlayOnLinux from the Ubuntu Software app. Then, open PlayOnLinux and do the following: Click "Install" and then select "Install a non-listed program". Select "Install a program in a new virtual drive". As the name of the instance, call it "conquer". For pre-installation steps, select "Configure Wine" and "Install some libraries". Select a 32-bit Windows installation. Once the Configure Wine window opens, select "Windows XP" as the Windows Version. Click Ok and select the following libraries to install on the next screen: POL_Install_crypt32 POL_Install_d3dx9 POL_Install_dinput8 POL_Install_dsound POL_Install_dxdiag POL_Install_flashplayer POL_Install_flashplayer_ActiveX POL_Install_ie6 POL_Install_msvc80 POL_Install_msvc90 POL_Install_VideoDriver Wait for everything to download and install, pressing next here and there. Eventually, you'll be asked for an executable to run. Copy the client onto the conquer virtual drive (shortcut in your home folder). Select "Browse" for an executable to run (or skip). Once ran, you'll be asked to create a shortcut. Select "conquer.exe" from browse. After adding the shortcut, select "I don't want to make another shortcut". Select "Conquer" from the main menu and click on "Configure". Add "blacknull" as an argument under General. Set the video memory size to a larger MB size under Display. Tada, you can now run Conquer Online on Linux (I think, I didn't actually try logging into a server). PS: If you get a page fault exception, update your video drivers.
  12. 1 point
    This is a continuation from last part. In this post might have a little more technical details about how things are generated. The progress for Melodyc is going forward and I'm currently in the middle of creating the unique algorithms for each melody progression. In Melodyc there will initially be 17 different melody progression modes that can each bar can use. In the future there might be more progressions, but these are at least the essentials to create music across various genres etc. In this post I will explain each progression and how they work. There is no code in this post as it's mostly theoretical. All progressions also depend on selected instruments and genres. That's because each instrument and genre progresses different and thus Melodyc takes that into account. All instruments and genres have default fallbacks when there is no specific progression. Note: Not all progressions have examples yet since they have not yet been implemented or data for them has not yet been created and analyzed. All examples are based on the generation of the A-Major scale. Generic A generic melody progression is basically a melody that progresses in a generic / random way. There is no specific way that a generic melody might progress. Upwards An upwards melody progression will progress from a low note to a high note. Downwards An downwards melody progression will progress from a high note to a low note. Up-Downwards An up-downwards melody progression will progress from a low note to a high note and then back down to a low note. Down-Upwards An down-upwards melody progression will progress from a high note to a low note and then back to a low note. Swinging Upwards A swinging upwards melody progression will progress in the same manner as up-downwards, but it'll progress twice over the bar. Swinging Downwards A swinging downwards melody progression will progress in the same manner as down-upwards, but it'll progress twice over the bar. Steady (Short) A short steady melody progression will progress in the same note with short repeating. Steady (Long) A long steady melody progression will progress in the same note with long repeating. Steady (Random) A random steady melody progression will progress in the same note but with random repeating. This may also result in off-beat notes. Steady (Off-Beat - Short) A short off-beat steady melody progression will progress in the same way as a short steady melody progression, but the mid and last notes might be off-beat. Steady (Off-Beat - Long) A long off-beat steady melody progression will progress in the same way as a long steady melody progression, but the mid and last notes might be off-beat. Interesting An interesting melody progression will progress in a way that has been deemed interesting based on the analysis of hit songs with same chord scales, instruments and genres. Unique An unique melody progression will progress in a way that has been deemed unique based on the analysis of hit songs with same chord scales, instruments and genres. Simple A simple melody progression will have minimal progression, but will still have a unique and interesting flow to it. Follow Chord A melody progression that follows the base chord will only use notes that are placed in the base chord, which means the whole scale is not available, only the 3 notes at every given octave. I think that's all I have for this time showing the progress of implementing melody progressions. By next blog posts I'll probably have implemented song analysis which means I'll be able to explain some more in-depth AI things. I might go more in-depth with each melody progression too and how the AI analyzes the chord and creates the melodies, but right now I don't feel like the AI is stable enough for me to explain the algorithms as they're still changing a lot and might still be in the near future. Also the data available at the moment is very limited and I want to wait until I have more data to base the AI on to explain more. I hope this was interesting to some though and I'm curious to know suggestions on what other progressions would be interesting to implement, as well areas it could be improved. I'm still new to writing blogs, but I'm always open to suggestions and ways I can improve my writing. I try to keep them interesting though. I will try to answer questions asked as well, so any questions you have feel free to ask here or through our email which you can find at https://undergroundrekordz.com/ Thank you for the interest in my journey of using AI to generate music as well the creation Melodyc, the service that will be available to the public utilizing the AI! You can read part 1 here.
  13. 1 point
    Introduction This is a simple command-line tool for editing portals in dmaps. It outputs a list of portals from a dmap in the format index,x,y, and allows you to write them back to the dmap in the same format. It can be compiled for Windows, Linux, or Mac using the Golang compiler, and I have attached the Windows build of the tool. I wrote the tool in about an hour, so it's a bit messy, but all open source and MIT licensed for whoever wants to do something with it. Figured that I'd write it on the third request. Links https://spirited.io/project/portals/

Important Information

By using this site, you agree to our Terms of Use.