Music Grid
music-grid.surge.sh
music-grid.surge.sh
https://music-grid.surge.sh/#2048-264-2048-168-256-256-144-6...
https://music-grid.surge.sh/#2114-1365-2730-1365-2730-2322-2...
A one minute doodle: https://music-grid.surge.sh/#41-512-320-2597-840-64-512-1189...
Would be nice if it did `history.replace` instead of push, it currently nukes your back button. There is also something off, maybe a 4-note limit per row? I couldn't quite put my finger on it but some high notes seem to not come out.
> Would be nice if it did `history.replace` instead of push, it currently nukes your back button.
This is fixed now. Can you check now?
> There is also something off, maybe a 4-note limit per row?
Yeah, I felt this too. Something is off when most of the notes in a row are selected. I will figure this out.
The history issue is fixed now :). I ended up using replaceState instead of pushState
Discussed at the time: https://news.ycombinator.com/item?id=16552777
It seems like there is an uptick in music production-related posts on HN lately. Which is awesome.
Has it always been like this and I'm just now noticing? Or, if it is a recent phenomenon, do we think it's because folks are trying to connect more with arts, in light of everything going on?
Anyway, this is very cool and I'm happy to see it!
(And messing about with the idea of using a midi input device to control batch jobs)
I know three people who are working on something music-related off the top of my head, and and countless more working on something a little more lively than an every day weekend project.
It doesn’t have to be music of course, but I think there is a lot of overlap in the hacker<—>musician Venn diagram, as alluded to above.
https://music-grid.surge.sh/#1285-2-2570-68-528-16-2592-64-5...
My idea for a sound block toy is similar but instead of having a grid it's a line of blocks which light up and play a tone. The tone will be adjustable with buttons or gestures and can be rearranged.
I also need planned out a life size grid which people collaborate and step on to light up the notes. Obviously this concept is very interesting to me!!
https://play.google.com/store/apps/details?id=com.njnelson.t...
If you're talking about Tone Matrix, I ported it to JavaScript to work on modern browsers and phones.
Check it out if you're so inclined:
It's also expensive, now 500 USD on eBay - so it's nice to see a version of the product getting put together on the web :)
There is also a very lovely spiritual successor for VR called Soundstage VR: https://github.com/googlearchive/soundstagevr
There are a bunch of software implementations, by the way. Sometimes they refer to the concept by ‘Tone Matrix’ instead.
I like the share feature! https://music-grid.surge.sh/#64-2691-64-2694-32-2380-32-2368...
https://gist.github.com/jedberg/37e9680806bc517925daeaae4798...
Meaning, how come if I close my eyes and place some random tiles, it still come out sounding OK. But not so if I bang random keys on a piano.
B3 C#4 F#4 G#4 C#5 D#5 E5 G#6 B6 C#7 F#8 G#8
These notes are all diatonic, e.g. from the same key (unlike all the keys on a piano). That key is C# relative minor (or E major). In modal language, this is the C# Aeolian (or, when played from E to E, Ionian mode):
C# D# E F# G# A B C#
If you play notes restricted to a single key, it will come out sounding OK.
Or it could equally well be
G# A# B C# D# E F# G#
(I hear it much more like that too.)
The tonal center we'll hear using this specific collection of notes, whether it be G#, C#, E (or any other note from this key), all depends on the sequence you enter. Rhythmic variation would also support this but this app does not have that option.
Here's one with a tonal center of C#: https://music-grid.surge.sh/#1152-2112-1040-2212-1088-1320-1...
And with G#: https://music-grid.surge.sh/#260-272-528-256-160-288-512-108...
It's unclear to me from your comment whether you realize that.
this scale:
C# D# E F# G# A B C#
is C# Aeolian.
Minus the A natural, that is one collection of notes that is being strongly suggested by this app. Yes, an A# would would change the tonality, and the key.
To me, I hear the 9th scale degree relative to the tonic much more than the 6th (i.e. 13th). That's in general, and it's based on my own predilections and harmonic training. This scale includes a D#, as well as the 4th and 5th. I "hear" this as relative to C#, not G#. Totally welcome, of course, that you hear this as relative to G#; the E natural then functions as the minor 6th. To me, that's a much weaker harmonic suggestion than the E natural functioning as the minor third. It's totally OK with me that we hear this differently. Is it OK with you?
Also, why does it matter to you what I (some random person online) realizes (or not)?
Check out my happy song: https://music-grid.surge.sh/#521-80-0-2121-512-552-0-2114-0-...
Just a heads up as I've had the same issue with a (way more confusing and less fun) thing I done, you need to turn off the silent switch on iPhones to hear the audio. Maybe detect the device and include a prompt?
https://music-grid.surge.sh/#2320-2128-2304-2088-1280-1056-1...
Based off what I hear here:
https://music-grid.surge.sh/#0-0-0-1025-1-2-4-8-16-32-64-128...
One might assume it's B Major with no 7th, but I think it sounds more like C# Minor/Dorian with no 6th.
https://music-grid.surge.sh/#128-16-0-16-128-16-0-528-0-16-0...
Now I need to find a way to export the sound and use it as my ring tone
edit: found how to do it via audacity https://askubuntu.com/questions/229352/how-to-record-output-...
Here's one of google's
https://www.google.com/logos/2017/fischinger/fischinger17.ht...
Here's Ableton's
https://learningmusic.ableton.com/
Is there something special about this one?
(To be clear, I am not the creator here.)
There are many things like this, but for what it is worth, this is a pretty well executed one: simple to use, elegant UX, produces pleasing tones even when used inexpertly.
Also the fact that this one expands to a large number of steps is somewhat unique I think. (BTW it seems odd to me that the lower bound on the number of steps is 10 rather than the conventional 8.)
I too have seen (and played with) a large number of step-sequencer things and literally have three of them sitting next to me on my desk while I type this.
But I still enjoyed playing with this one for a little while.
I'm sure the OP learned something from this exercise, and there could be people for whom this is their first/best experience with a simple step sequencer, so it may "unlock" something for someone. But I think that's unnecessary "gravy" in this case. Sometimes the "joy" of creating is reason enough to do it. I may never visit Music Grid again but I'm glad OP shared it.
> steps is 10 rather than the conventional 8
oops, sorry on that one as I have no idea about music theory and stuff. I just learned a lot by building it and now going through this thread learning more.
To be honest that's fine. I sincerely think this is a pretty elegant implementation, maybe because you're looking at it with fresh eyes.
Traditionally the hardware versions of these things have a pretty clunky and awkward interface that seems designed to minimize the number of switches and dials rather than to be readily understandable. A lot of the "toy" software sequencers you'll find online are clearly modeled on the hardware sequencers - sometimes specific ones - and copy that clunky interface. The "here's a grid, toggle a button to play a sound on that beat" interface is much more intuitive and fun to play with.
I think this is really well done. The only idea for improvement that jumps out at to me would be the ability to drag the cursor with the mouse down to toggle multiple buttons at once rather than independently clicking on each one.
I also like Rick Beato, as he tends to do more song deconstruction, though sometimes he can come off as a bitter, old man (though most of the time it's endearing): https://www.youtube.com/user/pegzch
Finally, I also like Signals Music Studio. He takes a little more of a traditional approach, but still in the camp of positivity rather than criticism of "crappy modern music": https://www.youtube.com/channel/UCRDDHLvQb8HjE2r7_ZuNtWA
I love WebAudio stuff. It's so much fun to bang out a jam with some code. I could never get the gumption to get SuperCollider or any of the other systems working, because I was much more interested in the interactivity and sharing that are fundamental to the web.
Here's a multi-touch capable keyboard: https://codepen.io/SeanMcBeth/pen/meaQvj
Here's a game I made (about the consequences of following orders) that used nothing but WebAudio synthesis for the sound: https://www.seanmcbeth.com/yabs.html
Actually, I've been hacking on audio stuff in the browser before there was even a WebAudio API. Here's a synth I made that generated raw WAV files on the fly and played them in a standard <audio> tag (note: it pretty much only works correctly in Chrome): https://www.seanmcbeth.com/html5/synth/
Always keep playing.
I've seen the others too, but I found this to be less busy and more fun!
I called it MusicToy: http://maximecb.github.io/MusicToy/#aaaaaaaaaaaaaaaaaaaaaaaa...
It's almost exactly the same, with the pattern encoded in the URL, but it also has drum samples, and it has very few dependencies (no need for node or any web frameworks). I personally prefer having time go from left to right because that's how most sequencers work, and our monitors tend to be wider than they are tall.
I also made an updated, more advanced version (MusicToy 2) in 2019: https://mt2.musictools.live/
Here's an archive article about Absolut's campaign:
https://www.campaignlive.co.uk/article/absolut-vodka-launche...
Coldcut's Wikipedia entry:
Edit: original link to tone matrix: http://lab.andre-michelle.com/ToneMatrix
We're all inspired by other things, and being first doesn't really count for much if you don't promote yourself. Even then, it's a roll of the dice as to if you stand out in the crowd.
If you're just going by "JS-based grid sequencer' I created one in February 2011 as part of an HTML-based emulation of a Boss DR-110 drum machine (Which I later updated to use the Web Audio API to synthesize the drum voices)
https://github.com/leviathant/BossDR110
It's skeumorphic (I was challenging the popular notion "You can do everything in HTML that you can do in Flash" at the time - it wasn't true then, but we're much closer now), I never finished out 'song mode', but it is a JS-based grid sequencer that predates your timeline. As best as I can tell, it was the first click-and-drag Javascript knob done Rebirth/Reason style - it was a little clunky, but I sure as hell couldn't find any remotely similar code to base it off of - but I don't get bent out of shape whenever I see other people making Javascript knobs.
I know there was no hostile intent, and I'm glad that OP is having fun, but hopefully you understand why I feel a slight pinch when I see something that is so close to what I've built making the rounds on HN with zero acknowledgement from OP.
If we just go by a description of features, we've both built a grid sequencer in JS, with a built in synth that is designed to play on a scale so that everything comes out "sounding good"... With a serverless architecture so that you can share the tunes with anchor tags. It's precisely the same idea. How would you feel? Would you be able to be completely detached?
I did promote MusicToy a bit. The original MusicToy made the rounds on reddit 8 years ago. MusicToy2 has had the same (small) base of active users for about 1.5 year now: https://mt2.musictools.live/
Either way, I should probably look at this as a learning experience. It shows that I didn't promote my project as well as I could have. My project could also use better mobile support in terms of auto-scaling the page for mobile displays.
Speaking for myself, I'm not great at self-promotion. It feels gross. Marketing feels gross - and, if I'm being real, it often is gross. But that's how you get recognition. Spending time to talk about yourself and your work helps to position you for that time that luck just seemed to fall in your lap.
As I was building out that JS Boss DR-110, I rounded a corner where I felt like if I really dedicated myself to putting the polish on - finishing up song mode, scrapping and rewriting the frontend styling, a live demo page with a listing of actual DR-110s for sale driven by the eBay API - I could have made a sizeable splash in whatever that niche world was. Of course, in early 2011 getting consistent timing out of Javascript doing audio playback wasn't possible - that was a considerable hindrance. But it would still be a solid groundwork for someone else's future project. I could have done a few low-key unpaid speaking engagements about it, for sure.
Then what?
Every now and then, I think about going back and rewriting the sequencer, or building an import/export routine, or implementing MIDI I/O, but I have no real desire to get into the world of creating softsynth drum machines & sequencers. It's a fun footnote, it was a good way to kick off some rust - I hadn't been doing front end code for several years by that point.
Nice job on Musictoy, and that's great that you've got a persistent userbase, no matter what the size is!
It's also OK to build projects that don't necessarily go anywhere. I recently had a music app I was developing and I had hopes for turning that into a business, but I quickly realized that in order to make the app really competitive, to have enough value that people would pay for it, it would become a job on top of my job, and that would really kill the fun. At the end of the day, side-projects like this are mostly about having fun and learning a few things.
I am happy with my small userbase. The fact that a few people keep coming back, and the app lives on its own, without me promoting it, means that some people find genuine value/enjoyment out of it. I intend to keep the app running and free for as long as it doesn't become a maintenance burden.
if it makes you feel any better, I am the author of the website and I posted the same exact link 9 hours before OP and it got 3 upvotes [0] .
then I woke up to a lot of GitHub stars on the repository and turns out this blew up.
HN works in mysterious ways.
> 0 acknowledgement from OP
I have no idea, that seems like a newly created account to me. if you have any queries or issues/feedback, you can always raise it on git or contact me.
I took this only as a learning experience and in no way to promote or market something :)
This HN account is new-ish, but the original MusicToy blog post from 2012 is still around [1].
As far as Git goes, I would appreciate it if you had an acknowledgement somewhere that linked to the MusicToy repo[2], or just mentioned in passing in terms of inspirations/predecessors. You obviously have no obligation to do this, but it won't take away from the success of your app if you choose to do so.
I wish you the best of luck in your future endeavors, and may your success encourage you to build more great projects.
[1] https://pointersgonewild.com/2012/04/23/musictoy-music-made-...
If you can't see the innovation, let me spell it out for you in very few words: the software has an intuitive-enough UI that you need no prior knowledge of the program to use it, and you can share musical ideas in one or two clicks. Please tell us exactly which desktop program allowed you to do this, as easily, pre-2012? Yes, this is novel, since it enables something that wasn't possible before.
Trying to claim your place as the trunk of the tree that any tool that looks like this branches out of is not reflective of reality and pure hubris.
Also I'd appreciate it if you added a link on Music Toy for both of these apps which clearly gave you inspiration.
and my inspiration, as I stated earlier was from a stress-reliver app in play store which I have given credits in the first paragraph of README.
(Ostensibly the change was meant to prevent pages from auto-playing sounds without user input, but in practice it broke pages regardless of whether they did so.)
Details: https://developers.google.com/web/updates/2018/11/web-audio-...
The more embarrassing one for Google is this entire site
https://www.google.com/search?q=link%3Ahttps%3A%2F%2Fmusicla...
When they first applied the policy (mid 2018), it broke pretty much all webaudio and they un-applied it a few days later. When they later reapplied it (late 2018) they didn't change the policy itself, but apparently added a thing where chrome ignores the policy if it remembers you having allowed audio to play at that site before.
Anyhoo it looks like I was in an incognito tab when I tried it before and the audiocontext was silenced. In a regular tab it plays normally (for me, anyway).
For as much as Google engineers talk about "don't break the Web", they break the fucking web all the time.
Welp, you failed spectacularly at that. You came off like a bitter, cynical asshole who's mad that someone made something.
>Is there something special about this one?
Yeah, someone had the inspiration to make something and they did it. That's pretty fucking special.
"The credit belongs to the man who is actually in the arena... who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds... who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat."
"Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith."
The best way to respond to a comment like that isn't to do to Monty Python fish slap but rather to include and expand (I almost want to say 'embrace and extend') - rodw shows how it's done: https://news.ycombinator.com/item?id=23517644
For those for whom Baby Shark is just too listenable
Edit: someone suggested the Google version. Just to ruin your day twice...
Here’s one of my many attempts at tunefulness https://music-grid.surge.sh/#162-2628-33-16-130-593-2048-388...
Can someone explain how it works musically? Why does (almost) anything you make sound good?
EDIT: I don't know anything about music but... wouldn't it make sense to run left-to-right instead of top-to-down?
https://music-grid.surge.sh/#8-130-0-516-256-136-64-32-16-8-...
Also, if you really wanted to, you can write a program to construct these URLs.
Edit: I wrote the program: https://gist.github.com/jedberg/37e9680806bc517925daeaae4798...
I assume it's using the pentatonic scale or other music theory trickery to make "anything" sound good? :)
First try, came up with https://music-grid.surge.sh/#4-2048-8-2114-2-2370-2-2112-321..., am happy
> I assume it's using the pentatonic scale or other music theory trickery to make "anything" sound good? :)
I have no idea. But it works :D
https://music-grid.surge.sh/#768-3092-768-3840-320-3092-320-...
I tried several patterns myself and also tried the links others shared here. But now I’m left with the feeling that they all sound very similar. :(
There's thousands upon thousands of songs for any scale after all
https://music-grid.surge.sh/#1040-2080-1088-32-16-136-64-32-...
https://music-grid.surge.sh/#392-0-392-1024-1-64-1056-1-64-1...
https://music-grid.surge.sh/#644-8-2304-660-0-2372-672-14-12...
https://music-grid.surge.sh/#1-1282-1-1280-2056-1044-2056-10...
https://www.maxlaumeister.com/tonematrix/
I love what you did with the adjustable column length.
https://music-grid.surge.sh/#360-336-168-336-4095-8-330-8-35...
I'm not sure what's my point (definitely not that I'm doing better, what I composed objectively suck), maybe that composing your own stuff gives it a different dimension? Or maybe just the fact that you're building it bit by bit makes it more interesting because there's a sense of progression
This is my crowning achievement: https://music-grid.surge.sh/#2050-8-256-128-2112-32-72-36-20...
My song: https://music-grid.surge.sh/#0-1024-128-1024-128-1056-128-10...
I like your song!
This is not like pressing random keys on a piano. Since it's just one fixed scale everything will automatically sound good but also very similar.
https://music-grid.surge.sh/#2-1-2050-260-258-2312-66-2056-3...
Looks like a great way to create indie game music
https://music-grid.surge.sh/#4030-524-4030-0-4030-2722-2750-...
I wish the grid didn't clear when you changed the size, but I understand why that might have been the choice.
https://music-grid.surge.sh/#16-128-0-8-256-32-1024-128-0-10...
https://music-grid.surge.sh/#274-72-292-1168-2-584-130-1060-...
https://music-grid.surge.sh/#4-0-4-0-64-0-288-0-2-3740-0-260...
Reminds me of FTL music.
https://music-grid.surge.sh/#0-33-1024-1024-0-3092-3108-0-17...
Peak user instructions. Overall, great job :)
Have you tried automating it? "Generative music"
Should I assumed the first column is the middle C?
Once your ears have cringed enough, go here and click Preview/Import then the Play button: https://tinyurl.com/mariobetter
https://music-grid.surge.sh/#1152-32-512-32-152-0-148-0-266-... 1-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-0-528-0-0-0-34-0-1058-1064-0-1058-0-1058-1058-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-2048-0-0-1024-0-0-512-18-268-24-0-1048-0-24-2072-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-1024-0-512-512-0-0-168-0-0-292-0-0-276-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-512-0-5-5-0-5-0-138-512-20-6-518-4-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-1024-0-512-512-0-0-168-0-0-292-0-0-276-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-512-0-5-5-0-5-0-138-512-20-6-518-4-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-0-1152-32-512-32-152-0-148-0-266-0-518-518-0-6-544-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-512-128-176-48-512-24-522-0-6-128-4-515-5 12-3-0-3-1056-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-0-0-528-0-0-0-34-0-1058-1064-0-1058-0-1058-1058-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-2048-0-0-1024-0-0-512-18-268-24-0-1048-0-24-2072-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-0-0-1152-32-512-32-152-0-148-0-266-0-518-518-0-6-544-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-512-128-176-48-512-24-522-0-6-128-4-515-512-3-0-3-1056-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-0-0-1152-32-512-32-152-0-148-0-266-0-518-518-0-6-544-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-512-128-176-48-512-24-522-0-6-128-4-515-512-3-0-3-1056-0-512-128-176-10-512-10-560-0-176-0-512-560-0-24-1034-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-0-528-0-0-0-34-0-1058-1064-0-1058-0-1058-1058-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-2048- 0-0-1024-0-0-512-18-268-24-0-1048-0-24-2072-0-2048-0-144-1072-0-40-530-0-268-24-0-1048-0-24-2072-0-1024-0-512-512-0-0-168-0-0-292-0-0-276-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-512-0-5-5-0-5-0-138-512-20-6-518-4-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-1024-0-512-512-0-0-168-0-0-292-0-0-276-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-512-0-5-5-0-5-0-138-512-20-6-518-4-0-1024-36-552-144-128-152-48-48-512-10-128-20-6-518-4-0-1024-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-656-164-296-0-146-0-50-146-0-41-0-50-0-146-0-656-0-656-648-0-656-0-656-0-0-1568-0-0-656-0-0-552-0-0-0-528-0-0-0-34-0-1058-1064-0-1058-0-1058-1058-&399