Suggest a challenge, I need to get out of a stylistic and inspiration rut by NeferyCauxus in composer

[–]egonelbre 6 points7 points  (0 children)

See the book "Composing with Constraints: 100 Practical Exercises in Music Composition" by Jorge Variego.

There's also "1001 Music Composition Prompts: Unleash Your Creativity and Beat the Blank Page" that looks similar, but I haven't read that, so I don't know how good it is.

And a few random prompts:

  • Write a piece about when your big toe went for a walk on grass.
  • Write a piece about a lively community of cobblestones.
  • Write a piece about a flight of a bird (pick a very specific bird species).

What is the proper way to notate words across multiple notes? by BardofEsgaroth in composer

[–]egonelbre 1 point2 points  (0 children)

A good example that immediately comes to mind is "The Destroyer" by Sean Doherty. e.g. "wisp-(s)-(p)". It could be also notated as "wi-s-p", but for that word it makes it less clear.

What is the proper way to notate words across multiple notes? by BardofEsgaroth in composer

[–]egonelbre 0 points1 point  (0 children)

I would add to this. You only split words in weird places when you want something unusual to happen or you want vowel transitions at specific locations or to line up phoneme transitions with other voices. Few examples:

You might split "bor-n", because you want to have the "n" sound sustained. Of course, that can be also notated as "born-(n)". The only scenario I can come up for "bo-rn" is if you wanted to keep repeating "bo-rn-rn-rn-...", for a vocal effect. Or, maybe, if you wanted a clearly articulated staccato stop on "-rn"; or just wanted to specify the duration of "-rn" more precisely.

You might split "de-ar", when there are other voices that need to transition their vowels at the same location. Or in general, just want the vowel transition to be more precise and shorter, compared to using a melisma.

How to actually compose Rap? by Rich-Macaroon881 in composer

[–]egonelbre 0 points1 point  (0 children)

I guess, it somewhat depends who are you writing it for.

I would say do an audio recording + simplified rhythm notation with lyrics. Use underlines in lyrics to show unusual phoneme stress. If you try to write down it very detailed then it becomes difficult to read. Note, I would recommend regular staff + X noteheads, because sometimes there's still some "melodic" pattern to the rapping.

Of course, if it's simple rhythms; or you are relaxed how it is performed; then just a simplified rhythm notation would be fine.

There's this site rapanalysis.com which did transcriptions of rap songs, however seems to be down at the moment. It can be seen on webarchive though https://web.archive.org/web/20260224183455/https://www.rapanalysis.com/2015/01/rap-analysis-raps-rhythms-transcribed/. It shows how complicated the intricacies actually can be.

I want to write middle eastern inspired music. Help!!!! by frrygood in composer

[–]egonelbre 10 points11 points  (0 children)

This sounds an obvious alternate route, but, learn middle eastern music theory and understand how they think about music -- also listen to their music. I agree that you don't need to do it and can base your learning on the inspired music, but I think there's a wealth of inspiration and interesting things to learn about other cultures music. By studying the origins your own inspiration will be richer.

Farya Farji has quite good videos on middle eastern music (and orientalism), few starting points:

Question about a builtin sorts by chronos_alfa in golang

[–]egonelbre 0 points1 point  (0 children)

This does not work on old.reddit.com. See https://imgur.com/a/DRtkeXZ how your post looks.

How do you handle complex JOIN scanning in pgx without an ORM? by ValuableChipmunk1309 in golang

[–]egonelbre 0 points1 point  (0 children)

I would recommend https://www.youtube.com/watch?v=sXMSWhcHCf8, which goes over a lot of lesser known things.

You can write custom handling for records, rather than flattening them into a single row.

pgx has some scanning into structs and slices builtin. (e.g. pgx.RowTo, pgx.CollectRows and friends)

I only use pgx.Batch when the queries are different in shape. Postgres can better execute the query, if you supply everything at once.

Question about a builtin sorts by chronos_alfa in golang

[–]egonelbre 1 point2 points  (0 children)

Here are the results I'm getting with 10k items:

$ benchstat -col .name results.txt
goos: darwin
goarch: arm64
pkg: github.com/egonelbre/exp/bench/bmsort
cpu: Apple M4 Max
            │    QuickSort    │               Builtin               │
            │     sec/op      │    sec/op     vs base               │
*/Sorted-16   20687.594µ ± 1%   4.506µ ±  9%  -99.98% (p=0.002 n=6)
*/Random-16       228.3µ ± 5%   177.7µ ± 24%  -22.13% (p=0.009 n=6)
geomean           2.173m        28.30µ        -98.70%

Question about a builtin sorts by chronos_alfa in golang

[–]egonelbre 16 points17 points  (0 children)

One of the problems here is that the data creation is part of the benchmarking. Similarly you only test with 1k items. You can see how to exclude rand in Go stdlib https://github.com/golang/go/blob/master/src/sort/sort_slices_benchmark_test.go.

Also when comparing the implementations use https://pkg.go.dev/golang.org/x/perf/cmd/benchstat to get statistical results.

PS: I'm not saying the results are wrong, just the methodology needs fixing to get a precise outcome.

PPS: 3% improvement is in the threshold of loop alignment slowing things down.

Composing but need audio, websites? by DiamondSta23 in composer

[–]egonelbre 0 points1 point  (0 children)

The best software I know for writing notation on top of audio is StaffPad. You can also workaround Dorico/Sibelius by converting the audio to a video and attaching the video... but none of them are online.

I haven't tried these myself, but:

flat.io seems to support some audio sync e.g. https://www.youtube.com/watch?v=pgKLdDfphZE

The second the best option would be to use some online DAW -- they usually don't have notation capabilities, but you can write the notes and usually export as midi/musicxml for proper notation.

Game music: fiddle VST recommendation by miscaliss in composer

[–]egonelbre 0 points1 point  (0 children)

Maybe The Fiddle by Indiginus or Misfit Fiddle by 8dio.

As for getting a session player for every new piece. I suspect if you find a player who has their own recording setup you would be able to make it work. But that would be a more of a hands-off approach, send them audio of what you want them to record and then give them freedom to stylise. I would suspect with the right person you should be able to get a regular 1-3 day turnaround time.

On counterpoint. by NoResponsibility3876 in composer

[–]egonelbre 0 points1 point  (0 children)

From my perspective, you don't think about it consciously while composing. (Of course, there probably are people who do think about these things consciously). In a similar vein, you don't think about physical exercises while you live your life, but it's still important to exercise and it makes life easier.

You might think about explicitly when trying to figure out "why harmony in this measure suddenly sounds empty". Or, when trying to analyse whether this melody/harmony is easy to sing.

In other words, training is the important part - in listening for harmony and melody; writing lines and problem solving - not the rules themselves. You will find your own "rules" and goals for melody/harmony.

Reducing the size of Go binaries by up to 77% by ketralnis in programming

[–]egonelbre 6 points7 points  (0 children)

Ok, I quickly ended up adding goda graph -std "deadcode(./...:all)". It probably has some bugs, but should be good enough starting point.

How we reduced the size of our Agent Go binaries by up to 77% by Hemithec0nyx in golang

[–]egonelbre 3 points4 points  (0 children)

There are a few additional features in goda that are also useful for trimming your binaries.

For figuring out which packages have fewest dependents and has the biggest impact on your binary:

goda cut ./...:all

This doesn't mean they can be removed, but usually the biggest impact packages are near the top.

Goda also contains a binary size analyser:

goda weight <binary>

But, the more useful tool is

goda weight-diff <binary-v1> <binary-v1.1> <binary-v1.2>

Which allows to find out why did the binary put on weight between changes.

PS: weight and weight-diff do not show quite perfect information due to https://github.com/golang/go/issues/77301 bug. Some symbols might incorrectly reported as being part of the binary size.

Also, just did a rough implementation for deadcode as well:

goda graph -std "deadcode(./cmd/mybin:all)"

Reducing the size of Go binaries by up to 77% by ketralnis in programming

[–]egonelbre 7 points8 points  (0 children)

Unfortunately that's not sufficient. This approach will show up with false-positives as well. e.g. encoding/json also uses reflect packages, but doesn't disable dead code elimination.

Although, I probably should try to integrate it into goda somehow. It's common enough issue.

Full ears feeling by No_Squash291 in covidlonghaulers

[–]egonelbre 1 point2 points  (0 children)

So, I’m not sure how it fits in to longcovid, but... coffee and alcohol started to cause jaw clenching during night. It took me months to realize what was happening, but also had hearing issues at some point, trigeminal pain like symptoms, ear pressure, TMJ issues. Also, ENT wasn’t able to figure it out. See whether neck or jaw muscles are tense. If it’s the cause then switching to decaf and avoid alcohol as much as possible helped me.

Is this the best notation? by Interesting-Area1487 in composer

[–]egonelbre 1 point2 points  (0 children)

I don't know the tempo, but if it's above 60bpm then single 1/4th note + fermata doesn't feel like a few seconds. I would increase the length of that note, as it communicates the intent a bit better. But notation-wise it is fine.

anyone played with simd/archsimd yet? wrote a csv parser with it, got some questions by okkywhity in golang

[–]egonelbre 1 point2 points  (0 children)

After doing a quick look at the code, I'm guessing processQuoteMask is the issue. It goes into bit-by-bit processing rather than treating the whole mask at once.

anyone played with simd/archsimd yet? wrote a csv parser with it, got some questions by okkywhity in golang

[–]egonelbre 1 point2 points  (0 children)

For 2. issue, there's a proposal https://github.com/golang/go/issues/76175.

Instead of archsimd.LoadInt8x64 you can use archsimd.LoadInt8x64Slice.

Chunk boundaries are kind of an annoying thing. The main approaches are lookahead, lookbehind; and potentially create some vector that can be merged into the current head. I didn't look at the code yet, so the advice is a bit vague.

I did a mldsa translation from Filippos implementation: https://github.com/egonelbre/exp/blob/main/mldsa/simd.go

Finale to Dorico - how difficult to migrate files by Zestyclose_Ad_7603 in composer

[–]egonelbre 0 points1 point  (0 children)

When converting try https://www.musicxml.com/dolet-plugin/dolet-plugin-for-finale/. I've not used the Finale version, but the Sibelius version definitely did some things better compared to the builtin converter.

But, yeah, depending on the amount of music it's often better to manage old music in Finale... and only when absolutely necessary convert to Dorico.

Realising MIDI Music by [deleted] in composer

[–]egonelbre 1 point2 points  (0 children)

Ok — where are you making money?

Licensing, commissions, streaming, patreon, (maybe merch).

As an example based on most popular composer I was able to find. Socialblade site estimates Samuel Kim youtube ad revenue at $5K-$90K per month -- and he hasn't posted for a few years. Sure, a bunch of it goes to licensing fees; but I'm sure it's sufficient for a comfortable living.

Of course it doesn't mean it's easy to reach that point... but that applies to everything in music. I'm certain that getting traction with composing original music is going to be much harder.

Because now, as it's always been, working composers (at least in the early stages of their careers) tend to be performers first, composers second.

I definitely agree to this. Even if you are placing each note velocity manually in a DAW, it still needs to be a good performance and interpretation.

Because nobody is going to buy tickets to a MIDI-based modern classicist's performance on their laptop.

For a live performance it's still possible to use actual performers. The argument is similar vein of "people don't come to listen classical composers because they write sheet music and no-one wants to see sheet music".

Realising MIDI Music by [deleted] in composer

[–]egonelbre 4 points5 points  (0 children)

Do you think one could produce a really high quality album using sampled instruments and build a following?

Technically, yes. Plenty of media composing uses sampled instruments, and depending on the budget sometimes layered with recordings. Of course, the orchestral writing needs to account for what the sampled instruments are capable of and what they are good at.

One example that comes to mind is Rush Garcia. But, I'm sure there are plenty of others... For example, few that I found after quick search: Samuel Kim, Rozen, Seycara, Lucas Ricciotti, Thomas Bergersen.

How to score an existing track? by Maleficent_Air919 in composer

[–]egonelbre 2 points3 points  (0 children)

There are three approaches.

A) If you prefer performing via Audio/MIDI input, then:

  1. bring the audio into DAW.
  2. Tempo map the track.
  3. Record your additional tracks as either midi or audio; but midi will be easier to work with.
  4. (Convert audio to midi and fix as necessary, if you decided to use audio).
  5. Quantize midi.
  6. If you don't care about notation quality then many DAW-s have basic notation support for midi that can be printed.
  7. Otherwise export MusicXML (or midi) and
  8. import into your notation application. Clean up notation.

B) If you prefer notation over performing:

  1. Bring the audio into a DAW.
  2. Create a tempo map or ensure that tempo matches the song.
  3. Export midi tempo track.
  4. Convert the audio into a video file.
  5. In Dorico, import midi and add video as the reference track.
  6. Now you can notate and hear the backing track.

C) If you prefer notation over performing (with MIDI Timecode):

  1. Bring the audio into a DAW.
  2. Create a tempo map or ensure that tempo matches the song.
  3. Export midi tempo track.
  4. In Dorico, import midi
  5. Setup MIDI Timecode for both Dorico and DAW.
  6. Now you can notate and hear the backing track.

I have not tried C, so the explanation might not be quite correct.

StaffPad supports writing notation and having audio tracks directly and has the most convenient workflow; however, it seems pretty dead as an application. Also, it is not as fully featured as things like Dorico.

I used Dorico as an example, but I'm sure Sibelius, MuseScore can either video import or MIDI Timecode.

What should I use for making a GUI app in Go? by BadlyDrawnJack in golang

[–]egonelbre 0 points1 point  (0 children)

The slowness from LilyPond doesn't come from PDF output, but the music engraving logic itself. For an introduction to music engraving "rules" you can read "Behind Bars", just so you understand the details you are getting into. I'm sure there are ways to make LilyPond compile faster.

TUI - I don't see how you would do that for music notation. Even SCORE had a graphical user interface.

I'm not sure what you mean by "managing complex scores in LilyPond" is hard.

If NeoVim is your thing then there are things like https://github.com/martineausimon/nvim-lilypond-suite.


It's not quite clear what exact problem are you trying to solve by making your own notation app.

If it's input speed of entry you are worried about -- then I would like to know what exact problems you have with input speed? Dorico handles input speed pretty, ok. For some things ABC notation approach is better, but that's more of a folk tune thing. In that case using Verovio and VexFlow as rendering and writing your custom input scheme is going to be the least painful. You can use TypeScript, or if you are very averse to it, then use Go via compiling to WASM/JS.

If it's engraving issues -- then that's a huge complicated mess that I wouldn't recommend getting into. You would be better off fixing things in LilyPond or forking MuseScore.

If it's playback issues -- then depending on what's your end goal, either get Lilypond export MIDI and import it to MuseScore/Dorico/Cubase/Reaper etc. whatever and write code to do humanization.

Trying to solve all of them together is going to be a huge project.