Song Designer made with Elm <3 Open for Hacks

I was using ClojureScript for the frontend, with the idea of joyfulling using the “same” language front and back.

But, as you can imagine, the scalability simply doesn’t compare to Elm!
So last fall I migrated to Elm and haven’t looked back.

Link to Repository on Github:
https://github.com/ckmahoney/song-designer

The application is a UI for creating layouts for songs, sending API requests to make the song, and showing a playlist of music. (It uses some ports for 1 dependency, WaveSurfer.js, for rendering a waveform and triggering playback. Playback state is managed by Elm).

If you are curious to see Elm in production this is for you; or if you were like me and just wanted to see examples of how people use it in real life.
If you are eager to write some Elm code and want a project to work on then please be my guest :slight_smile:
Pull Requests are welcome and I’m happy to receive issues/features/bug reports via GitHub.

10 Likes

Hi Cortland,

Welcome to the community and thanks for sharing your project! It’s been a while seen we see a music production app in the Elm community and Song Designer ignites the light in the field :musical_note: :musical_score: :musical_keyboard: :guitar:

Is Synthony the same app or it’s some broader project which includes Song Designer?

1 Like

Good morning @novid and thanks for asking.

I created the Song Designer for use with Synthony. So yeah that’s the application where it lives from my point of view.

Since the license included with the repo is very permissive, you are welcome to use it yourself however you please!

Which other music production apps might be using Elm? I’m eager to find more algo-music friends :slight_smile:

To note a few of these packages/projects:

  • elm-audio: Play sound effects and music in a declarative way by @MartinS
  • elm-music-theory: Work with musical concepts by @duncanmalashock
  • emusic: DSL to write music patterns that looks like those available at sequencers, drum machines and daws. Based on HMusic. by @lgcantarelli
  • elm-piano: Simple piano wigdet for Elm programming language by @cript0nauta
  • elm-chords: Parse chords sheets for guitar and ukulele in Elm by @Arkham

These are packages available from the official repository, there might be other projects which I’m not familiar with at the time.

2 Likes

Wow, this is a great list!

elm-chords and elm-music-theory, they really caught my attention and am excited to explore them more.

song-designer is calling a backend service (running SuperCollider) for its audio synthesis. It’s cool to see WebAudio API in action for elm-audio.

The ideal world has as much audio playback and wavefrom illustration managed by Elm too; so there exists a possible future song-designer + elm-audio, and elm-chords to visualize a lead sheet for the generated music.

Thank you for sharing <3

Great idea!

Relevant, I’m working on this: https://parture.org (unoptimized prototype: http://dev.editor.parture.org) (frontend in Elm!)

3 Likes

Amazing stuff everyone :slight_smile:

I would also like to explore Elm and Web Audio API. So far I found this project elm-web-audio – although it seems abandoned. I thought about forking it and improving it, but that’s for later, as I’m still learning Elm.

While on the topic: I was thinking of expanding it, to natively work with synthesis, looping, and sampling. That would be my “desert island I’d love to maintain” Elm project if I manage to get good enough.

By checking the source code, the current version doesn’t use any port. As a neophyte, I ask: would ports be necessary along with some JavaScript to fully use Web Audio API and extend that package to be something like p5.sound?

Thanks again for sharing your amazing code and sorry for hijacking this thread a little.

Hello!

Maybe you will be interested in this my research

3 Likes

@catz amazing! Thank you :slight_smile:

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.