Giter Site home page Giter Site logo

polyrhythm-maps's Introduction

Polyrhythm Maps

This repository is a workspace for collaborating on building three maps related to the Suter (1980) Corpus.

Each subdirectory in this repository contains the files and documentation for each of the three maps: Composers, Corpus, and Timeline.

Landing page for the project: https://maps.polyrhythm.humdrum.org

Contributors to the project:

Principal Investigator: Ève Poudrier

Technical Director: Craig Sapp

Graduate student researchers (Polyrhythm Project): Jason Lee, Bryan Bell

GIS Librarian: Evan Thornberry

Graduate Consultants: Xilin Wan, Lily Demet

Link to documentation: https://docs.google.com/document/d/1LR19gyfLX9Cs1-96zJl-JLosPqwx40xkVM-CHvmu9vk/edit?usp=sharing

List of repository contents:

polyrhythm-maps's People

Contributors

lilydemet avatar jasonleeubc avatar ect123 avatar craigsapp avatar epoudrier avatar egrguric avatar bel28kent avatar xilin-wan avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

polyrhythm-maps's Issues

Inconsistent date formats in Composer map

For birth/death dates, the format is presented inconsistently. For example, some dates are shown as dd-MMM-yy, while some others are shown in dd-MMMMM-yyyy. Investigation is needed to see where this inconsistency came from.

New colours for composers map

The composers mp uses some colours that might need to be restyled to be colour-blind friendly. I've used ColorBrewer to get hex or rgb codes for web accessible colours before and so it might be good to choose some from there. A qualitative, 3-class, scheme might work: https://colorbrewer2.org/#type=qualitative&scheme=Dark2&n=3

Additionally, I don't know if the marker clustering plugin used for the corpus map uses color blind friendly colours, but if they are, then I would suggest using those colors in the composers map if the intention is to have consistent styles for each of the maps.

Browse Published Maps for Ideas

Look at published maps for ideas on features and enhancements, including user information. A good place to start to locate music-related digital resources might be: https://drm.ccarh.org/
Nite that there are two portals with resources listing (ADAM and EVE).

Create GeoJSONs for each set of data

We will need to convert the existing csv data that was used for the original heatmap and the timeline maps into geoJSON. The geoJSON can be created in a number of ways but I would recommend using QGIS.

CSV data can be pulled into QGIS using the steps indicated here (although this might be a different version of QGIS than you have): https://www.qgistutorials.com/en/docs/importing_spreadsheets_csv.html

Save the features as geoJSON with a short filename (example: timeline-locations.geojson and heatmap-locations.geojson) in each map's directory.

Acknowledgment

Evan suggested that it would be good to have a way to recognize the work that has been done by students on this project. I think it would be nice to also add staff. On the polyrhythm website (www.polyrhythm.humdrum.org), there is a People page that lists current members and past contributors. This would be the idea place to start. If there is a publication that also refers to the maps, you will be acknowleged for your work.

Could you please send me the necessary materials so I can post it on the website?

If you are planning to stay on the project for the summer, this is the format:
Screenshot 2023-04-13 at 3 07 27 PM

If you are completing the work by the end of the month, this is the format:
Screenshot 2023-04-13 at 3 07 55 PM

Publish GitHub Pages

To see the working map documents in the browser, we'll need to publish a branch on this repository with GitHub Pages. I would suggest creating a separate branch web or gh-pages to do this, and leaving the master branch as the default, but I'll let @epoudrier or @craigsapp make that call.

Interaction between layer toggle and composer filter

The interaction between the layer toggle and the composer filter is problematic. To replicate the issue:

  1. With all five layers switched on, select a composer (say, Hindemith) with the composer filter.
    image

  2. With the layer toggle, deselect one of the layers (say, the yellow lines for all intermediary locations).
    image

  3. Clear the composer filter. Markers and lines for all composers reappear, except for the lines connecting intermediary locations, since that layer is still deselected.
    image

  4. Select the layer that was previously switched off. Note that only the lines for Hindemith is showing, although the composer filter has already been cleared in step 3.
    image

  5. To make the lines for other composers also show, the composer filter has to be cleared once again, although the filter is not currently active.
    image

Work counter on Timeline map

It would be good to have a function that would show the number of works included in a selected range. For example, if I select 1914-1918 as a range with the slider, it would be good to see how many works were premiered in this range.

Organize the GitHub repository

There are some things that can improve the organization of the repository.

  • If you click on the bulleted links on the main README, they goes to documentation not the map. Maybe use two links - one for map and the other documentation, for example "Composer Map [README]
  • List the repository contents in tree format in main README. This should be the last task completed.
  • The composers map has an extra directory level, which makes the URL string unnecessarily long and unpredictable. I would suggest moving the composers-map folder's content up one directory level, and changing any affected relative paths in the map document.
  • Delete the file timeline/timeline-boilerplate.html (Moved into README.md)
  • Rename the file timeline/timeline-1.html to timeline/timeline.html (now timeline/index.html).
  • Might be good to package up the two files used for the timeline graph into one folder.

Data potentially mis-mapped

On the corpus map, there is an instance where the composer Anton Webern – data for him might not be correct as his death is listed as Austria, but is located in New Hampshire.

I would suggest looking to see if the source of the data is incorrect first, and then correcting it there if it is. If the source data is correct, then it was likely something in the transformation to GeoJSON. If that's the case please loop in @bel28kent so that he can log this issue so that its clear in the documentation if someone wanted to reproduce with the correct data

Swap in Stamen Toner Lite basemap for composer map

Stamen Designs offers their base map tile sets for use free-of-charge, and Toner-Lite is a great option for a background: http://maps.stamen.com/toner-lite/#12/37.7706/-122.3782.

To use this base map in the composers map, we'll need to swap out the existing Google Maps layer starting on line 71 of /composers/composers-birth-death/index.html. The replacement variable should align with directions here: http://maps.stamen.com/#toner-lite/12/37.7706/-122.3782

The variable being used for the base map looks to be auto-generated from the QGIS2Web plugin and references the style of the layer (layer_GoogleRoad_0). After getting Toner-lite to work with the old variable, create a new variable like toner-lite-layer or something similar to indicate that's the layer.

finalize timeline map appearance

  • make timestamp remain during off click
  • move graph so it doesnt cover data
  • put date above slider
  • include same popup content as composer map

Decide on basemap to use for all three maps

A base map should be used as a consistent backdrop for the data. There are several Leaflet base map providers, but some include a payment or API requirements. This list will give you some hints (inside the JS code) for ones that are free or not: https://leaflet-extras.github.io/leaflet-providers/preview/.

Please decide on one that might best fit this project and add the information below. Once one is decided on, we can swap them in for each map.

  • Corpus map
  • Composers map
  • Timeline map

Metadata fields

Add metadata fields included in the original carto maps to READ.ME document.

Create layer for composers intermediary locations

Some composers have lived in or visited some important places in their lifetime that wasn't a birth and death. A button in the white space that replaces the straight line with a multi line going through multiple locations. Also adds new point features for each of the locations.

Map Information Text Box

There should be a legend on the composer map that explains the colors of the dots: green is birth location and orange is death location.

Also there is whitespace on the right of the map, this would be a good location to give similar and/or extra information, such that the line between the green/orange dots links the birth/death locations.

An interesting thing to do in the future is to add blue does showing major locations where the composer worked. These would be linked with lines in chronological order.

Formatting pop-ups for Composer maps

Aspects that require reformatting:

  1. Add heading to show whether the clicked point is a birth or a death place
  2. Format headings and subheadings
  3. Reorder subheadings (composer first)
  4. Add subheading for coordinates (if we decide to keep them)
  5. Change colour of dots and lines (TBC?)

timeslider handle labels

dynamic labels on both ends corresponding to property:date

premiere_date is a string so convert to date (or number)

Metadata validation

all premiere information needs to be validated, including premiere date, location, people involved.

render-events-in-chronological-order

The timeSlider function is successfully rendering events one by one in response to a user interacting with the graphic time slider. And the labels dynamically displayed correspond to the first_public_performance timeAttribute option. However, this property of the corpus.js is a string (the timeAttribute option of the timeSlider function seems only able to take a string input). This means the function is not evaluating a number and therefore is rendering events not chronologically, as desired, but in the linear order the dataset has the events stored in. @craigsapp I'd appreciate if you could play around on this branch and see what can be done.

User notes in composer map whitespace

It would be good to include a note on the composer map that the locations don't represent addresses within city, just the centroid (?) of the city.

New data for corpus and timeline maps

The data for the corpus and timeline maps will need to be updated with the correct features. Once this data is produced, please convert the table into GeoJSON and send to @lilydemet and @Xilin-Wan. The current popup properties being used in the Corpus map are:

<b>Composer name: </b>"+feature.properties.composer_s_name+
          "<br><b>Work Title: </b>"+feature.properties.work_title+
          "<br><b>Genre: </b>"+feature.properties.genre+
          "<br><b>Sub Genre: </b>"+feature.properties.sub_genre+
          "<br><b>Composition year: </b>"+feature.properties.composition_year+
          "<br><b>Premiere Date: </b>"+feature.properties.premiere_date+
          "<br><b>Publication Year: </b>"+feature.properties.first_publication_year+
          "<br><b>Premiere Location: </b>"+feature.properties.venue_or_city+
          "<br><b>Performing Ensemble: </b>"+feature.properties.ensemble+
          "<br><b>Conductor: </b>"+feature.properties.conductor+
          "<br><b>soloists: </b>"+feature.properties.soloists+
          "<br><b>Corpus example: </b>"+feature.properties.example_no_2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.