Motivic API

Documentation

Try It Out

Interact with the API from the command line using cURL and jq. Generate a random melody, convert it to a WAV file, and listen to the results.

  1. Make a request to the random melody endpoint and write the response to a JSON file.

    with default settings...

                                                                     
                                                curl -X POST \
                                                -H "Content-Type: application/json" \
                                                -H "Cache-Control: no-cache" \
                                                -d '{}' "https://motivic.io/api/melody/random" > my-motif.json
                                            

    ...or with explicit custom user parameters

                                                
                                                curl -X POST \
                                                -H "Content-Type: application/json" \
                                                -H "Cache-Control: no-cache" \
                                                -d '{
            "key":"f#",
            "mode":"mixolydian",
            "octave": {
                "low": 3,
                "high": 5
            },
            "leap": {
                "min": 1,
                "max": 24
            },    
            "tempo": {
                "type": "bpm",
                "units": 140
            },
            "duration": {
                "min": 1,
                "max": 4
            },
            "length": {
                "type": "measures",
                "units": 1
            }
                                            }' "https://motivic.io/api/melody/random" > my-motif.json
                                            
  2. Parse the response to get the motif and save it to a variable

                                                
                                                MOTIF=$(jq '.response' my-motif.json)                        
                                            
  3. Format the convertor API request body and save it to a variable

                                                
                                                BODY='{"voice": "sawtooth", "motif": '$MOTIF'}'                        
                                            
  4. Send a request to the Golang convertor endpoint to generate a WAV audio file from the JSON motif. The response will be compressed in a .zip file.

                                                
                                                curl -X POST \
                                                -H "Accept: */*" \
                                                -H "Accept-Encoding: gzip, deflate, br" \
                                                -H "Content-Type: application/json" \
                                                -H "Cache-Control: no-cache" \
                                                -d "$BODY" "https://motivic.io/api/convertor" --output my-motif.zip
                                            
  5. Unzip the file (MacOS)

                                                
                                                unzip my-motif.zip                        
                                            
  6. Check your system volume. Make sure it is set to a healthy listening level!

  7. Play the WAV file (MacOS)

                                                
                                                afplay my-motif.wav